第六周.學習曲線、機器學習系統的設計 Learning Curve and Machine Learning System Design 關鍵詞 學習曲線、偏差方差診斷法、誤差分析、機器學習系統的數值評估、大數據原理 概要 本周內容分為兩講: 第一講.Advice for applying machine learning,主要內容是關于偏差、方差以及學習曲線為代表的診斷法,為改善機器學習算法的決策提供依據; 第二講.Machine learning system design,主要內容是機器學習算法的數值評估標準:準確率(交叉驗證集誤差)、查準率precision、召回率recall以及F值,給出了機器學習系統的設計流程. ==============================第一講============================== ========= 關于偏差、方差以及學習曲線為代表的診斷法 ========== (一)模型選擇Model selection 在評估假設函數時,我們習慣將整個樣本按照6:2:2的比例分割:60%訓練集training set、20%交叉驗證集cross validation set、20%測試集test set,分別用于擬合假設函數、模型選擇和預測。
三個集合對應的誤差如下圖所示(注意沒有不使用正則化項):
基于以上劃分,我們有模型選擇的三個步驟: step1.用測試集training set對多個模型(比如直線、二次曲線、三次曲線)進行訓練; step2.用交叉驗證集cross validation set驗證step1得到的多個假設函數,選擇交叉驗證集誤差最小的模型; step3.用測試集test set對step2選擇的最優模型進行預測;
以線性回歸為例,假設你利用線性回歸模型最小化代價函數J(θ)求解得到一個假設函數h(x),如何判斷假設函數對樣本的擬合結果是好是壞,是不是說所有點都經過(代價函數J最小)一定是最理想的? 或者這樣說,給你下圖的樣本點,你是選擇直線、二次曲線、還是三次曲線......作為假設函數去擬合呢?
以下圖為例,你的模型選取其實直接關系到最終的擬合結果: ======================================= 欠擬合Underfit || 高偏差High bias 正常擬合Just right || 偏差和方差均較小 過擬合Overfit || 高方差High variance =======================================
★★★以上問題只是模型選擇過程中需要考慮的一點------多項式次數d,實際上,我們還會去考慮這樣兩個參數:正則化參數λ、樣本量m. 下面我將從多項式次數d、正則化參數λ、樣本量m這三個量與擬合結果之間的關系做一個簡單的概括.
(二)偏差、方差、學習曲線Bias、Variance、Learning curve 1.特征量的度d 還是之前的例子,用二次曲線擬合,訓練集和交叉驗證集的誤差可能都很小;但是你用一條直線去擬合,不管使用多高級的算法去減小代價函數,偏差仍然是很大的,這時候我們就說:多項式次數d過小,導致高偏差、欠擬合;類似的當用10次曲線去擬合,樣本點都能經過,對應的代價函數(誤差)為0,但是帶入交叉驗證集你會發現擬合很差,這時候我們說:多項式次數d過大,導致高方差、過擬合。 所以,多項式次數d與訓練集、交叉驗證集誤差的關系如下圖:
2.正則化參數λ 正則化參數我們在第三周有介紹到,正則化參數λ越大,對θ懲罰的越厲害,θ->0,假設函數是一條水平線,欠擬合、高偏差;正則化參數越小,相當于正則化的作用越弱,過擬合、高方差。關系如下圖所示:
3.樣本量m與學習曲線Learning curve 學習曲線是樣本量與訓練集、交叉驗證集誤差之間的關系,分為高偏差和高方差兩種情況(欠擬合和過擬合)。 ①高偏差(欠擬合): 根據下圖右部分分析有,通過增加樣本量兩者誤差都很大,即m的增加對于算法的改進無益。
②高方差(過擬合): 根據下圖右部分分析有,通過增加樣本量訓練集樣本擬合程度很好(過擬合),訓練集誤差很小,即m的增加對于算法的改進有一些幫助。
★★★(三)如何決策
綜上所述,你會發現有這樣的一個結論,就是: ◆訓練集誤差大、交叉驗證集誤差也大:欠擬合、高偏差、多項式次數d太小、λ太大; ◆訓練集誤差小、交叉驗證集誤差卻很大:過擬合、高方差、多項式次數d太大、λ太下、樣本量太少。 這就為我們改善機器學習算法提供了依據。
==============================第二講============================== ======= 機器學習系統的設計 ====== (一)機器學習系統的設計流程 Step1.使用快速但不完美的算法實現; Step2.畫出學習曲線,分析偏差、方差,判斷是否需要更多的數據、增加特征量....; Step3.誤差分析:人工檢測錯誤、發現系統短處,來增加特征量以改進系統。
以垃圾郵件的分類為例:起初你可能找不到太多特征量,除了$、buy、discount等關鍵詞,這時候你應該先快速實現它,然后用交叉驗證集去檢驗,人工去檢查出錯的郵件的共同特征(比如你發現http超鏈接比較多等一開始你沒想到的特征量);最后你就可以把這些特征量加進你的模型中去重新實驗去優化。
(二)數值評估機器學習算法的標準 1.交叉驗證集誤差(accuracy) 這個很好想到,設計的擬合函數如果用交叉驗證集檢驗誤差很大,那么肯定不是一個很好的學習算法; 但,是不是說誤差很低就一定是好的學習算法呢?舉個例子,這個例子也叫斜偏類: 某種癌癥的患病率是0.50%,你設計的一個學習算法(綜合考慮各種特征量最小化代價函數)得到交叉驗證集準確率99.0%,但實際上有這樣的一種預測---直接認為樣本不發?。ú还軜颖居性鯓拥奶卣髁浚慕徊骝炞C集準確率卻有99.5%,這種預測是不是好的?顯然并不是我們的目的。
所以評估學習算法優劣還有下面一個標準:盡可能高的查準率和召回率。 2.查準率、召回率與F值precision、recall、F score 查準率:你預測樣本發病樣本最后真發病的概率; 召回率:一個最終患病的樣本,你之前也預測他患病的概率; 高的查準率意味著,我們在極為確定樣本患病的情況下才告訴他患病(或者理解為不輕易預測他患病); 高的召回率意味著,樣本有可能患病我們就告訴他(或者理解為普世關懷); 表達式如下圖所示:
還是拿之前癌癥的例子,你始終預測不患病y=0,召回率就為0,我們希望得到的學習算法是不僅有高的預測準確率,還要有盡可能高的查準率和召回率,所以這種簡單的預測y=0的方法并不好。 查準率和召回率有時候不可兼得,所以需要權衡二者,基于二者的判斷標準---F值。 F值給出了一個很好判斷查準率和召回率的數值計算標準(評估度量值),計算公式見下圖:
(三)大數據原理Large data rationale 大量數據往往能大幅度提高學習算法的最終性能,而不在于你是否使用更高級的求解算法等,所以有這樣的一句話: "It's not who has the best algorithm that wins.It's who has the most data." 當然要基于兩點前提假設: 1.假設樣本的特征能夠提供充足的信息進行預測; 你不可能指望只知道房子的面積來預測房價,不管你是不是房地產方面的專家; 2.假設樣本能提供盡可能多的特征量; 特征量越多,越不容易出現欠擬合、高偏差的問題;
所以也有這樣的結論成立: 1.數據量越大,高方差、過擬合問題越不可能發生; 2.特征量越多,高偏差、欠擬合問題越不可能發生;
================================結語============================== 本周主要講述了關于偏差、方差以及學習曲線為代表的診斷法和機器學習算法的數值評估標準:準確率、查準率、召回率以及F值,重點是如何根據訓練集和交叉驗證集誤差的大小對系統的改進,或者說如何對機器學習系統做一個評估和改良。這一章的內容以經驗性的內容為多,希望對后來的學習者能起到些許幫助。
|
|