過擬合/欠擬合、偏差/方差

基本概念

  • 偏差:度量了學習算法的期望預測與真實結果的偏離程度, 即刻畫了學習算法本身的擬合能力
  • 方差:度量了同樣大小的訓練集的變動所導致的學習性能的變化, 即刻畫了數據擾動所造成的影響
  • 噪聲:描述了在當前任務上,任何學習算法所能達到的期望泛化誤差的下界,即刻畫了學習問題本身的難度
  • 經驗誤差:模型關於訓練樣本集的平均誤差,也稱經驗風險。
  • 結構風險:在經驗風險的基礎上加上表示模型複雜度的正則化項
  • 泛化誤差:模型在新樣本集(測試集)上的平均誤差。 泛化誤差=偏差+方差+噪聲
  • 欠擬合:模型的經驗誤差大,模型太簡單,在訓練的過程中基本沒學到有價值的內容。
  • 過擬合:模型學習了太多的訓練樣本的“個性”(經驗誤差小),但是對於未知的樣本泛化能力差(泛化誤差大)。

機器學習的泛化能力

機器學習是逼近目標函數Y=f(X)Y=f(X)的過程。

歸納性學習:從訓練數據學習目標函數的學習過程。
泛化:機器學習模型學習到的模型,在學習訓練時沒遇到的樣本上的表現。
擬合:逼近目標函數的遠近程度。通過描述函數和目標函數逼近的吻合程度來描述擬合的好壞。

機器學習模型的目標: 在問題領域內,從訓練數據到任意的數據上泛化性能良好。即對模型沒有見過的數據進行預測。

Q:訓練時,爲什麼考慮模型在預測新數據時的泛化性能?
S:因爲已知的數據是樣本,是帶有噪聲且不完全的。

 討論一個機器學習模型學習和泛化能力的好壞時,通常使用:過擬合和欠擬合。它們是機器學習表現不佳的兩大原因。

過擬合、欠擬合

概念

  • 欠擬合:模型沒有很好地捕捉到數據特徵,不能夠很好地擬合數據。
  • 過擬合:模型把訓練數據學習的太徹底,以至於把噪聲數據的特徵也學習到了,使得模型泛化能力差。在測試時,不能夠很好地識別(正確分類)新數據。

過擬合:在訓練數據上表現良好,在未知數據上表現差
欠擬合:在訓練數據和未知數據上表現都很差

在這裏插入圖片描述

模型複雜度\uarr的變化

  • 開始時,模型往往是欠擬合的,也因此纔有了優化的空間。
  • 過程:不斷的調整算法,使得模型的性能更好。
  • 優化到了一定程度,就需要解決過擬合問題了。
    在這裏插入圖片描述

與【偏差/方差】的關係

偏差

 預測輸出與真實標記的差別。
bias2(X)=(f(X)y)2bias^2(X)=(\overline f(X)-y)^2
 其中,f(X)\overline f(X)爲模型預測輸出的期望,yyXX的真實標籤。
 偏差度量了學習算法的期望預測與真實結果的偏離程度,即刻畫了學習算法本身的擬合能力。

bias2(X)=(ypredytrue)2bias^2(X)=(y_{pred}-y_{true})^2可以嗎?

方差

 一個特定訓練集訓練得到的函數,與所有訓練集得到的平均函數的差的平方,再取期望。
var(X)=E[(f(X;D)f(X))2]var(X)=E[(f(X;D)-\overline f(X))^2]
 其中f(X;D)f(X;D)爲在訓練集DD上學習得到的模型ffXX上的預測輸出。
 方差度量了同樣大小的訓練集的變動導致的學習性能的變化,即刻畫了數據擾動所造成的影響。表示了所有模型構建的預測函數,與真實函數的差別有多大。

方差和偏差的關係

在這裏插入圖片描述

  • 低偏差低方差:是我們所追求的效果,此時預測值正中靶心(最接近真實值),且比較集中(方差小)。
  • 低偏差高方差:預測值基本落在真實值周圍,但很分散,此時方差較大,說明模型的穩定性不夠好。
  • 高偏差低方差:預測值與真實值有較大距離,但此時值很集中,方差小;模型的穩定性較好,但預測準確率不高,處於“一如既往地預測不準”的狀態。
  • 高偏差高方差:是我們最不想看到的結果,此時模型不僅預測不準確,而且還不穩定,每次預測的值都差別比較大。

