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