吳恩達機器學習筆記-應用機器學習的建議

評估假設

咱們以前已經學習過一些機器學習的算法,如今咱們來談談如何評估算法學習獲得的假設。當發現預測的結果和實際的數據有偏差的時候,咱們須要進行一些調整來保證預測的準確性,大部分狀況下,有如下幾種辦法來調整假設函數:算法

  • 獲取更多的訓練集
  • 減小特徵的數量
  • 嘗試使用更多的特徵
  • 嘗試使用多項式特徵
  • 增大或減少lambda

假設函數相對於訓練集可能獲得的偏差很小,好比在過擬合的狀況下,這時候就不能確定假設函數是準確的。所以,咱們有時候將數據集分紅兩塊:訓練集和測試集,通常來講訓練集佔70%,測試集30%。定義訓練集的偏差爲$J_{train}(\Theta)$,測試集爲$J_{test}(\Theta)$。這樣,咱們要作的就是:經過訓練集訓練來最小化$J_{train}(\Theta)$和計算測試集$J_{test}(\Theta)$的偏差。
對於線性迴歸:網絡

$$ J_{test}(\Theta) = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}(h_\Theta(x_{test}^(i)))^2 $$app

對於分類問題:
當$h_\Theta(x)>=0.5且y=0$或$h_\Theta(x)<0.5且y=1$ 時,$err(h_\Theta(x),y) = 1$;不然,$err(h_\Theta(x),y) = 0$。
他們對於測試集的平均偏差爲:機器學習

$$ Test Error = \frac{1}{2m_{test}}\sum_{i=1}^{m_{test}}err(h_\Theta(x_{test}^(i)),y_{test}^(i)) $$函數

這個給與咱們測試集中錯誤分類的比例。學習

模型選擇-訓練集、驗證集、測試集

因爲學習算法可能對於訓練集的數據相對很吻合,但不表明這是一個好的假設,以前說過了,這多是過擬合的狀況,從而致使預測的結果在測試集中的表現會不盡如人意。從當前數據集訓練出的假設函數的偏差是會比其餘數據集要小的。
提供多個不一樣級數的多項式模型時,咱們可使用系統的方法來鑑別是不是最好的函數。爲了選擇最佳的假設,能夠對於每個不一樣的級數的多項式進行計算,得出他們的偏差,從而比較出哪個纔是最合適的。
上文中咱們將數據集分紅了訓練集和測試集兩部分,實際狀況中常常會分爲三部分,其中60%爲訓練集,20%爲交叉驗證集,20%爲測試集。咱們能夠分別計算這三部分的偏差,測試

接下來:優化

  1. 經過訓練集來針對每個級數的多項式來最優化參數theta
  2. 經過交叉驗證集來找到最偏差最小的級數d
  3. 使用$J_{test}(\Theta^d)$來估計使用測試集獲得的模型的泛化偏差,這樣的話,多項式的級數就不用經過測試集訓練獲得了。

診斷誤差與方差

當運行一個學習算法時,若這個算法的結果不理想,多半是出現兩種狀況:要麼是誤差比較大(high bias),要麼是方差比較大(high variance)。換句話說,要麼是欠擬合問題要麼是過擬合問題。
高誤差致使欠擬合,高方差致使過擬合。理想狀況下,咱們要在這二者之間找到最佳的平均值。
當增長多項式的級數d時,訓練集的偏差將會減少。同時當增長級數d到達某個點時,交叉驗證偏差會漸漸的減少,而後其會伴隨着d的增長而增長,圖像爲一個凸曲線。以下圖:spa

總的來講:code

正則化和誤差、方差

在以前的課程中已經學習過經過正則化來解決過擬合問題,如今再來談談正則化和誤差方差之間的關係。

在上圖中,當$\lambda$很大,對於$\theta1$,$\theta1$..的懲罰都很大,則假設函數將會等於或近似於$\theta_0$,最終獲得的假設函數就是一條直線,所以這個假設對於數據嚴重欠擬合。另外一個狀況當$\lambda$很小時,趨向於0,那麼正則化項趨向於0,獲得的假設函數則會出現過擬合的狀況。只有當咱們取一個比較合適的$\lambda$時,咱們才能獲得對數據擬合比較合理的$\theta$的值。
那麼如何選擇合適的模型和合適的正則化參數$\lambda$呢,具體有以下幾個步驟:

1. Create a list of lambdas (i.e. λ∈{0,0.01,0.02,0.04,0.08,0.16,0.32,0.64,1.28,2.56,5.12,10.24});
2. Create a set of models with different degrees or any other variants.
3. Iterate through the λs and for each λ go through all the models to learn some \ThetaΘ.
4. Compute the cross validation error using the learned Θ (computed with λ) on the J_CV ​(Θ)  without regularization or λ = 0.
5. Select the best combo that produces the lowest error on the cross validation set.

