機器學習的應用建議
好久沒有更新機器學習的學習筆記了,上一次還是更新的神經網路的部分。這一次我們來聊一聊,機器學習的應用建議。
決定下一步做什麼
假設我們需要用乙個線性回歸模型(linear regression)來**房價,當我們運用訓練好了的模型來**未知資料的時候,發現有較大的誤差,我們下一步可以做什麼?
獲得更多的訓練例項——通常是有效的,但是代價較大,下面的方法也可能有效,可以考慮優先採用下面的幾種方法。
嘗試減少特徵的數量
嘗試獲得更多的特徵
嘗試增加二項式特徵
嘗試減少歸一化程度λ
嘗試增加歸一化程度λ
我們不應該隨機選擇上面的某種方法來改進我們的演算法,而是運用一些機器學習診斷法來幫助我們知道上面哪些方法對我們的演算法是有效的。
假設的評估(evaluating a hypothesis
)過擬合檢驗
為了檢驗演算法是否過擬合,我們將資料分成訓練集和測試集,通常用70%的資料作為訓練集,剩下30%的資料作為測試集。很重要的一點是,訓練集和測試集均要含有各種型別的資料,通常我們對資料要進行「洗牌」,然後再分成訓練集和測試集。
測試集評估
在通過訓練集讓我們的模型學習得出其引數後,對測試集運用該模型,我們有兩種方式計算誤差:
模型選擇(交叉驗證集)
假設我們要在10個不同次數的二項式模型之間進行選擇:
顯然越高次數的二項式模型越能夠適應我們的訓練資料集,但是適應訓練資料集並不代表著能推廣至一般情況,我們應該選擇乙個更能適應一般情況的模型。我們需要使用交叉驗證集來幫助選擇模型,即:
模型選擇的方法為:
使用訓練集訓練出10個模型
用10個模型分別對交叉驗證集計算得出交叉驗證誤差(代價函式的值)
選取代價函式值最小的模型
用上面步驟3中選出的模型對測試集計算得出推廣誤差(代價函式的值)
偏倚和偏差診斷(diagnosis bias vs. variance
)高偏倚和高偏差的問題基本上來說就是低擬合和過擬合的問題。
我們通常會通過將訓練集和交叉驗證集的代價函式誤差與多項式的次數繪製在同一張圖表上來幫助分析:
如果我們的交叉驗證集誤差較大,我們如何判斷是偏倚還是偏差呢?
根據上面的圖表,我們知道:
歸一化與偏倚/偏差
在我們在訓練模型的過程中,一般會使用一些歸一化的方法來防止過擬合。但是我們可能歸一化的程度太高或太小了,即我們再選擇λ的值時也需要思考與剛才選擇多項式模型次數類似的問題。
我們選擇一系列的想要測試的λ值,通常是在0-10之間的呈現2倍關係的值,如:0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10 共12個。
我們同樣把資料分為訓練集、交叉驗證集和測試集。
選擇λ的方法為:
使用訓練集訓練處12個不同程度歸一化的模型
用12個模型分別對交叉驗證集計算得出交叉驗證誤差
選擇得出交叉驗證誤差最小的模型
運用步驟3中選出的模型對測試及計算得出推廣誤差
學習曲線(learning curves
)學習曲線是學習演算法的乙個很好的合理檢驗(sanity check),學習曲線是將訓練集誤差和交叉驗證集誤差作為訓練集例項數量(m)的函式繪製的圖表。
即,如果我們有100個資料,我們從第1個資料開始,逐漸學習更多的資料。思想是:當訓練較少資料的時候,訓練的模型將能夠非常完美的適應較少的訓練資料,但是訓練出來的模型卻不能很好的適應交叉驗證集資料或測試資料集。
如何利用學習曲線識別高偏倚/低擬合:
作為例子,我們嘗試用一條直線來適應下面的資料,可以看出,無論訓練集有多麼大誤差都不會有太大改觀:
也就是說在高偏倚/低擬合的情況下,增加資料到訓練集不一定能有幫助。
如何利用學習曲線識別高偏差/過擬合:
假設我們使用乙個非常高次的多項式模型,並且歸一化非常小,可以看出,當交叉驗證集誤差遠大於訓練集誤差時,往訓練集增加更多資料可以提高模型的效果。
也就是說,在高偏差/過擬合的情況下,增加更多資料到訓練集可能提高演算法效果。
決定下一步做什麼
獲得更多的訓練例項——解決高偏差
嘗試減少特徵的數量——解決高偏差
嘗試獲得更多的特徵——解決高偏倚
嘗試增加二項式特徵——解決高偏倚
嘗試減少歸一化程度——解決高偏倚
嘗試增加歸一化程度——解決高偏差
神經網路的偏倚和偏差
通常選擇較大的神經網路並採用歸一化處理會比採用較小的神經網路效果要好。
對於神經網路中的隱藏層的層數的選擇,通常從一層開始逐漸增加層數,為了更好地做選擇,可以把資料分為訓練集、交叉驗證集和測試集,針對不同隱藏層層數的神經網路訓練神經網路,然後選擇交叉驗證集代價最小的神經網路。
機器學習入門 應用機器學習的建議
機器入門系列文章中,我已經根據課程,介紹了許多演算法,比如線性回歸 logistic回歸,以及神經網路,等等。而針對具體的問題,我們採取了某種演算法,實現後,發現效果不好,需要改進。有些時候需要增加資料量,有些時候則不需要 我們需要評估乙個模型的好壞,從而比較選出更優者 或者根據模型出現的問題,提出...
Coursera 應用機器學習的建議
偏差方差權衡 損失函式和收斂情況 誤差分析和銷蝕分析對順序敏感,所以需要經過多次試驗。訓練集 交叉驗證集和測試集 訓練集是用來學習的樣本集,通過匹配一些引數來建立乙個分類器。驗證集是用來調整分類器的引數的樣本集,比如在神經網路中選擇隱藏單元數。驗證集還用來確定網路結構或者控制模型複雜程度的引數。測試...
吳恩達機器學習筆記 11 應用機器學習的建議
本篇講述了在機器學習應用時,如何進行下一步的優化。如訓練樣本的切分驗證?基於交叉驗證的引數與特徵選擇?在訓練集與驗證集上的學習曲率變化?在高偏差或者高方差時如何進行下一步的優化,增加訓練樣本是否有效?樣本的切分 首先針對我們的樣本集,選擇其中的70 作為訓練集,訓練模型 選擇其中的30 作為測試集,...