分類是機器學習最常見的應用之一。 分類技術(shù)可預測離散的響應 — 例如,電子郵件是不是垃圾郵件,腫瘤是惡性還是良性的。 分類模型可將輸入數(shù)據(jù)劃分成不同類別。 典型的應用包括醫(yī)學成像、語音識別和信用評估。
選擇最合適的分類模型,診斷和糾正過擬合是機器學習的基本技能。 那什么是過擬合? 我們又可以如何防止和避免過擬合呢?
什么是過擬合?
過擬合指當模型與訓練數(shù)據(jù)過于接近貼合,以至于不知道如何對新數(shù)據(jù)做出響應時發(fā)生的一種機器學習行為。 過擬合的原因可能是:
機器學習模型太過復雜; 它記憶了訓練數(shù)據(jù)中非常微妙的的模式,而這些模式無法很好地泛化。
訓練數(shù)據(jù)的規(guī)模對于模型復雜度來說太小,和/或者包含大量不相關(guān)的信息。
您可以通過管理模型復雜度和改進訓練數(shù)據(jù)集來防止過擬合。
過擬合與欠擬合
欠擬合與過擬合正相反。 欠擬合指模型不能很好地與訓練數(shù)據(jù)貼合,也無法很好地泛化到新數(shù)據(jù)。 在分類模型和回歸模型中都可能出現(xiàn)過擬合和欠擬合。 下圖說明了過擬合的模型的分類決策邊界和回歸線如何過于緊密地跟隨訓練數(shù)據(jù),而欠擬合的模型的分類決策邊界和回歸線又如何不夠緊密地跟隨訓練數(shù)據(jù)。
與正確擬合的模型相比,過擬合的分類模型和回歸模型對訓練數(shù)據(jù)的記憶太好。
當只針對訓練數(shù)據(jù)查看機器學習模型的計算誤差時,過擬合比欠擬合更難檢測。 因此,為了避免過擬合,在對測試數(shù)據(jù)使用機器學習模型之前對其進行驗證就很重要。
針對訓練數(shù)據(jù),過擬合模型的計算誤差低,而測試數(shù)據(jù)的誤差高。
將 MATLAB 與 Statistics and Machine Learning Toolbox 和 Deep Learning Toolbox 結(jié)合使用,可以防止機器學習模型和深度學習模型的過擬合。 MATLAB 提供了專為避免模型過擬合而設(shè)計的函數(shù)和方法。 您可以在訓練或調(diào)整模型時使用這些工具來防止過擬合。
如何通過降低模型復雜度來避免過擬合
使用 MATLAB,您可以從頭開始訓練機器學習模型和深度學習模型(如 CNN),或利用預訓練的深度學習模型。為了防止過擬合,請執(zhí)行模型驗證,以確保為數(shù)據(jù)選擇具有合適復雜程度的模型,或使用正則化來降低模型的復雜度。
模型驗證
當對訓練數(shù)據(jù)進行計算時,過擬合模型的誤差較低。因此,在引入新數(shù)據(jù)之前,最好在單獨的數(shù)據(jù)集(即驗證數(shù)據(jù)集)上驗證您的模型。對于 MATLAB 機器學習模型,您可以使用 cvpartition 函數(shù)將數(shù)據(jù)集隨機劃分為訓練集和驗證集。對于深度學習模型,您可以在訓練過程中監(jiān)控驗證準確度。通過模型選擇和超參數(shù)調(diào)整來提高經(jīng)過正確驗證的模型準確度度量應該能夠提高模型處理新數(shù)據(jù)的準確度。
交叉驗證是一種模型評估方法,用于評估機器學習算法對新數(shù)據(jù)集執(zhí)行預測的性能。交叉驗證可以幫助您避免選擇過于復雜而導致過擬合的算法。使用 crossval 函數(shù),通過使用常見的交叉驗證方法來計算機器學習模型的交叉驗證誤差估計值。這些常見方法包括如 k 折法(將數(shù)據(jù)劃分為 k 個隨機選擇的大小大致相等的子集)和留出法(將數(shù)據(jù)按照指定比率隨機劃分為兩個子集)等。
正則化
正則化是一種用于防止機器學習模型中的統(tǒng)計過擬合的方法。正則化算法通常通過對復雜度或粗糙度應用罰分來實現(xiàn)。通過向模型中引入更多信息,正則化算法可以使模型更加簡約和準確,從而處理多重共線性和冗余預測變量。
對于機器學習,您可以在三種流行的正則化方法之間進行選擇:lasso(L1 范數(shù))、脊(L2 范數(shù))和彈性網(wǎng),以用于幾種類型的線性機器學習模型。對于深度學習,您可以在指定的訓練選項中增大 L2 正則化因子,或在您的網(wǎng)絡(luò)中使用丟棄層來避免過擬合。
示例和操作方法
正則化
深度學習提示和竅門
如何通過增強訓練數(shù)據(jù)集來避免過擬合
交叉驗證和正則化通過管理模型復雜度來防止過擬合。 另一種方法是改進數(shù)據(jù)集。 深度學習模型比其他機器學習模型更需要大量的數(shù)據(jù)來避免過擬合。
數(shù)據(jù)增強
當數(shù)據(jù)可用性受限時,可使用數(shù)據(jù)增強方法來向數(shù)據(jù)集添加現(xiàn)有數(shù)據(jù)的隨機版本從而人為擴展訓練數(shù)據(jù)集的數(shù)據(jù)點。 使用 MATLAB,您可以增強圖像、音頻和其他類型的數(shù)據(jù)。 例如,通過隨機化現(xiàn)有圖像的縮放比例和旋轉(zhuǎn)來增強圖像數(shù)據(jù)。
數(shù)據(jù)生成
合成數(shù)據(jù)生成是擴展數(shù)據(jù)集的另一種方法。 使用 MATLAB,您可以使用生成對抗網(wǎng)絡(luò) (GAN) 或數(shù)字孿生(通過仿真生成數(shù)據(jù))來生成合成數(shù)據(jù)。
數(shù)據(jù)清洗
數(shù)據(jù)噪聲會導致過擬合。 減少不想要的數(shù)據(jù)點的一種常見方法是使用 rmoutliers 函數(shù)從數(shù)據(jù)中刪除離群值。
示例和操作方法
使用增強的圖像訓練網(wǎng)絡(luò)
增強深度學習的點云數(shù)據(jù)
使用條款 GAN 生成的合成信號
設(shè)置參數(shù)并訓練卷積神經(jīng)網(wǎng)絡(luò)
審核編輯:湯梓紅
-
matlab
+關(guān)注
關(guān)注
185文章
2976瀏覽量
230483 -
語音識別
+關(guān)注
關(guān)注
38文章
1739瀏覽量
112661 -
模型
+關(guān)注
關(guān)注
1文章
3243瀏覽量
48842 -
機器學習
+關(guān)注
關(guān)注
66文章
8418瀏覽量
132646 -
數(shù)字孿生
+關(guān)注
關(guān)注
4文章
1325瀏覽量
12254
原文標題:機器學習挑戰(zhàn):如何避免機器學習模型過擬合?
文章出處:【微信號:MATLAB,微信公眾號:MATLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論