知道某個算法,和運用一個算法是兩碼事兒。
當你訓練出數據后,發覺模型有太大誤差,怎么辦?
1)獲取更多的數據。也許有用吧。
2)減少特征維度。你可以自己手動選擇,也可以利用諸如PCA等數學方法。
3)獲取更多的特征。當然這個方法很耗時,而且不一定有用。
4)添加多項式特征。你在抓救命稻草么?
5)構建屬於你自己的,新的,更好的特征。有點兒冒險。
6)調整正則化參數lambuda。
以上方法的嘗試有些碰運氣,搞不好就是浪費大把時間。
machine learning diagonostic. 機器學習診斷。檢查正確性,提升效率,節省調試時間。
一,評估假設
loss越小,不代表模型越好,有可能出現過擬合的現象。
正確的方法是:將數據分割為訓練集和測試集。利用訓練集訓練數據,測試集進行測試求出測試集誤差(test set error)
二,模型選擇與訓練驗證測試集
如何選擇正則化參數和多項式次數(模型選擇)
嘗試不同的正則化參數和多項式次數,選擇在測試集上損失最小的model。這似乎可行,但都是針對測試集計算,無法驗證泛化能力。
解決的方法就是划分出三個集合:訓練集,驗證集,和測試集。
利用驗證集選擇最佳的參數模型,之后再在測試集上計算泛化損失。
三,模型診斷:bias vs variance
過擬合和欠擬合的判斷方法
繪制曲線
當d過小,有可能是欠擬合
當d過大,有可能是過擬合
對於欠擬合而言,驗證集和訓練集的loss均非常大
對於過擬合而言,訓練集的loss很小,而驗證集的loss很大。
四,正則化參數對欠擬合過擬合的平衡
lambuda很大的話,容易欠擬合,過小則容易過擬合。
如何選擇?
設置一個正則化參數的選擇范圍,在驗證集上計算每一個值所對應的loss的大小,選擇最小的那個。
五,學習曲線
high bias:
Jcv和Jtrain在m很大的情況下,都很高。
此時,增加樣本數將沒有效果。因為模型本身出了問題。可能的問題是模型過於簡單。
high variance:
Jcv和Jtrain之間間隔很大。
此時,增加訓練樣本數有可能會有很好的效果。
六、總結
1)獲取更多樣本:解決過擬合。欠擬合則不行。
2)更小的特征集:同上。
3)添加其他特征:解決欠擬合
4)添加多項式:解決欠擬合
5)減小lambuda: 解決欠擬合
6)增大Lambuda:解決過擬合