西瓜書第二章-模型評估與選擇

模型評估與選擇

1. 經驗誤差與過擬合

  錯誤率(error rate):分類錯誤的樣本數佔樣本總數的比率,反之稱爲精度(accuracy)。精度=1-錯誤率。

  誤差(error):把學習器的實際預測輸出與樣本的真實輸出之間的差異。

  訓練誤差(training error)或經驗誤差(empirical error):學習器在訓練集上的誤差。

  泛化誤差(generalization error):在新樣本上的誤差。我們希望得到一個泛化誤差小的學習器,在新樣本上表現很好的學習器。

  過擬合(overfitting):當學習器把訓練樣本得太好了的時候,很可能已經把訓練樣本自身的一些特點當作所有潛在樣本都具有的一般性質,這可能導致泛化能力降低。

  欠擬合(underfitting):對訓練樣本的一般性質尚未學好。相對過擬合,欠擬合比較容易克服,增加訓練。

  機器學習面臨的問題通常是NP難或者更難,而有效的學習算法必須是在多項式時間內運行完成。

  機器學習中模型選擇(model selection):對候選模型的泛化誤差進行評估,然後選擇泛化誤差最小的那個模型。

2. 評估方法

    通過實驗測試來對學習器的泛化誤差進行評估。需使用一個測試集(testing set)來測試學習器對新樣本的判別能力,然後以測試集的測試誤差(testing error)來作爲泛化誤差的近似。測試集需滿足應該儘可能與訓練集互斥,這樣才能得到泛化能力強的模型。

     當只有一個數據集時,對這個處理產生測試集和訓練集。

    2.1 留出法

           直接將數據集D分成兩個互斥的集合,其中一個訓練集S,一個測試集T,即S並T=D,S交T=空集。在S上訓練出模型後,用T來評估該模型的測試誤差,作爲其泛化誤差的估計。

           注意:訓練集\測試集的劃分應該儘可能保持數據分佈的一致性,避免造成數據劃分過程引入額外的偏差而對最終結果產生影響。使用留出法時,一般要採用若干次隨機劃分、重複進行實驗評估後取平均值作爲留出法的評估結果,同時可得估計結果的標準差。這樣的劃分會導致訓練樣本變小,導致評估結果不夠穩定準確,常見做法是將大約2/3~4/5的樣本用於訓練,剩餘用於測試。

           分層採樣(stratified sampling):在數據的劃分過程中,保留類別比例的採樣方式。

     2.2 交叉驗證法

           將數據集D分成k個大小相似的互斥子集,每個子集儘可能保持數據分佈的一致性,即從D中分層採樣取得的。然後,每次用k-1個子集的並集作爲訓練集,餘下的那個子集作爲測試集;這樣就獲得了k組訓練/測試集,從而進行k次訓練與測試,最終返回的是這k個測試結果的均值。這種方法也稱爲k折交叉驗證(k-fold cross validation).k常爲10.

           交叉驗證法的一特例:留一法(Leave-One-Out),即數據集D中包含m個樣本,且k=m,留一法不受隨機劃分樣本的影響,只有唯一的劃分方式,所以留一法中實際被評估的模型與期望評估的用D訓練出的模型很相似缺陷是在數據集比較大時,訓練m個模型的計算開銷是很大。另外,留一法的估計結果也未必永遠是比其他評估方法準確。

      2.3 自助法

            爲了減少訓練樣本規模不同造成的影響,同時比較高效地進行實驗估計,自助法(可重複採樣或有放回採樣)是一種比較好的解決方案。

            自助法以自助採樣法(bootstrap sampling)爲基礎。給定包含m個樣本的的數據集D,對它進行採樣產生數據集D':每次隨機從D中挑選一個樣本,將其拷貝放入D',然後將其放回初始數據集D中,使得下次採樣可能採到;這個過程重複m次後,得到一個包含m個樣本的數據集D',這就是自助採樣的結果。樣本中m次採樣未被選出的概率是(1-1/m)^m,若m->+oo時,爲1/e=0.368,因此通過自助採樣,初始數據集D中約有36.8%未被選入D'中,於是將D'當作訓練集,D-D'當作測試集。這樣的測試結果稱爲包外估計(out-bag-estimate).

            自助法常用於數據集較小、難以有效劃分訓練/測試集時有用。它還能產生多個不同的訓練集,對集成學習有很大好處。然而,它改變了初始數據集的分佈,會引入偏差。所以,數據集足夠時,常用留出法和交叉驗證法。 

      2.4 調參與最終模型

             調參:對學習算法參數進行設定。許多學習算法的很多參數是在實數範圍內取值,常採用對每個參數選定一個範圍和變化步長,這是一種在計算開銷和性能估計上折中的方法。

            最終模型:在模型評估和選擇後,學習算法和參數配置已選定後,再用數據集D對模型重新訓練一次,這個模型在訓練過程中使用了m個樣本,這纔是我們最終提交給用戶的模型。

            測試數據:在學得模型後在實際使用過程中遇到的數據稱爲測試數據。

            驗證集:在選擇和評估模型中,用於評估測試的數據集。

      2.5 性能度量

            性能度量:衡量模型泛化能力的評價標準,反映任務需求。什麼樣的模型不僅取決於算法和數據,也取決於任務需求。
            迴歸任務的性能度量是均方誤差(mean squared error):
                                        E(f;m)=1/m求和(1->m)(f(xi)-yi)^2,其中xi爲實例,yi爲xi的真實標記。 離散型
            對於數據分佈D和概率密度函數p(x),均方誤差可描述爲:
                                        E(f;m)=積分(x屬於D){(f(x)-y)^2 * p(x)}            連續型

                2.5.1 錯誤率和精度    

                      錯誤率=1/m求和(1->m)(f(xi)!=yi)

                            精度=1/m求和(1->m)(f(xi)==yi)
                                對於連續型,用積分算即可。

                       2.5.2 查準率、查全率和F1

                            查準率:檢索出的信息中有多少是用戶感興趣的。
                            查全率:用戶感興趣的信息有多少是被檢索出來了。
                            對於二分類任務,樣例根據真實結果和預測出來的結果劃分爲TP,FP,TN,FN,由此產生了分類結果混淆矩陣。查準率=TP/(TP+FP)、查全率=TP/(TP+FN)。查準率和查全率是一對矛盾的度量。通常只有一些簡單的任務纔會有較高的查準率和查全率。
                            在很多情形下,根據學習器的預測結果對樣例進行排序,排在前面的是學習器認爲最可能是正例的樣本,相反排在後面的是學習器認爲最不可能是正例的樣本。
                            查準率-查全率曲線(p-R曲線):若一個學習器的P-R曲線被另一個P-R曲線完全包住,則後者性能優於前者。還有一種合理的依據是比較P-R曲線的面積的大小。
                            平衡點(break-even point)(BEP):查準率=查全率時的取值。
                         F1度量:F1=2*P*R/(P+R)=2*TP/(樣例總數+TP-TN),帶入即可得。F1基於查準率和查全率的調和平均定義的:1/2*(1/P+1/R),更重視最小值.
                            F1度量的一般形式=(1+β^2)P*R/((β^2 *P)*R),β=1就是F1,β<1對查準率有很大影響,β>1對查全率有很大影響。
                             在n個二分類混淆矩陣上時類似,求平均值得F1的平均,看西瓜書p32。

                    2.5.3 ROC 與 AUC

                                ROC(Receiver Operating Characteristic):受試者工作特徵,體現一般情況下的泛化性能的好壞,而非截斷點相比於準確率、召回率、F1值等依賴於判決閾值的評估指標,AUC則沒有這個問題。
                                ROC曲線:縱軸是真正例率(True Positive Rate,TPR),橫軸是假正例率(False Positive Rate),
                                TPR=TP/(TP+FN),FPR=FP/(FP+TN).(真假之別)。點(0,1)則對應於將所有正例排在所有反例之前的理想模型。
                                基於有限樣例繪製ROC曲線,現實任務中利用有限個測試樣例來繪製ROC圖,僅能獲得有限個(真正例率,假正例率)座標對。繪圖過程:給定m+個正例和m-個反例,根據學習器預測結果對樣例排序,然後把分類閾值設爲最大(點(0,0)),在(0,0)處標記一個點,然後,把分類閾值依次設爲每個樣例的預測值,即依次將每個樣例劃分爲正例。設前一個標記點爲(x,y),當前若爲真正例,則對應標記點的座標爲(x,y+1/m+);當前若爲假正例,則對應標記點的座標爲(x+1/m-,y),然後用線段連接起來。可以看出,曲線是從(0,0)往右上角延伸。
                               學習器的比較跟P-R圖相似。當ROC曲線出現交叉時,需要比較ROC曲線的面積,即AUC(Area Under ROC Curve),就是與反正例率軸所圍面積。從有限樣例ROC曲線估算,得AUC=求和(1->m-1) (xi+1 - xi)*(1/2)(yi+1 + yi).(利用積分的概念),AUC考慮的是樣本預測的排序質量,因此它跟排序誤差有緊密聯繫(跟預測結果有關)。AUC的直觀含義是任意取一對正反例,正樣本得分大於負樣本得分的概率。因此有排序損失(loss)定義爲 :
                            l rank= 1/(m+ * m-)求和(x+屬於D+)求和(x-屬於D-) (f(x+) <f(x-) + 1/2(f(x-)==f(x+)) )
                            AUC=1- l rank

                2.5.4 代價敏感錯誤率與代價曲線

                            爲權衡不同類型錯誤所造成的不同損失,可爲錯誤賦予“非均等代價”(unequal cost).
                            代價矩陣(cost matrix): cost ij 表示第i類樣本預測爲第j類樣本的代價.一般來說cost ii =0.之前的性能度量大都隱式地假設了均等代價。在非均等代價下,希望最小化總體代價,而不是簡單地最小化錯誤次數。
                            如果在二分類任務中,將代價矩陣的第0類改爲正例,第1類改爲反例,則代價敏感錯誤率(cost-sensitive)
                                    E(f;D;cost)= 1/m(求和(xi屬於D+) (f(xi)!=yi)*cost01 + 求和(xi屬於D-) (f(xi)!=yi)*cost10)
                            在非均等代價下,ROC曲線不能直接反映學習器的期待總體代價,而代價曲線(cost curve) 則可達到。代價曲線的橫軸取值爲[0,1]的正例概率代價 P(+)cost=p*cost01/(p*cost01 +(1-p)*cost10),其中p爲樣例爲正例的概率。縱軸是取值爲[0,1]的歸一化代價  cost norm=(FNR*p*cost01+FPR*(1-p)*cost10)/(p*cost01+(1-p)*cost10),其中FNR=1-TPR.
                            規範化(normalization):將不同變化範圍的值映射到相同的固定範圍中,常見的是[0,1],也是歸一化。
                            代價曲線的繪製:ROC曲線上的每一個點對應代價平面上的一條線段,設ROC曲線上的點的座標爲(FPR,TPR),則可計算出FNR,然後在代價平面上繪製一條從(0,FPR)到(1,FNR)的曲線,線段下的面積即表示了該條件下的期望總體代價;如此將ROC曲線上的每一個點轉化爲代價平面上的一條線段,然後取所有線段的下界,圍成的面積即爲在所有條件下學習器的期望總體代價。


            

           






  

發佈了111 篇原創文章 · 獲贊 113 · 訪問量 46萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章