吳恩達-機器學(xué)習(xí)課程--10: Advice for applying Machine Learning的學(xué)習(xí)總結(jié):
當(dāng)我們發(fā)現(xiàn)建立的模型預(yù)測錯誤率很高時,通常會采取以下措施:
Get more training data
Try a smaller set a features
Try getting additional features
Adding polynomial features
Building your own, new, better features
Try?decreasing?or increasing?λ
我們可以運用機器學(xué)習(xí)的診斷法來判斷為了改進算法性能需要做哪些改變,不過診斷法也需要花費一定的時間。
評估預(yù)測模型:
將數(shù)據(jù)集7/3分,分為訓(xùn)練集和測試集,訓(xùn)練集訓(xùn)練模型,測試集測試誤差


例如邏輯回歸算法的誤差測試如下:

可以計算誤分類率也就是分類錯誤的比率:


模型選擇:

把數(shù)據(jù)集分為三部分
1 -?Training set?(60%) -
2 -?Cross validation?set(CV) (20%) --交叉驗證集
3 -?Test set(20%)?
使用訓(xùn)練集訓(xùn)練不同模型參數(shù)θ,再用交叉驗證集驗證所有模型的誤差,選擇誤差最小的那個模型(比如五次)。最后用測試集來測試模型。
診斷高偏差or高方差
算法表現(xiàn)不理想可能是出現(xiàn)了以下兩種情況種的一種:
高偏差(high bias)--欠擬合
高方差(hign variance)--過擬合
畫出下圖可做診斷,x軸為多項式次數(shù),y軸為誤差。次數(shù)越大越擬合訓(xùn)練集,但因為過擬合,在驗證集中表現(xiàn)不好。易知訓(xùn)練集和驗證集的誤差和次數(shù)的關(guān)系如圖中所示。

所以訓(xùn)練集和驗證集的誤差都高,則發(fā)生了欠擬合的情況
訓(xùn)練集誤差低而驗證集誤差高,則發(fā)生了過擬合情況
正則化對高偏差/高方差的影響:
以線性回歸的正則化為例:

如果λ選取過大,則可能出現(xiàn)欠擬合情況
如果λ選取過小,趨于0,那基本等于沒有正則化,可能出現(xiàn)過擬合情況
如何選擇合適的λ值呢
--用遞增的λ,帶入模型測試:

易知訓(xùn)練集和驗證集的誤差率與λ選取的關(guān)系圖:

學(xué)習(xí)曲線:
畫出學(xué)習(xí)曲線可以幫助我們檢查算法的情況,例如訓(xùn)練集大小與訓(xùn)練集和驗證集誤差的關(guān)系:
訓(xùn)練集m小,模型能很好的擬合數(shù)據(jù)集,誤差極小,而模型泛化能力差,
誤差極大。
m增大,模型不能很好的擬合所有訓(xùn)練集了,誤差增大,而訓(xùn)練集越大越能訓(xùn)練出合適的模型,泛化能力越好,
誤差減小。

如果出現(xiàn)欠擬合情況,學(xué)習(xí)曲線如下圖:

和
的誤差趨于水平,接近且都很高,此時增加數(shù)據(jù)集對改進算法沒有幫助。
如果出現(xiàn)過擬合情況,學(xué)習(xí)曲線如下圖:

訓(xùn)練集和驗證集誤差相距很大。當(dāng)訓(xùn)練集m增大,和
的誤差率會靠近,增加數(shù)據(jù)集對改進算法可能有幫助。
回到最開始,當(dāng)我們發(fā)現(xiàn)建立的模型預(yù)測錯誤率很高時,通過學(xué)習(xí)曲線判斷情況,選擇合適的方式提高算法性能:
Get more examples?--> helps to fix high variance
Smaller set of features?--> fixes high variance?
Try adding additional features?--> fixes high bias (because hypothesis is too simple, make hypothesis more specific)
Add polynomial terms?--> fixes high bias
Decreasing?λ?--> fixes high bias
Increases?λ?--> fixes high variance