過擬合:對訓練資料擬合精準,但是對未知的資料**能力差
如何應對?
2、丟棄一些不能幫助正確**的特徵。
2.1、手工選擇丟棄特徵
2.2、使用模型選擇方法(如pca)
3、正則化。保留所有的特徵,減少引數的大小
預防過擬合的方法步驟:
1、打亂資料集;2、劃分資料:70%訓練集 + 30%測試集
幫助模型選擇的方法:
交叉驗證:1、打亂資料集;2、劃分資料:60%訓練集 + 20%交叉驗證集 + 20%測試集
如何選擇模型?
1、預先訓練10個模型
2、計算10個模型的交叉訓練集的**誤差
3、選取代價函式最小的模型
4、用步驟3選出的模型對測試集計算得出推廣誤差
診斷偏差和方差
高偏差和高方差的問題基本上是欠擬合和過擬合的問題
1、jtraing(訓練集誤差)和jcv(交叉驗證集誤差)都很大:偏差/欠擬合
2、jtraing小,jcv遠遠大於jtraing:方差/過擬合
正則化和偏差方差
正則化因子lambda的選擇方法:
1、使用訓練集訓練12個不同程度正則化的模型
2、計算12個模型的交叉訓練集的**誤差
3、選取代價函式最小的模型
4、用步驟3選出的模型對測試集計算得出推廣誤差
lambda較小時:
jtraing很小,而jcv較大:方差/過擬合
隨著lambda的增大:
jtraing不斷增大(欠擬合),jcv先減小後增大
因此,應該選擇適中的lambda,不能過大或過小
學習曲線:即訓練樣本數目m和jtraing、jcv的關係圖
在高偏差/欠擬合的情況下,增加訓練集樣本數不一定能夠提公升模型能力,應該考慮切換模型
在高方差/過擬合的情況下,增加訓練集樣本數可以一定程度的提公升模型能力
總結一下:
欠擬合/偏差大:
現象:jtrain較大,同時jcv/jtest較大
原因:模型複雜度不夠,對訓練資料集擬合程度較低;特徵數量n相比訓練樣本數量m較少;正則化因子lambda較大
解決辦法:
1、使用數次較高的多項式特徵,增加模型複雜度
2、增加特徵數量n
3、減小正則化因子lambda的值
過擬合/方差大:
現象:jtrain較小,同時jcv/jtest較大
原因:模型複雜度過高,對訓練資料集擬合非常好,但是對測試資料集效果差;樣本數量m相比特徵數量n較少;正則化因子lambda較小
解決辦法:
1、降低模型模型複雜度,降低多項式特徵次數
2、減少影響較小的特徵數量/增加樣本數量
3、增大正則化因子lambda
針對神經網路:
模型效果:大神經網路+正則化 > 小神經網路
選擇隱藏層數目時,從1層開始逐層增加,選擇交叉驗證集代價函式最小的網路。
機器學習 診斷偏差和方差
如果乙個機器學習演算法表現不理想,要麼是欠擬合,要麼是過擬合。越高次方越能代表我們的訓練集,但能適應訓練集並不代表能推廣至一般情況。高偏差 訓練誤差很大,訓練誤差與測試誤差很小,隨著樣本增多,訓練誤差增大。高方差 訓練誤差很小,訓練誤差與測試誤差差距很大,隨著樣本增多,測試誤差會減小。訓練集誤差和交...
機器學習演算法診斷
如果我們在某個資料集上訓練得到乙個模型假設 h x 而當我們將這個模型應用到乙個新的資料集上,或者說用這個模型來做 的時候,發現這個模型的 錯誤很大,那麼我們應該如何做,採取什麼辦法來 改善 模型 的效能呢?辦法就是,對演算法進行診斷。機器學習演算法的診斷,可以看做是對 模型或者演算法 做的乙個測試...
機器學習系統設計(三)
機器學習的資料 假設特徵變數x rn 1,且有足夠的資訊可以測試精確地 y的值。在使用含有非常多的引數的學習演算法 如 含非常多的特徵變數的線性回歸或者邏輯回歸 隱藏層啟用單元數非常多的神經網路 時,其可以保證低偏差,即不會出現欠擬合問題,以及其jtrain 的值也非常小。在此基礎上,我們使用非常大...