1. 程式人生 > >coursera機器學習課程第六週——課程筆記

coursera機器學習課程第六週——課程筆記

        本週的內容主要分為兩部分,第一部分:主要內容是偏差、方差以及學習曲線相關的診斷方法,為改善機器學習演算法的決策提供依據;第二部分:主要內容是機器學習演算法的錯誤分析以及數值評估標準:準確率(交叉驗證集的誤差)、查準率(precision)、查全率(recall)以及F值,還有大資料對機器學習的作用,並給出了機器學習演算法的設計流程。

第一部分  

        (一)模型選擇

        在評估假設函式時,我們通常把資料集分成三部分:60%training set, 20%cross validation set, 20%test set. 分別用於擬合函式,模型選擇和預測。


三個集合的誤差如下所示(注意是沒有正則化引數的):


基於上面的劃分,我們對模型選擇的步驟為:

1、用測試集training set對多個模型(例如一次函式、二次函式、三次函式)進行訓練;

2、用交叉驗證集cross validation set驗證上一步得到的多個假設函式,選擇交叉驗證集誤差最小的模型;

3、用測試集test set對上一步選擇的最優模型進行預測。

        下面是模型選擇的過程:


以上問題其實是指關係到模型選擇的中的一點——多項式的次數d。實際上我們還會去考慮這樣兩個引數:正則化引數λ、樣本量m。而這些知識點涉及到我們下面要說的偏差(bias)、方差(variance)。

        (二)偏差(bias)、方差(variance)、學習曲線(learning curve)



根據上圖我們可以發現以下對應關係:

欠擬合(underfit) 高偏差(high bias)
正常擬合(just right) 偏差和方差均較小
過擬合(overfit) 高方差(high variance)

下面介紹特徵量的度d、正則化引數λ、資料量m以及學習曲線:

1、特徵量的度d

        例如上面線性迴歸的例子,當我們用二次函式擬合時,訓練集和交叉驗證集的誤差都很小。但是當使用直線擬合時,不管使用多高階的演算法去減小代價函式,偏差依然很大,這時候即:多項式次數d太小,導致高偏差、欠擬合;類似的當我們使用10次曲線去擬合,每個樣本點都可以經過,訓練集的誤差近乎為0,但是當我們使用交叉驗證集時會發現效果很差,誤差很大,這時候即:多項式次數d太大,導致高方差、過擬合。

        多項式次數d與訓練集、交叉驗證集誤差時間的關係為:


2、正則化引數λ

        正則化引數在第三週的學習中提到過,即λ越大,對θ懲罰越大:θ->0,假設函式是一條水平線,即欠擬合、高偏差;正則化引數越小,相當於正則化作用越弱,即過擬合、高方差。關係如下圖所示:



3、樣本量m和學習曲線learning curve

       學習曲線是誤差與訓練集和交叉驗證集之間的關係,分為高偏差和高方差兩種情況(欠擬合和過擬合)


①高偏差(欠擬合)



從上圖可以看出,高偏差情況下資料量的增加對誤差的減小並沒有效果,即m的增加對於演算法的改進無益。

②高方差(過擬合)



從上圖可以看出,通過增加樣本量訓練集的擬合程度很好,而且誤差逐漸降低,說明m的增加對演算法的改進有一定的幫助。

        (三)如何決策

        綜上所訴,發現以下結論:

        ①訓練集誤差大、交叉驗證集誤差也大:欠擬合、高偏差、多項式次數d太小、λ太大;

        ②訓練集誤差小、交叉驗證集誤差卻很大:過擬合、高方差、多項式次數d太大、λ太下、樣本量太少。

這就為我們改善機器學習演算法提供了依據:


    一般來說,使用一個大型的神經網路並使用正則化來修正過擬合通常比使用一個小型神經網路效果更好。但容易出現的問題是計算量會比較大。

第二部分

    (一)機器學習系統的設計流程

    1、剛開始使用簡單演算法儘快實現,然後再交叉驗證集上實現並測試;

    2、畫出學習曲線(learning curve)來決定是否需要更多的資料、更多的特徵;

    3、誤差分析(error analysis):檢查交叉驗證集中被錯誤分類的樣本,觀察得到特性(例如垃圾郵件分類器例子中:什麼型別的郵件容易被錯誤分類)。注意:誤差分析(error analysis)不能決定是否對提高準確率有幫助。


    以垃圾郵件分類器為例,首先應該快速實現,即使你找不到太多的特徵量,然後使用交叉驗證集去檢驗,人工檢查出錯郵件的共同特徵,通過這些特徵和學習曲線來確定需要增加哪些特徵量以及是否需要更多的資料量。


    (二)數值評估機器學習演算法的標準

1、交叉驗證集誤差(cross validation error)

    設計的擬合函式交叉驗證集誤差很大,那麼肯定不是一個很好的學習演算法,但誤差很小也不能證明該演算法是一個很好的學習演算法,下面介紹一個特殊的類:偏斜類(skewed classes)。

    例如某癌症的患病率是0.5%,設計的一個學習演算法(綜合考慮各種特徵量最小化代價函式)得到交叉驗證集準確率為99%,但是當你設計一種演算法,所有預測結果都為0,此時的交叉驗證集準確率為99.5%,顯然這種預測並不是好的,這種就叫做偏斜類。


所以引入了查準率(precision)和查全率(recall)。

2、查準率(precision)、查全率(recall)與F值

查準率:你預測樣本發病樣本最後真發病的概率;

查全率:一個最終患病的樣本,你之前也預測他患病的概率;

高的查準率意味著,我們在極為確定樣本患病的情況下才告訴他患病(或者理解為不輕易預測他患病);

高的查全率意味著,樣本有可能患病我們就告訴他(或者理解為普世關懷);

表示式如下圖所示:


        例如前面預測癌症的例子,如果使所有的預測結果都為0,此時的準確率為99.5%,但是查全率為0,我們希望得到的學習演算法是不僅要有高的預測準確率,還要有儘可能高的查準率和查全率,所以這種預測所有結果都為0的方法並不好。

        但是查準率和查全率往往不可兼得,所以需要權衡二者——F值。

        F值給出了一個很好判斷查準率和查全率的數值計算標準(評估度量值),具體計算公式如下圖:


    (三)機器學習的資料量

        大量資料往往能大幅度提高學習演算法的最終效能,而不在於你是否使用更高階的求解演算法。

當然要基於兩點前提假設

1.假設樣本的特徵能夠提供充足的資訊進行預測;

你不可能指望只知道房子的面積來預測房價,不管你是不是房地產方面的專家;

2.假設樣本能提供儘可能多的特徵量;

特徵量越多,越不容易出現欠擬合、高偏差的問題;



所以也有這樣的結論成立:

1.資料量越大,高方差、過擬合問題越不可能發生;

2.特徵量越多,高偏差、欠擬合問題越不可能發生。


積累積累

        By 信念