机器学习07应用机器学习的建议
決定下一步做什么(Deciding What to Try Next)
確保在設(shè)計機(jī)器學(xué)習(xí)系統(tǒng)時,能夠選擇一條最合適、最正確的道路。
具體來講,將重點(diǎn)關(guān)注的問題是:假如你在開發(fā)一個機(jī)器學(xué)習(xí)系統(tǒng),或者想試著改進(jìn)一個機(jī)器學(xué)習(xí)系統(tǒng)的性能。
你應(yīng)如何決定接下來應(yīng)該選擇哪條道路?
1.?獲得更多的訓(xùn)練實(shí)例——通常有效,但代價較大,下面的方法也可能有效,可
考慮先采用下面的幾種方法。?
2.?嘗試減少特征的數(shù)量?
3.?嘗試獲得更多的特征?
4.?嘗試增加多項(xiàng)式特征?
5.?嘗試減少歸一化程度 λ?
6.?嘗試增加歸一化程度 λ ?
不應(yīng)該隨機(jī)選擇上面的某種方法來改進(jìn)算法
而是運(yùn)用一些機(jī)器學(xué)習(xí)診斷法來幫助我們知道上面哪些方法對算法是有效的。?
——————————————————————————————————————
評估學(xué)習(xí)器性能:
將數(shù)據(jù)分成訓(xùn)練集和測試集, 通常70%作為訓(xùn)練集, 30%作為測試集。
—————————————————————————————————————————————————————————
模型選擇和交叉驗(yàn)證集(Model Selection and Train_Validation_Test Sets)
使用交叉驗(yàn)證集來幫助選擇模型。?
即:使用 60%作為訓(xùn)練集, 20%作為交叉驗(yàn)證集,20%作為測試集 。
模型選擇的方法為:?
1.?使用訓(xùn)練集訓(xùn)練出 10 個模型?
2.?用 10 個模型分別對交叉驗(yàn)證集計算得出交叉驗(yàn)證誤差(代價函數(shù)的值)?
3.?選取代價函數(shù)值最小的模型?
4.?用步驟 3 中選出的模型對測試集計算得出泛化誤差(代價函數(shù)的值)——僅是為了得出泛化誤差,此步對模型選擇無用。
—————————————————————————————————————————————————————————
偏差/方差診斷(?Diagnosing Bias vs. Variance)
偏差大,欠擬合;
方差大,過擬合。
是一個很有效的指示器,指引可以改進(jìn)算法的方法和途徑。
?
結(jié)論:
交叉驗(yàn)證集誤差和訓(xùn)練集誤差近似時:偏差/欠擬合 ;
交叉驗(yàn)證集誤差遠(yuǎn)大于訓(xùn)練集誤差時:方差/過擬合。
—————————————————————————————————————————————————————————
正則化和偏差/方差(Regularization and Bias_Variance)
在訓(xùn)練模型的過程中, 一般會使用一些正則化方法來防止過擬合。
選擇一系列的想要測試的 λ 值,通常是 0-10 之間的呈現(xiàn) 2 倍關(guān)系的值。
(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 共 12 個)。?
我們同樣把數(shù)據(jù)分為訓(xùn)練集、交叉驗(yàn)證集和測試集。
選擇 λ 的方法為:?
1.?使用訓(xùn)練集訓(xùn)練出 12 個不同程度歸一化的模型;?
2.?用12個?模型分別對交叉驗(yàn)證集計算的出交叉驗(yàn)證誤差;?
3.?選擇得出交叉驗(yàn)證誤差最小的模型;?
4.?運(yùn)用步驟 3 中選出模型對測試集計算得出泛化誤差。——僅是為了得出泛化誤差,此步對模型選擇無用。
結(jié)論:
當(dāng) λ 較小時,訓(xùn)練誤差較小(過擬合)而交叉驗(yàn)證誤差較大 ;
隨著 λ 的增加,訓(xùn)練誤差不斷增加(欠擬合),而交叉驗(yàn)證誤差則是先減小后增加 。
—————————————————————————————————————————————————————————
學(xué)習(xí)曲線(Learning Curves)
經(jīng)常使用學(xué)習(xí)曲線來判斷某一個學(xué)習(xí)算法是否處于偏差、方差問題。
學(xué)習(xí)曲線是學(xué)習(xí)算法的一個很好的合理檢驗(yàn)(sanity check)。
學(xué)習(xí)曲線是將訓(xùn)練集誤差和交叉驗(yàn)證集誤差作為訓(xùn)練集實(shí)例數(shù)量(m)的函數(shù)繪制的圖表。
?即,如果我們有 100 行數(shù)據(jù),我們從 1 行數(shù)據(jù)開始,逐漸學(xué)習(xí)更多行的數(shù)據(jù)。
思想:
當(dāng)訓(xùn)練較少數(shù)據(jù)時, 訓(xùn)練的模型將能夠非常完美地適應(yīng)較少的訓(xùn)練數(shù)據(jù), 但是訓(xùn)練出來的模型卻不能很好地適應(yīng)交叉驗(yàn)證集數(shù)據(jù)或測試集數(shù)據(jù)。
如何利用學(xué)習(xí)曲線識別高偏差/欠擬合?
作為例子,試用一條直線來適應(yīng)下面的數(shù)據(jù),可以看出,無論訓(xùn)練集有多么大誤差都不會有太大改觀:
?
如何利用學(xué)習(xí)曲線識別高方差/過擬合?
?假設(shè)我們使用一個非常高次的多項(xiàng)式模型,并且正則化非常小.
可以看出,當(dāng)交叉驗(yàn)證集誤差遠(yuǎn)大于訓(xùn)練集誤差時,往訓(xùn)練集增加更多數(shù)據(jù)可以提高模型的效果。?
小結(jié):
在高偏差/欠擬合的情況下,增加數(shù)據(jù)到訓(xùn)練集不一定能有幫助;
在高方差/過擬合的情況下,增加更多數(shù)據(jù)到訓(xùn)練集可能可以提高算法效果。?
—————————————————————————————————————————————————————————
決定下一步做什么(Deciding What to Do Next)
六種可選方案:?
1.?獲得更多的訓(xùn)練實(shí)例——解決高方差?
2.?嘗試減少特征的數(shù)量——解決高方差?
3.?嘗試獲得更多的特征——解決高偏差?
4.?嘗試增加多項(xiàng)式特征——解決高偏差?
5.?嘗試減少正則化程度 λ——解決高偏差?
6.?嘗試增加正則化程度 λ——解決高方差?
神經(jīng)網(wǎng)絡(luò)的方差和偏差:
使用較小的神經(jīng)網(wǎng)絡(luò),類似于參數(shù)較少的情況,容易導(dǎo)致高偏差和欠擬合,但計算代價較小;
使用較大的神經(jīng)網(wǎng)絡(luò),類似于參數(shù)較多的情況,容易導(dǎo)致高方差和過擬合,雖然計算代價比較大,但是可以通過正則化手段來調(diào)整而更加適應(yīng)數(shù)據(jù)。?
通常選擇較大的神經(jīng)網(wǎng)絡(luò)并采用正則化處理會比采用較小的神經(jīng)網(wǎng)絡(luò)效果要好。?
對于神經(jīng)網(wǎng)絡(luò)中的隱藏層的層數(shù)的選擇,通常從一層開始逐漸增加層數(shù)。
為了更好地作選擇,可以把數(shù)據(jù)分為訓(xùn)練集、交叉驗(yàn)證集和測試集,針對不同隱藏層層數(shù)的神經(jīng)網(wǎng)絡(luò)訓(xùn)練神經(jīng)網(wǎng)絡(luò), 然后選擇交叉驗(yàn)證集代價最小的神經(jīng)網(wǎng)絡(luò)。
?
總結(jié)
以上是生活随笔為你收集整理的机器学习07应用机器学习的建议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器学习06神经网络--学习
- 下一篇: 机器学习09支持向量机