【過/欠擬合】與【方差/偏差】的關係

在這裏插入圖片描述

  • 欠擬合:訓練集的預測結果就不準,偏差較大。但對於不同訓練集,訓練得到的模型都差不多(都不太準,對訓練集不敏感),因此預測結果差別不大,方差小。因此,模型的訓練性能和測試性能都會比較低。模型複雜度可能低、訓練集數據量可能不夠。
  • 過擬合:模型完全學習訓練集的信息,訓練集偏差較小,測試集偏差較大。此外,模型對與訓練樣本分佈不同的測試集上表現不一,預測結果相差大,方差大。模型複雜度高、訓練集數量大。
    在這裏插入圖片描述

偏差-方差折衷

 一般來說,偏差與方差是衝突的,這稱之爲偏差-方差窘境(Bias-Variance Dilemma)。也就是說,讓偏差和方差都達到最小的模型是不存在的,模型只能在偏差和方差中取折衷。
在這裏插入圖片描述

  • 開始時:模型比較簡單且訓練不足,此時模型的擬合能力較弱(欠擬合),對訓練集的擾動也不敏感,偏差主導了模型的泛化錯誤率。
  • 隨着更多參數、更多訓練數據等加入到模型,模型的複雜度在提高,其擬合能力也在提升,偏差逐步下降,同時方差開始上升,但此時有可能獲得偏差、方差都比較低的模型,即偏差-方差折衷後的最優模型
  • 隨着模型的複雜度進一步提高,且訓練程度充足後(訓練數據自身的、非全局的特性很可能被模型學到),模型的擬合能力已經非常強,訓練數據的輕微擾動都會導致模型發生顯著變化,進而導致其預測能力時好時壞,但總體低於最優狀態,此時方差主導了模型的錯誤率,模型過擬合

Q:如何找到這個完美的臨界點(偏差和方差的平衡點)?
S:重採樣方法和驗證集方法。

【解決辦法】欠擬合

  • 增加特徵項:“組合”、“泛化”、“相關性”、“上下文特徵”、“平臺特徵”。
  • 添加多項式特徵項:如將線性模型通過添加二次項或者三次項使模型泛化能力更強。
  • 減小正則化參數:正則化的目的是防止過擬合。
  • 增加模型複雜度

【解決辦法】過擬合

  • 重新清洗數據:數據不純導致,導致過擬合。
  • 增加訓練樣本:訓練數據佔總數據的比例過小,導致過擬合。
  • 正則化/增大正則項係數:L0正則、L1正則、L2正則。
  • 重新做特徵工程
  • 增加訓練樣本數量
  • 降低模型複雜程度
  • 添加噪聲數據
  • 樹剪枝
  • Dropout:神經網絡訓練時,讓神經元以一定的概率不工作。
  • Early stoping
  • 減少迭代次數
  • 增大學習率

Q1:3個正則化方法。
S1:
(1)L0範數是指向量中非0的元素的個數。
(2)L1範數是指向量中各個元素絕對值之和,也叫“稀疏規則算子”(Lasso regularization)。
(3)L2範數是指向量各元素的平方和然後求平方根。

正則化項使得參數W變小。而更小的參數值w,意味着模型的複雜度更低,對訓練數據的擬合剛剛好(奧卡姆剃刀原理),不會過分擬合訓練數據,從而不會過擬合,以提高模型的泛化能力。
Q2:L0和L1都可以實現稀疏性,爲什麼不用L0,而要用L1呢?
S2:L0範數很難優化求解(NP-hard)。此外,L1範數是L0範數的最優凸近似,而且它比L0範數更容易優化求解。
Q3:機器學習中一般使用L2正則。
S3:L2正則項起到使得參數w變小加劇的效果。L2範數可以使得W的每個元素都很小,都接近於0而不等於0。而L1範數是讓其等於0。
在這裏插入圖片描述
此外,L2範數有助於處理 condition number不好的情況下,矩陣求逆很困難的問題(?)。

參考

https://blog.csdn.net/hurry0808/article/details/78148756
https://www.cnblogs.com/huangyc/p/9686107.html
https://blog.csdn.net/willduan1/article/details/53070777
https://www.cnblogs.com/nxld/p/6058782.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章