日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习-过拟合和欠拟合以及正则化处理

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习-过拟合和欠拟合以及正则化处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

? ? ? ?無論在機器學習還是深度學習建模中都可能會遇到兩種最常見問題,一種叫過擬合,另外一種叫欠擬合

? ? ? ??

? ? ? 上圖展示了不同線性回歸模型對訓練集樣本的擬合情況,可以發現,第一個模型是一條直線,不能很好的擬合訓練集,這就是欠擬合(UnderFitting)或者說模型是高偏差的(HighBias)。第三個模型是一個高階多項式,雖然對訓練集擬合的很好,但它的特征過多,如果沒有足夠的數據約束,就不會有良好的泛化能力(泛化能力是指一個模型應用到新樣本的能力,比如這里的新樣本是指沒有出現在訓練集的樣本),也就不能對新樣本做出正確的預測,這就是過度擬合(OverFitting)或者說模型是高方差的(HighVarience)。第二個則是一個理想的模型。

? ? ? ?在機器學習中,我們用訓練數據集去訓練一個模型,通常的做法是定義一個誤差函數,通過將這個誤差的最小化過程,來提高模型的性能。然而我們學習一個模型的目的是為了解決訓練數據集這個領域中的一般化問題,單純地將訓練數據集的損失最小化,并不能保證在解決更一般的問題時模型仍然是最優,甚至不能保證模型是可用的。這個訓練數據集的損失與一般化的數據集的損失之間的差異就叫做泛化誤差(Generalization Error)。

? ? ? ? ? ??

而泛化誤差可以分解為偏差(Biase)方差(Variance)噪聲(Noise),他們之間的關系如下圖所示:

? ? ? ? ? ? ? ? ? ? ??

? ? ? ?假設紅色的靶心區域是學習算法完美的正確預測值,藍色點為訓練數據集所訓練出的模型對樣本的預測值,當我們從靶心逐漸往外移動時,預測效果逐漸變差。從上面的圖片中很容易可以看到,左邊一列的藍色點比較集中,右邊一列的藍色點比較分散,它們描述的是方差的兩種情況。比較集中的屬于方差比較小,比較分散的屬于方差比較大的情況。我們再從藍色點與紅色靶心區域的位置關系來看,靠近紅色靶心的屬于偏差較小的情況,遠離靶心的屬于偏差較大的情況。

?

假設我們正在做一個分類器,分別在訓練集和驗證集上測試,以下為四種可能的情況:

? ? ? ? ? ?

可見①、④兩種情況的訓練集誤差都很小,接近optimal error,這種就稱為low bias。說明訓練的很到位了。
相反②、③兩者的訓練集誤差很大,這就稱為high bias。因此我們知道,bias就是衡量訓練集和我們的最小誤差的差距。

再來看看variance是怎么判斷。①情況下,驗證集相比訓練集誤差上升了很多,這就是high variance。而②呢,雖然它的驗證集誤差更大,但是相比它的訓練集誤差,基本沒太大變化,因此它不能叫low variance。所以,說白了,variance是指你的驗證集和你訓練集的效果的差別,而不是某個絕對的值。

? ? ? ?

過擬合的根本原因:特征維度過多,模型假設過于復雜,參數過多,訓練數據過少,噪聲過多,導致擬合的函數完美的預測訓練集,但對新數據的測試集預測結果差。 過度的擬合了訓練數據,而沒有考慮到泛化能力。因此需要減少特征維度,或者正則化降低參數值。

?

欠擬合的根本原因:特征維度過少,模型過于簡單,導致擬合的函數無法滿足訓練集,誤差較大;?因此需要增加特征維度,增加訓練數據。

