1. 程式人生 > >模型的選擇、評估和優化-上

模型的選擇、評估和優化-上

引入

對於一個機器學習工程而言,我們可以選擇的模型眾多,就之前的章節,我們已經可以選擇:

對於一個模型而言,我們也有很多模型引數需要人工選擇,本章將對模型的評估選擇和優化進行詳細介紹。

概念介紹

過擬合和欠擬合

在機器學習中,我們期望通過訓練集來得到在新樣本上表現的很好的學習器,找出潛在樣本的普遍規律,在訓練過程中,可能會出現兩種情形:

  • 欠擬合:指對訓練樣本的一般性質尚未學好 。
  • 過擬合:學習器把訓練樣本學得“太好”了的時候,可能把訓練樣本自身的一些特點當作了所有潛在樣本都會具有的一般性質,這樣就會導致泛化效能下降。

可以通過下圖來輔助理解:

這裡寫圖片描述

在機器學習中,我們尤其要預防過擬合的發生,但由於機器學習的問題常常是NP難甚至是NP完全的,而有效的演算法必定是多項式時間內完成的,所以只要承認P=NP,就需要承認過擬合無法完全避免

當然,P=NP是目前尚未證明或證偽的結論,我傾向於認為P!=NP。

偏差和方差

對於測試樣本x,其真實標記為y,資料集中的標記為y1,機器學習演算法輸出的標記為y2,演算法輸出的期望值為y¯2,則有以下定義:

var(x)=E((y2y¯2)2)

bias2(x)=E((yy¯2)2)

ϵ2=E((yy1)2)

σ2=E((y1y2)2)

其中E()代表求期望,有數學推導可知:

σ2=var(x)+bias2(x)+ϵ2

總誤差可以分解為方差、偏差與噪聲之和

從直觀理解的角度上看:

  • 偏差刻畫了學習演算法本身的擬合能力
  • 方差刻畫了資料集的變動導致學習效能的變化,也就是學習演算法的穩定性
  • 噪聲表明了資料集標記本身的誤差

查準率和查全率

我們評估一個演算法好壞的時候經常使用錯誤率,即演算法輸出與實際標記不一致的資料所佔的比例

然而有時候,我們會關心更加細緻的資料,例如進行疾病檢查,我們更關心檢查出病症的病人佔總病人數目的多少,或者是檢測出病症的病人有多少真的有疾病,於是引入查準率和查全率:

首先,根據演算法輸出和實際標記,可以將資料分為四類:

真實情況 預測結果
TP FN
FP TN

表格中T和F分別代表True和False,P和N分別代表Positive和negative.

查準率P和查全率R定義如下:

P=TPTP+FP

R=TPTP+FN

查準率表示了被輸出為正例的樣本中真的是正例的比例

查全率表示了所有的正例中被演算法識別出來的比例

模型選擇

一般而言,引數有兩種,一種是模型中的引數,由演算法進行自動的優化;另一種是模型本身自帶的引數,又稱超引數

在機器學習中,超引數是在開始學習過程之前設定值的引數,而不是通過訓練得到的引數資料。通常情況下,需要對超引數進行優化,給學習機選擇一組最優超引數,以提高學習的效能和效果。

例如,我們再進行線性迴歸時,可以選擇很多種形式的函式,例如:

y1=θ0+θ1x

y2=θ0+θ1x+θ2x2

y2=θ0+θ1x+θ2x2+θ3x3......

也就是說,我們要選定到底哪個形式的模型效果會比較好,為了得到最好的模型,我們將資料集分為三個部分。

  • 訓練集(60%)
  • 測試集(20%)
  • 交叉驗證集(20%)

其中訓練集用於演算法的訓練,由此,我們可以得到很多個不同的模型,再使用交叉驗證集分別測試每個模型的泛化能力,選擇其中最優的模型。

最後,使用測試集來測試最優模型的泛化能力,為什麼不直接使用上一步的交叉驗證集呢?因為, 這個交叉驗證集誤差是我們通過對比選擇出來的, 它在這個資料集上肯定是最優的, 相當於我們已經看到了這些資料, 用它來代表對未知資料的泛化能力顯然不行。

在劃分資料集的過程中,要保證資料集的劃分儘可能保持資料分佈的一致性,即使得它們獨立同分布,資料集劃分的方法一般而言有以下幾種:

  • 留出法:最基本的抽樣方法,最好使用分層抽樣保證資料分佈一致性,也可以做多次劃分,最後返回在每次劃分上測試結果的平均值,可以避免偏差

    • 優點:劃分簡單
    • 缺點:可能產生偏差,若採取多次取樣,則訓練成本過高
  • 交叉驗證法:將資料集劃分為k個大小相似的資料集,注意使用分層抽樣。每次使用一個小資料集做測試集,其他k-1個做訓練集,輪流進行k次,最後返回的是測試結果的平均值。

    自助法:假設有m個數據的資料集,每次有放回的從其中抽取一個樣本,執行m次,最終大概有36.8%的資料未被抽取到,當做測試集,其餘當做訓練集。

    • 優點:在資料集較小時用處較大,劃分出的多個數據集有利於整合學習。
    • 缺點:改變了原資料樣本的分佈,會引入偏差