書名: 機器學(xué)習(xí)實戰(zhàn):基于Scikit-Learn、Keras和TensorFlow(原書第3版)作者名: (法)奧雷利安·杰龍本章字?jǐn)?shù): 1687字更新時間: 2024-09-11 17:33:04
2.6 選擇和訓(xùn)練模型
最后!你構(gòu)建了問題、獲取了數(shù)據(jù)并對其進行了探索、對訓(xùn)練集和測試集進行了采樣,還編寫了預(yù)處理流水線來自動清洗數(shù)據(jù)并為機器學(xué)習(xí)算法準(zhǔn)備了數(shù)據(jù)。現(xiàn)在是時候選擇和訓(xùn)練機器學(xué)習(xí)模型了。
2.6.1 在訓(xùn)練集上訓(xùn)練和評估
好消息是,多虧了之前的所有這些步驟,現(xiàn)在一切都變得很簡單了!你決定開始訓(xùn)練一個非常基本的線性回歸模型:

完畢!你現(xiàn)在有了一個有效的線性回歸模型。你在訓(xùn)練集上進行嘗試,查看前五個預(yù)測值并將它們與標(biāo)簽進行比較:

好吧,它能正常工作,但并非總是如此。第一個預(yù)測相差甚遠(yuǎn)(超過200 000美元!),而其他預(yù)測則更好:后兩個相差約25%,最后兩個相差不到10%。請記住,你選擇使用了RMSE作為性能度量,所以你想使用Scikit-Learn的mean_squared_error()函數(shù)測量此回歸模型在整個訓(xùn)練集上的RMSE,將squared參數(shù)設(shè)置為False:

這總比沒有好,但顯然不是一個很好的分?jǐn)?shù):大多數(shù)地區(qū)的median_housing_values在120 000~265 000美元之間,因此68 628美元的典型預(yù)測誤差確實不是很令人滿意。這是模型欠擬合訓(xùn)練數(shù)據(jù)的樣例。發(fā)生這種情況時,可能意味著這些特征沒有提供足夠的信息來做出良好的預(yù)測,或者模型不夠強大。正如我們在第1章中看到的,解決欠擬合的主要方法是選擇更強大的模型,為訓(xùn)練算法提供更好的特征,或者減少對模型的約束。該模型未正則化,這排除了最后一個選項。你可以嘗試添加更多特征,但首先你想嘗試一個更復(fù)雜的模型,看看它是如何工作的。
你決定嘗試DecisionTreeRegressor,因為這是一個相當(dāng)強大的模型,能夠在數(shù)據(jù)中發(fā)現(xiàn)復(fù)雜的非線性關(guān)系(決策樹在第6章中有更詳細(xì)的介紹):

現(xiàn)在模型已經(jīng)訓(xùn)練完畢,你可以在訓(xùn)練集上對其進行評估:

等等,什么!一點錯誤都沒有?這個模型真的可以完美無缺嗎?當(dāng)然,更有可能的是模型對數(shù)據(jù)嚴(yán)重過擬合了。你怎么能確定?正如你之前看到的,在準(zhǔn)備好啟動你有信心的模型之前,不要接觸測試集,因此你需要使用一部分訓(xùn)練集進行訓(xùn)練,另一部分用于模型驗證。
2.6.2 使用交叉驗證進行更好的評估
評估決策樹模型的一種方法是使用train_test_split()函數(shù)將訓(xùn)練集拆分為較小的訓(xùn)練集和驗證集,然后針對較小的訓(xùn)練集訓(xùn)練你的模型并針對驗證集對其進行評估。這需要一些努力,但不會太困難,而且效果會很好。
一個很好的替代方法是使用Scikit-Learn的k折交叉驗證功能。以下代碼將訓(xùn)練集隨機拆分為10個不重疊的子集,稱為折疊,然后對決策樹模型進行10次訓(xùn)練和評估,每次選擇不同的折疊進行評估,并使用其他9次折疊進行訓(xùn)練。結(jié)果是一個包含10個評估分?jǐn)?shù)的數(shù)組:

Scikit-Learn的交叉驗證功能期望效用函數(shù)(越大越好)而不是代價函數(shù)(越低越好),因此評分函數(shù)實際上與RMSE相反。這是一個負(fù)值,因此你需要切換輸出的符號來獲得RMSE分?jǐn)?shù)。
讓我們看看結(jié)果:

現(xiàn)在決策樹看起來不像之前那么好了。事實上,它的表現(xiàn)似乎與線性回歸模型幾乎一樣差!請注意,交叉驗證不僅可以讓你獲得模型性能的估計值,還可以測量該估計值的精確程度(即標(biāo)準(zhǔn)差)。決策樹的RMSE約為66 868,標(biāo)準(zhǔn)差約為2061。如果你只使用一個驗證集,你就不會獲得此信息。但是交叉驗證是以多次訓(xùn)練模型為代價的,所以它并不總是可行的。
如果你為線性回歸模型計算相同的指標(biāo),你會發(fā)現(xiàn)平均RMSE為69 858,標(biāo)準(zhǔn)差為4182。所以決策樹模型的表現(xiàn)似乎比線性模型稍微好一點,但由于嚴(yán)重的過擬合,兩種模型差異很小。我們知道存在過擬合問題,因為訓(xùn)練誤差很低(實際上為零)而驗證誤差很高。
現(xiàn)在讓我們嘗試最后一個模型:RandomForestRegressor。正如你將在第7章中看到的那樣,隨機森林的工作原理是在特征的隨機子集上訓(xùn)練許多決策樹,然后對它們的預(yù)測進行平均。由許多其他模型組成的此類模型稱為集成:它們能夠提高基礎(chǔ)模型(在本例中為決策樹)的性能。代碼與之前的代碼大致相同:

讓我們看看分?jǐn)?shù):

哇,這好多了:隨機森林看起來非常適合這項任務(wù)!但是,如果你訓(xùn)練RandomForest并在訓(xùn)練集上測量RMSE,你會發(fā)現(xiàn)RMSE大約為17 474:這要低得多,這意味著仍然存在相當(dāng)多的過擬合。可能的解決方案是簡化模型、對其進行約束(即對其進行正則化),或者獲取更多的訓(xùn)練數(shù)據(jù)。然而,在你更深入地研究隨機森林之前,你應(yīng)該嘗試來自不同類別機器學(xué)習(xí)算法的許多其他模型(例如,幾個具有不同內(nèi)核的支持向量機,可能還有一個神經(jīng)網(wǎng)絡(luò)),而不要花太多時間調(diào)整超參數(shù)。目標(biāo)是選擇一些(2~5個)有前途的模型。
- 玩轉(zhuǎn)ChatGPT:秒變AI文案創(chuàng)作高手
- DeepSeek實操:職場效率倍增的秘籍
- 深度學(xué)習(xí)計算機視覺實戰(zhàn)
- 計算機視覺中的深度學(xué)習(xí)
- 不會被機器替代的人:智能時代的生存策略
- 深度思考:人工智能的終點與人類創(chuàng)造力的起點
- DeepSeek實戰(zhàn):操作攻略與商業(yè)應(yīng)用
- 妙用DeepSeek:創(chuàng)意落地速通指南
- AIGC輔助軟件開發(fā):ChatGPT 10倍效率編程實戰(zhàn)
- 人工智能導(dǎo)論
- AI幫你贏:人人都能用的AI方法論
- 智能體時代
- 人工智能技術(shù)基礎(chǔ)
- 人工智能數(shù)學(xué)基礎(chǔ)
- MXNet深度學(xué)習(xí)實戰(zhàn)