吳恩達機器學習個人筆記(五)-關於機器學習的誤差分析

1關於機器學習的改進

        當我們使用機器學習算法解決實際問題時,可能在得到學習參數後,輸入新的數據後效果不是很理想。即運用訓練好了的模型來預測未知數據時發現了較大的誤差。那麼我們可以採用下面的方法來提高機器學習算法的性能。

         1.獲取更多的訓練樣本

         2. 嘗試減少特徵的數量

         3.嘗試獲的更多的特徵

         4. 嘗試增加多項式特徵

         5.嘗試減少正則化程度\lambda

         5.嘗試增加正則化程度\lambda

       我們不應該隨機選擇上面的某種方法來改進我們的算法,而是運用一些機器學習診斷法來幫助我們知道上面哪些方法對我們的算法是有效的。“診斷法”的意思是:這是一種測試法,你通過執行這種測試,能夠深入瞭解某種算法到底是否有用。

2評估假設( Evaluating a Hypothesis)

       當我們確定學習算法的參數時,通常是通過選擇參量來使訓練誤差(代價函數J)最小化.代價函數最小並不代表這個已經訓練好的學習算法非常的好,因爲可能過擬合。該情況如下所示

                     

        爲了檢驗算法是否過擬合,我們將數據集分爲訓練集和測試集,通常使用70%的數據作爲訓練集,用剩下30%的數據作爲測試集。訓練集和測試集均需要含有各種類型的數據,通常要先對數據進行洗牌,然後再分爲訓練集和測試集,如下所示

                     

在通過測試集學習具體的參數後,對測試集運用該模型計算誤差,如下所示

           1 對於線性迴歸模型,利用測試集數據計算代價函數J

           2對於邏輯迴歸模型,可以利用測試數據集來計算代價函數

 3模型選擇和交叉驗證集(Model Selection and Train_Validation_Test Sets)

         假設我們要在10個不同次數的二次項模型之間選擇:

          1.h_{\theta }(x)=\theta _{0}+\theta _{1}x

          2.h_{\theta }(x)=\theta _{0}+\theta _{1}x+\theta _{2}x^{2}

          3.h_{\theta }(x)=\theta _{0}+\theta _{1}x+\cdots +\theta _{3}x^{3}

           \vdots

          10.h_{\theta }(x)=\theta _{0}+\theta _{1}x+\cdots +\theta _{10}x^{10}

         雖然越高次數的多項式模型越能夠很好的適應我們的訓練數據集,但是適應訓練數據集並不代表能推廣至一般情況,爲了防止過擬合,我們需要使用交叉驗證集來幫助選擇具體的模型。通常我們是使用60%的數據作爲訓練集,使用 20%的數據作爲交叉驗證集,使用20%的數據作爲測試集。如下圖所示

                                                

           一般選擇模型的方法爲:

          1. 使用訓練集訓練出10個模型(假設爲10個模型)

          2. 用10個模型分別對交叉驗證集計算得出交叉驗證誤差(代價函數的值)

          3. 選取代價函數值最小的模型

          4. 用步驟3中選出的模型對測試集計算得出推廣誤差(代價函數的值)

4診斷偏差和方差(Diagnosing Bias vs. Variance)

          當運行一個學習算法時,如果算法表現的不理想,那麼多半出現兩種情況:要麼偏差比較大或者是方差比較大。換句話講就是要麼是欠擬合,要麼是過擬合。這兩種情況如下所示

          

         我們判斷是偏差還是方法主要是將訓練集的代價函數與交叉驗證的代價函數進行比較,總結如下所示:

         訓練集誤差和交叉驗證集誤差近似時:偏差/欠擬合

         交叉驗證集誤差遠大於訓練集誤差時:方差/過擬合

5正則化和偏差/方差(Regularization and Bias_Variance)

      之前訓練模型中,一般會使用正則化方法來防止過擬合,但是由於不知道正則化的參數\lambda選擇大小,有可能正則化程度太高或者太小,即在選擇\lambda時也要考慮多項式的問題。 我們選擇一系列的想要測試的 λ 值,通常是 0-10之間的呈現2倍關係的值(如:0,0.01,0.02,0.04,0.08,0.15,0.32,0.64,1.28,2.56,5.12,10 共12個)。我們同樣把數據分爲訓練集、交叉驗證集和測試集。

                              

   選擇λ 的方法爲:

   1.使用訓練集訓練出12個不同程度正則化的模型

   2.用12個模型分別對交叉驗證集計算的出交叉驗證誤差

   3.選擇得出交叉驗證誤差最小的模型

   4.運用步驟3中選出模型對測試集計算得出推廣誤差,我們也可以同時將訓練集和交叉驗證集模型的代價函數誤差與λ的值繪製在一張圖表上:

                  

    當 λ  較小時,訓練集誤差較小(過擬合)而交叉驗證集誤差較大。隨着 λ  的增加,訓練集誤差不斷增加(欠擬合),而交叉驗證集誤差則是先減小後增加。

       總之來講,評價學習算法的效果要採用與訓練集不同的數據集進行評估,如果學習算法對訓練數據適應的過好,可能會產生過你擬合的問題,因此我們要注意多項式的選擇與正則化參數的選擇。當我們通過測試數據集知道過擬合或者是欠擬合時可以採用之前上述的措施,但是要依據情況不同而進行選擇

      1.獲取更多的訓練實例——解決高方差

      2.嘗試減少特徵的數量——解決高方差

      3.嘗試獲得更多的特徵——解決高偏差

      4.嘗試增加多項式特徵——解決高偏差

      5.嘗試減少正則化程度λ——解決高偏差

      6.嘗試增加正則化程度λ——解決高方差

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章