Using the best combo Θ and λ, apply it on J_test ​(Θ)  to see if it has a good generalization of the problem.

將$\lambda$的取值和$J(\theta)$的曲線畫出來以下所示:

$J_{train}(\theta)$隨着$\lambda$值的增長而增長,由於$\lambda$的值增大會對應着高誤差問題,此時連訓練集都不能很好的擬合,當$\lambda$很小時,對應着你能夠很容易地用高次多項式擬合你的數據。對於交叉驗證的偏差,如圖中粉色的圖像所示,當$\lambda$很大時,會出現欠擬合問題,所以是那一片是高誤差區域,此時交叉驗證集的偏差會很大,當$\lambda$很小時,會出現過擬合問題,對應的是高方差問題,所以交叉驗證集的偏差也會很大。一樣的,總會有中間的某個點對應的$\lambda$表現的結果正好合適,交叉驗證偏差和測試偏差都很小。

學習曲線

當訓練集很小的狀況下,好比只有兩三條數據的時候,咱們很容易訓練一個二次的算法來擬合數據,而且算法的偏差可能幾乎爲0,所以,

  • 當訓練集增大時,二次函數的偏差將會增長
  • 隨着集合數據的增長,最終的偏差會漸漸趨向於平穩

具體變化以下圖所示:

隨着訓練集的增長,交叉驗證集的偏差將會慢慢減少知道趨向於某一個值,由於擬合數據越多,就越能擬合出合適的假設。
那麼若是出現了高誤差的狀況,學習曲線會變成什麼樣子:

若訓練集量比較小,那麼擬合效果固然很差,致使交叉驗證集的偏差會很大,那麼隨着訓練集的增長,擬合效果漸漸的變好了,交叉驗證集的偏差也會漸漸變小,當訓練集增大到某一個量時,咱們可能就會找到一條最有可能擬合數據的直線,而且此時即使繼續增長訓練集的樣本容量,仍是會獲得一條差很少的結果。那麼對於訓練偏差,一開始也是很小的,但在高誤差的狀況下,訓練集的偏差會逐漸增大直到最後接近交叉驗證偏差,這是由於你的參數很小,但又有不少數據,當m很大時,訓練集和交叉驗證集的偏差將會很是接近。總的來講能得出一個結論,若是一個算法有高誤差,那麼選用更多的訓練集數據並不能很好的改善算法。
對於高方差的狀況,以下圖:

一開始訓練集的偏差是很小的,但隨着訓練集容量的增長,偏差會漸漸變大,也就是說數據越多,就越難將訓練集數據擬合的很好,但總的來講,訓練集的偏差仍是很小。那麼對於交叉驗證集,因爲是高方差的狀況,偏差會一直都很大,雖然也會慢慢減少,但在訓練偏差和交叉驗證偏差之間依然有一段很大的差距。總的來講得出的結論就是,若是咱們考慮增長訓練集樣本的容量,對於改善算法仍是有必定的幫助的,由於很顯然交叉驗證偏差再慢慢減少,那麼測試集的偏差也會慢慢減少,固然一樣這個也能告訴咱們這個算法可能存在高方差的問題。

總結

上文中一開始咱們有說過幾種不一樣的方法來改善假設函數,但每每有些人只是憑藉本身的感受來決定使用哪一種方法,那麼經過本文介紹的一些知識,咱們能夠得出,這幾種方法分別對應於解決什麼問題:

  • 獲取更多的訓練集 --> 解決高方差問題
  • 減小特徵的數量 --> 解決高方差問題
  • 嘗試使用更多的特徵 --> 解決高誤差問題
  • 嘗試使用多項式特徵 --> 解決高誤差問題
  • 增大lambda --> 解決高方差問題
  • 減少lambda --> 解決高誤差問題

那麼這裏再補充一下對於神經網絡的診斷:

  • 一個相對簡單的神經網絡模型,隱含單元比較少或者隱藏層不多時,那麼擬合時選擇的參數就會比較小,容易出現欠擬合,但他的優點
  • 擬合一個複雜的神經網絡模型時,那麼其參數通常比較多,容易出現過擬合,這種結構的計算量相對會很大。但過擬合問題可使用正則化來進行修正。一般使用大型網絡模型而後使用正則化來防止過擬合問題相對於使用簡單的神經網絡擬合的效果要更好。

總的來講,模型的複雜程度的影響有如下幾點:

  • 低階多項式,也就是低複雜程度的模型有高誤差和低方差的問題,這種狀況下,模型的擬合程度較差
  • 高階多項式,也就是高複雜程度的模型對於訓練集的擬合效果相對較好,但對於測試集的擬合效果很是差,會出現低誤差和高方差問題。
  • 在現實中,咱們須要在二者之間選擇一個合適的模型,使其能很好的來擬合數據。

以上,爲吳恩達機器學習第六週Advice for Applying Machine Learning部分的筆記。

相關文章
相關標籤/搜索