斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”
斯坦福大學機器學習第十課“應用機器學習的建議(Advice for applying machine learning)”
斯坦福大學機器學習斯坦福大學機器學習第十課“應用機器學習的建議(Advice for applying machine learning)”學習筆記,本次課程主要包括7部分:
1) Deciding what to try next(決定下一步該如何做)
2) Evaluating a hypothesis(評估假設)
3) Model selection and training/validation/test sets(模型選擇和訓練/驗證/測試集)
4) Diagnosing bias vs. variance(診斷偏差和方差)
5) Regularization and bias/variance(正則化和偏差/方差)
6) Learning curves(學習曲線)
7) Deciding what to try next (revisited)(再次決定下一步該做什么)
以下是每一部分的詳細解讀。
1) Deciding what to try next(決定下一步該如何做)
對學習算法進行調試:
假設你實現了一個正則化的線性回歸算法來預測房價:
然而,當你用它來測試一批新的房屋數據時,發現預測出來的數據是很不準確的,那么,下一步你該干啥?以下提供一些選項,但是暫時不過多解釋,當我們學完這一章時,就知道選擇這些選項的依據了。
– 獲取更多的訓練樣本
– 嘗試使用更少的特征的集合
– 嘗試獲得其他特征
– 嘗試添加多項組合特征
– 嘗試減小 λ
– 嘗試增加 λ
機器學習(算法)診斷(Diagnostic)是一種測試方法,使你能對一種學習算法進行深入的認識,知道什么能運行,什么不能運行,并且能指導你如何最大限度的提高學習算法的性能。
診斷測試雖然需要一些時間來實現,但是這樣做可以更有效的利用你的時間。
2) Evaluating a hypothesis(評估假設)
在房價預測問題中,如果Hypotheis如下:
定義了如下的特征:
并且對訓練數據做了非常好的擬合:
但是對不在訓練集的新數據的預測的很差,失去通用性,那么,我們該如何評估這個假設?
首先,我們需要將數據集進行切分,一部分(例如70%)作為訓練集,另一部分(例如30%)作為測試集:
對于線性回歸來說:
– 通過最小化訓練集的error J(θ)來學習參數θ;
– 再計算測試集的error:
對于邏輯回歸來說,與線性回歸相似:
-首先從訓練集中學習參數θ;
-計算測試集的error:
-額外再加一個錯誤分類的error(或者稱為0/1錯誤分類error);
3) Model selection and training/validation/test sets(模型選擇和訓練/驗證/測試集)
首先讓我們來回顧上面那個過擬合的例子:
一旦參數θ0,θ1,…,θ4對于某些數據集(訓練集)適應(最終學習的參數),那么基于該數據及參數所計算的模型的error(訓練誤差J(θ)很可能比實踐泛化的error要小。
所以我們需要考慮一下模型選擇(Model Selection)的問題,首先來看一個選擇多項式回歸模型的例子,我們有1-10次方的多項式回歸模型,或者hypothesis:
如何選擇模型?
這里我們首先基于訓練集學習參數,然后計算測試集的error, 最后選擇測試集error最小的多項式回歸模型,例如這里我們選擇:
那么這個模型的泛化能力如何?測試集的error Jtest(θ(5))基本能代表它的泛化能力,但是這是否準確?
我們用測試集來選擇參數,然后有用測試集來評估假設(hypothesis), 看起來這樣的評估是基于測試集進行了優化的?
的確存在一點問題,所以,這里我們再引入第三個集合:交叉驗證集,我們用它來選擇參數,而僅僅在測試集上評估假設。
對于原始的數據集,一種比較典型的劃分方式是60%的訓練集,20%的交叉驗證集以及20%的測試集:
有了這三個數據集合,我們也可以分別定義它們各自的error:
但是在實際使用時,我們通過訓練集學習到參數, 再計算交叉驗證集上的error, 再選擇一個在驗證集上error最小的模型,最后再在測試集上估計模型的泛化誤差(error):
4) Diagnosing bias vs. variance(診斷偏差和方差)
首先看一下偏差和方差的例子,這些例子和正則化那一章的例子相同,不過同時被貼上了偏差或方差的標簽:
a) 高偏差(欠擬合):
b) 高方差(過擬合):
c) 合適的擬合:
我們來計算這三個模型的train error和cross validation error:
我們會發現:
當多項式回歸模型的次數d=1,也就是高偏差(欠擬合)時,訓練集誤差和驗證集誤差都比較大;
當d=4, 也就是高方差(過擬合)時,訓練集誤差會很小(擬合的非常好),但是驗證集誤差卻很大;
當d=2,也就是擬合的剛剛好時,無論訓練集誤差還是驗證集誤差都剛剛好,介于上面兩者之間。
如果用圖形表示,就是下面這個樣子:
有了上面的解釋,我們就可以來診斷偏差還是方差的問題了。假設你的學習算法表現的不盡如人意,沒有達到你的期望,如何來判定它是一個偏差的問題還是方差的問題?我們可以計算他們的訓練集誤差和交叉驗證集誤差,如果它們落入了上圖的“頭部”區域,可以判斷是偏差(欠擬合)問題,如果落入了“尾部”區域,可以判斷是方差(過擬合)問題,如下圖所示:
最后,對于偏差還是方差的問題,可以做一個總結如下:
5) Regularization and bias/variance(正則化和偏差/方差)
對于過擬合問題,正則化是一個非常有效的解決方案,所以這一小節我們將考慮正則化和偏差/方差的關系。首先來看一個正則化的線性回歸的例子:
如果正則化參數λ過大,一種極端的情況例如λ = 10000, 那么除去θ0,所學的其他參數都將近似為0,這就是欠擬合或高偏差的情況:
如果λ過小,極端的情況是λ = 0,等于沒有對線性回歸模型進行正則化,那么過擬合高方差的問題就很容易出現:
如果λ選取的比較合適,介于上述二者之間,那么我們將得到合適的擬合:
那么,如何選擇正則化參數 λ ?
對于數據集,我們仍將它劃為3份:訓練集,驗證集,測試集。對于給定的正則化模型,例如上面的例子,我們按 λ 從小到大的順序依次取數,然后在訓練集上學習模型參數,在交叉驗證集上計算驗證集誤差,并選擇誤差最小的模型, 也就是選擇 λ,最后再在測試集上評估假設:
偏差/方差可以作為正則化參數 λ 的函數,與上一小節相似,我們也可以畫出這個函數圖,這樣我們就能評估 λ 合適的選擇范圍了:
6) Learning curves(學習曲線)
這一小節考慮Learning curves(學習曲線)的問題,主要針對的是訓練樣本數目來觀察訓練集誤差和驗證集誤差之間的差異:
以下來考慮訓練樣本數目和模型的關系。以二次項多項式回歸為例,如果僅有一個訓練樣本,那么模型很容易和樣本點擬合,訓練集誤差近似為0,幾乎可以忽略不計,而驗證集誤差可能會很大;如果有兩個樣本點,模型也很容易擬合樣本點,訓練集誤差會略大一點,驗證集誤差可能會小一些;以此類推,當樣本點比較多時,模型雖然不能擬合所有的樣本點,但是泛化能力會更好一些,因此訓練集誤差會更大一點,而驗證集誤差會更小一些,如下圖所示:
而誤差和訓練樣本數目m的關系或者學習曲線如下:
以下通過學習曲線來考慮高偏差和高方差的問題。對于高偏差欠擬合問題:
即使增大了訓練樣本數目,模型擬合的依然不夠,依然還是欠擬合問題。以下是高偏差欠擬合問題的學習曲線:
我們發現,如果一個學習算法是高偏差的,那么它的訓練誤差和驗證集誤差在一定的訓練樣本數目之后都很高,而且不會隨著樣本數目的增大而改變,所以對于高偏差欠擬合的問題,增加訓練樣本數目不是一個好的解決辦法。
而對于高方差過擬合問題:
增大樣本數目后,模型的泛化能力會好一些,一些是高方差過擬合問題的學習曲線:
我們發現,如果一個學習算法是高方差的,那么它的訓練誤差和驗證集誤差在一定的訓練樣本數目之后雖然有差異,但是會隨著樣本數目的增大而減小她們之間的gap,所以對于高方差過擬合的問題,增加訓練樣本數目是解決方法之一。
7) Deciding what to try next (revisited)(再次決定下一步該做什么)
好了,說完了這么多與偏差/方差有關的問題,我們再次回到本章的開頭的問題,
假設你實現了一個正則化的線性回歸算法來預測房價,然而當你用它來測試一批新的房屋數據時,發現預測出來的數據是很不準確的,那么,下一步你該干啥?以下這些選項,分別針對的是高方差或高偏差的問題,你可以嘗試用上述小節的一些方法來診斷你的學習算法,不過對于下述選項,需要你考慮一下是針對高偏差還是方差的問題,可以先思考一分鐘再看答案:
– 獲取更多的訓練樣本
– 嘗試使用更少的特征的集合
– 嘗試獲得其他特征
– 嘗試添加多項組合特征
– 嘗試減小 λ
– 嘗試增加 λ
答案:
– 獲取更多的訓練樣本 – 解決高方差
– 嘗試使用更少的特征的集合 – 解決高方差
– 嘗試獲得其他特征 – 解決高偏差
– 嘗試添加多項組合特征 – 解決高偏差
– 嘗試減小 λ – 解決高偏差
– 嘗試增加 λ -解決高方差
最后我們再來看一下神經網絡和過擬合的問題:
以下是“小”的神經網絡(參數比較少,很容易欠擬合):
它的計算代價較少。
以下是“大”的神經網絡(參數比較多,很容易過擬合):
它的計算代價較大,對于神經網絡過擬合的問題,可以通過正則化(λ)方法解決。
參考資料:
機器學習視頻可以在Coursera機器學習課程上觀看或下載: https://class.coursera.org/ml
第十課的課件資料下載鏈接: PPT?? PDFMitchell教授的經典書籍《機器學習》
李航博士《統計學習方法》
機器學習中的數學(2)-線性回歸,偏差、方差權衡
如轉載52opencourse上的任何原創文章,請注明出處,謝謝!
出處:http://www.52nlp.cn/%E6%96%AF%E5%9D%A6%E7%A6%8F%E5%A4%A7%E5%AD%A6%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%AC%AC%E5%8D%81%E8%AF%BE%E5%BA%94%E7%94%A8%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%9A%84%E5%BB%BA%E8%AE%AEa
總結
以上是生活随笔為你收集整理的斯坦福大学机器学习第十课“应用机器学习的建议(Advice for applying machine learning)”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 斯坦福大学机器学习第八课“神经网络的表示
- 下一篇: 编程面试的10大算法概念汇总