機器學習中乙個重要的話題便是模型的泛化能力,泛化能力強的模型才是好模型,對於訓練好的模型,若在訓練集表現差,在測試集表現同樣會很差,這可能是欠擬合導致。
欠擬合是指模型擬合程度不高,資料距離擬合曲線較遠,或指模型沒有很好地捕捉到資料特徵,不能夠很好地擬合資料。
而過擬合則是模型能夠非常好的擬合訓練資料,但在新的資料集上的表現非常糟糕,說明模型過於複雜,泛化能力差。
因此,模型的巡禮過程可以分為三個階段去理解過擬合、欠擬合與偏差和方差之間的關係。
設 etrain 為訓練集的誤差, ecv 為交叉驗證集誤差,則有:
即高偏差對應著欠擬合,此時 etrain 也較大,可以理解為對任何新資料(不論其是否屬於訓練集),都有著較大的 ecv 誤差,偏離真實**較大。而高方差對應著過擬合,此時 etrain 很小,對於新資料來說,如果其屬性與訓練集類似,它的 ecv 就會小些,如果屬性與訓練集不同, ecv 就會很大,因此有乙個比較大的波動,因此說是高方差。
判斷方法 —— 學習曲線:就是通過畫出不同訓練集大小時訓練集和交叉驗證的準確率,可以看到模型在新資料上的表現,進而來判斷模型是否方差偏高或偏差過高,以及增大訓練集是否可以減小過擬合。學習曲線的橫軸為訓練樣本的數量,縱軸為準確率。
當訓練集和測試集的誤差收斂但卻很高時,為高偏差。 左上角的偏差很高,訓練集和驗證集的準確率都很低,很可能是欠擬合。 我們可以增加模型引數,比如,構建更多的特徵,減小正則項。 此時通過增加資料量是不起作用的。
當訓練集和測試集的誤差之間有大的差距時,為高方差。 當訓練集的準確率比其他獨立資料集上的測試結果的準確率要高時,一般都是過擬合。 右上角方差很高,訓練集和驗證集的準確率相差太多,應該是過擬合。 我們可以增大訓練集,降低模型複雜度,增大正則項,或者通過特徵選擇減少特徵數。
理想情況是是找到偏差和方差都很小的情況,即收斂且誤差較小。
正則化:指的是在目標函式後面新增乙個正則化項,一般有 l1 正則化與 l2 正則化。l1 正則是基於 l1 範數,即在目標函式後面加上引數的 l1 範數和項,即引數絕對值和。l2 正則是基於 l2 範數,即在目標函式後面加上引數的 l2 範數和項,即引數的平方。
資料集擴增:通俗得講,資料機擴增即需要得到更多的符合要求的資料,即和已有的資料是獨立同分布的,或者近似獨立同分布的。一般有以下方法:
dropout:而在神經網路中,有一種方法是通過修改神經網路本身結構來實現的,其名為 dropout。
該方法是在對網路進行訓練時用一種技巧(trick)。在訓練開始時,隨機得刪除一些(可以設定為一半,也可以為 1/3,1/4 等)隱藏層神經元,即認為這些神經元不存在,同時保持輸入層與輸出層神經元的個數不變。然後按照 bp 學習演算法對神經網路中的引數進行學習更新,下一次迭代中,同樣隨機刪除一些神經元,與上次不一樣,做隨機選擇。這樣一直進行下去,直至訓練結束。
過擬合和欠擬合
嘗試不同的模型 既然有一種可靠的方法來測量模型精度,那麼可以嘗試使用其他模型,並檢視哪種模型可以提供最佳 但是對模型有什麼選擇?可以在scikit learn的文件中看到決策樹模型有很多選項 比您長期想要或需要的更多 最重要的選項決定了樹的深度。回想一下這個微課程的第一課,樹的深度是衡量它在進行 之...
欠擬合和過擬合
解決欠擬合問題,可以從以下三個方面入手 1 增加特徵項 在大多數情況下出現過擬合是因為沒有準確把握資料的主要特徵,可以嘗試在模型中加入更多的和原始資料有重要相關性的特徵來尋連搭建的模型,著牙嗎嗯得到的模型可能會有更好的泛化能力。2 構造複雜的多項式 3 減少正則化引數 解決過擬合問題 1 增大訓練的...
過擬合和欠擬合
乙個假設在訓練資料上,能夠獲得比其他假設更好的擬合,但是在訓練資料外的資料集上卻不能很好的擬合資料,此事認為這個模型出現了過擬合現象 模型過於複雜 原因 原始特徵過多,存在一些嘈雜特徵,模型過於複雜是因為模型嘗試去兼顧各個測試資料點 解決辦法 乙個假設在訓練集上不能獲得更好的擬合,但是在訓練資料集以...