避免過擬合的方法:

  • 交叉驗證:即重復使用數據,把得到的樣本數據進行切分,組合為不同的訓練集和測試集,用訓練集訓練模型,用測試集來評估模型預測的好壞。由于在此基礎上可以得到多組不同的訓練集和測試集,某次訓練集中的某樣本在下次可能成為測試集中的樣本,即所謂“交叉”。當數據量不是很充足的時候,會使用交叉驗證。

    在訓練過程中,我們通經常使用它來確定一些超參數(比方,依據validation data上的accuracy來確定early stopping的epoch大小、依據validation data確定learning rate等等。

  • 正則化:(L1和L2)通過改動代價函數實現。

  • 數據增強:增加訓練數據樣本。

  • Dropout:通過改動神經網絡本身來實現。例如,訓練前,隨機刪除一部分隱層單元,保持輸入輸出層不變,依照BP算法更新上圖神經網絡中的權值。

  • early stopping:即提前終止。Early stopping是一種以迭代次數截斷的方法來防止過擬合。

  • Bagging用不同的模型擬合不同部分的訓練集;Boosting只使用簡單的神經網絡;

  • 數據清洗:將錯誤的label糾正或者刪除錯誤的數據。

  • 欠擬合的解決方法:

  • 添加其他特征項:添加特征的重要手段是“組合”,“泛化”,“相關性”;另外,特征添加的首選項是“上下文特征”,“平臺特征”。

  • 添加多項式特征:比較常用,例如,在線性模型中通過添加二次項或者三次項使模型的泛化能力更強。

  • 減少正則化參數:特征化的目的是用來防止過擬合的。

  • 目錄

    正則化法

    1. L1/L2正則化

    2. Dropout

    3. EarlyStopping


    正則化法

    ? ? ? ?過擬合產生的本質原因通常是因為參數比較大導致的,因為過擬合,就是擬合函數需要顧忌每一個點,當存在噪聲的時候,原本平滑的擬合曲線會變得波動很大。在某些很小的區間里,函數值的變化很劇烈,這就意味著函數在某些小區間里的導數值(絕對值)非常大,由于自變量值可大可小,所以只有系數足夠大,才能保證導數值很大。通過添加正則項,假設某個參數比較大,目標函數加上正則項后,也就會變大,因此該參數就不是最優解了。

    我們使用正則化,為了防止過擬合, 進而增強泛化能力,正則化可按策略分為三類:

    經驗正則化:通過工程上的技巧來實現更低的泛化誤差方法,比如:提前終止法、模型集成、Dropout等;

    參數正則化:直接提供正則化約束,比如:L1/L2正則化法等;

    隱式正則化:不直接提供約束,比如:數據有關的操作,包括歸一化、數據增強、擾亂標簽等;

    ?

    1. L1/L2正則化

    ? ? ? ?首先介紹一下范數的定義,機器學習、深度學習等計算機領域內用的比較多的就是迭代過程中收斂性質的判斷,一般迭代前后步驟的差值稱為范數,用范數表示其大小。在數學上,范數包括向量范數和矩陣范數,向量范數表征向量空間中向量的大小,矩陣范數表征矩陣引起變化的大小。一種非嚴密的解釋就是,對應向量范數,向量空間中的向量都是有大小的,這個大小如何度量,就是用范數來度量的,不同的范數都可以來度量這個大小。

    L-P范數,與閔可夫斯基距離的定義一樣,L-P范數不是一個范數,而是一組范數,其定義如下:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    其中 “ || ” 這個符號叫做范數,它事實上是由線性賦范空間到非負實數的映射,在線性賦范空間中,它可以表示空間中的點與原點間的距離,兩點間的距離也是用兩點之差的范數來表示的,范數所滿足的條件有 ||x||>=0,且 ||x||=0當且僅當 x=0。

    根據 P 的變化,范數也有著不同的變化,一個經典的有關P范數的變化圖如下:

    ? ? ? ? ? ? ? ? ??

    上圖表示了p從無窮到0變化時,三維空間中到原點的距離(范數)為1的點構成的圖形的變化情況,以常見的L-2范數(p=2)為例,此時的范數也即歐氏距離,空間中到原點的歐氏距離為1的點構成了一個球面。

    L-0范數,當P=0時,也就是L0范數,由上面可知,L0范數并不是一個真正的范數,它主要被用來度量向量中非零元素的個數。

    L-1范數,表示向量中各個元素絕對值之和,L1范數有很多的名字,例如我們熟悉的曼哈頓距離、最小絕對誤差,或者稱為Lasso回歸?:

    ? ? ? ? ? ? ? ? ? ? ? ? ?

    由于L1范數的天然性質,對L1優化的解是一個稀疏解,因此L1范數也被叫做稀疏規則算子。通過L1可以實現特征的稀疏,去掉一些沒有信息的特征,例如在對用戶的電影愛好做分類的時候,用戶有100個特征,可能只有十幾個特征是對分類有用的,大部分特征如身高體重等可能都是無用的,利用L1范數就可以過濾掉。

    ? ? ? ?稀疏矩陣指的是很多元素為0,只有少數元素是非零值的矩陣,即得到的線性回歸模型的大部分系數都是0. 通常機器學習中特征數量很多,例如文本處理時,如果將一個詞組(term)作為一個特征,那么特征數量會達到上萬個(bigram)。在預測或分類時,那么多特征顯然難以選擇,但是如果代入這些特征得到的模型是一個稀疏模型,表示只有少數特征對這個模型有貢獻,絕大部分特征是沒有貢獻的,或者貢獻微小(因為它們前面的系數是0或者是很小的值,即使去掉對模型也沒有什么影響),此時我們就可以只關注系數是非零值的特征。這就是稀疏模型與特征選擇的關系。
    ?

    L-2范數,即向量元素絕對值的平方和再開方,我們用的最多的度量距離歐氏距離就是一種L2范數,或者稱為嶺回歸:

    ? ? ? ? ? ? ? ? ? ? ??? ?

    假設我們需要優化的目標函數為?J(w,b)?函數,在目標函數后面添加一個系數的“懲罰項”是正則化的常用方式,為了防止系數過大從而讓模型變得復雜。在加了正則化項之后的目標函數為:

    ? ? ? ? ? ? ? ? ? ? ?
    上面公式中,λ/2m是一個常數,m為樣本個數,λ是一個超參數,用于控制正則化程度,L1正則化通過讓原目標函數加上了所有特征系數絕對值的和來實現正則化,即在最后加上L1范數;而L2正則化通過讓原目標函數加上了所有特征系數的平方和來實現正則化,即在最后加上L2范數。兩者都是通過加上一個和項來限制參數大小,卻有不同的效果:L1正則化更適用于特征選擇,而L2正則化更適用于防止模型過擬合

    ? ? ? ?那為什么增加的一項,可以使θ的值減小呢?因為如果我們令??𝜆?? 的值很大的話,為了使Cost Function?盡可能的小,所有的θ 的值(不包括θ0)都會在一定程度上減小。 但若𝜆?的值太大了,那么θ?的值(不包括θ0)都會趨近于0,這樣我們所得到的只能是一條平行于x軸的直線。 所以對于正則化,我們要取一個合理的??𝜆??的值,這樣才能更好的應用正則化。 回顧一下代價函數,為了使用正則化,讓我們把這些概念應用到到線性回歸和邏輯回歸中去,那么我們就可以讓他們避免過度擬合了。

    上面的回歸問題中如果我們的模型是:?

    ? ? ? ? ? ? ? ? ??

    我們可以從之前的事例中看出,正是那些高次項導致了過擬合的產生,所以如果我們能讓這些高次項的系數接近于0的話,我們就能很好的擬合了。所以我們要做的就是在一定程度上減小這些參數θ 的值,這就是正則化的基本方法。我們決定要減少θ3和θ4的大小,我們要做的便是修改代價函數,在其中θ3和θ4設置一點懲罰。這樣做的話,我們在嘗試最小化代價時也需要將這個懲罰納入考慮中,并最終導致選擇較小一些的θ3和θ4。 修改后的代價函數如下:

    ? ? ? ? ? ?

    通過這樣的代價函數選擇出的θ3和θ4?對預測結果的影響就比之前要小許多。假如我們有非常多的特征,我們并不知道其中哪些特征我們要懲罰,我們將對所有的特征進行懲罰,并且讓代價函數最優化的軟件來選擇這些懲罰的程度。這樣的結果是得到了一個較為簡單的能防止過擬合問題的假設:

    ? ? ? ? ? ? ? ? ?

    其中𝜆稱為正則化參數(Regularization Parameter)。 注:根據慣例,我們不對𝜃0?? 進行懲罰。

    讓我們從梯度下降的角度入手,探究兩者的區別,假設數據只有兩個特征即W1,W2,考慮L1正則化的目標函數:

    ? ? ? ? ? ? ? ? ? ??

    在每次更新W1時:

    ? ? ? ? ? ? ? ? ?

    若W1為正數,則每次更新會減去一個常數;若W1為負數,則每次更新會加上一個常數,所以很容易產生特征的系數為 0 的情況,特征系數為 0 表示該特征不會對結果有任何影響,因此L1正則化會讓特征變得稀疏,起到特征選擇的作用。

    現考慮L2正則化的目標函數:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ?

    在每次更新W1時:

    ? ? ? ? ? ? ? ? ? ? ? ? ?

    從上式可以看出每次更新時,會對特征系數進行一個比例的縮放而不是像L1?正則化減去一個固定值,這會讓系數趨向變小而不會變為 0,因此L2正則化會讓模型變得更簡單,防止過擬合,而不會起到特征選擇的作用。
    ?

    2. Dropout

    Dropout 是一種計算方便但功能強大的正則化方法,適用于神經網絡。他的基本步驟是在每一次的迭代中,隨機刪除一部分節點,只訓練剩下的節點。每次迭代都會隨機刪除,每次迭代刪除的節點也都不一樣,相當于每次迭代訓練的都是不一樣的網絡,通過這樣的方式降低節點之間的關聯性以及模型的復雜度,從而達到正則化的效果。這點上有點類似 bagging,但是遠比 bagging 來的簡單,直觀理解:

    說dropout簡單是因為你只需要設置一個超參數 keep_prob,這個參數的意義是每層節點隨機保留的比例,比如將 keep_prob 設置為 0.7,那么就會隨機30%的節點消失,消失這個動作其實很簡單,只是將這一層的參數矩陣與根據 keep_prob 生成的 {0, 1} 矩陣做 逐點乘積,當然前向傳播與反向傳播都需要做以上的操作。

    dropout的缺點在于,需要將訓練集分為不同子集輸入每一次的迭代,這就需要較大的訓練集,所以在訓練集較小的情況下,dropout的效果可能并不好。我們上面也說過,增大數據集是最好的正則化方式,所以在增大數據集的情況下,使用 dropout 需要使用的計算代價可能會比他帶來正則化效果更高,這需要我們在實際使用場景中做取舍。

    ?

    3. EarlyStopping

    Early stopping的使用可以通過在模型訓練整個過程中截取保存結果最優的參數模型,防止過擬合。,提前終止可能是最簡單的正則化方式,他適用于模型的表達能力很強的時候。這種情況下,一般訓練誤差會隨著訓練次數的增多逐漸下降,而測試誤差則會先下降而后再次上升。我們需要做的就是在測試誤差最低的點停止訓練即可。從圖中可以看出,訓練集精度一直在提升,但是test set的精度在上升后下降。若是在early stopping的位置保存模型,則不必反復訓練模型,即可找到最優解。

    ? ? ? ? ? ? ? ?

    ?

    ?

    參考鏈接:https://www.jianshu.com/p/569efedf6985
    參考鏈接:https://www.jianshu.com/p/69b962945b2a
    參考鏈接:https://www.jianshu.com/p/69b962945b2a
    參考鏈接:https://blog.csdn.net/qq_42379006/article/details/81044885
    參考鏈接:https://www.cnblogs.com/weststar/p/11662760.html

    總結

    以上是生活随笔為你收集整理的机器学习-过拟合和欠拟合以及正则化处理的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。