1. 程式人生 > 其它 >二、機器學習模型評估

二、機器學習模型評估

二、機器學習模型評估

2.1 模型評估:基本概念

  • 錯誤率(Error Rate)

    • 預測錯誤的樣本數a佔樣本總數的比例m
\[E=\frac{a}{m} \]
  • 準確率(Accuracy)

    準確率=1-錯誤率準確率=1−錯誤率

  • 誤差(Error)

    • 學習器的實際預測輸出與樣本的真實輸出之間的差異
  • 訓練誤差(Training Error)或經驗誤差(Empirical Error)

    • 學習器在訓練集上的誤差
  • 泛化誤差(Generalization Error)

    • 學習器在新樣本上的誤差
  • 解釋與泛化

    • 當模型在訓練集上表現很好而在新樣本上誤差很大時,稱為過擬合;反之模型在訓練集上誤差就很大時,稱為 欠擬合
  • 過擬合和欠擬合

2.2 判別方法

判別方法:誤差

引起誤差的原因主要是因為偏差方差

  • 偏差(Bias)
    • 描述的是預測值(估計值)的期望與真實值之間的偏離程度。偏差越大,越偏離真實資料。
  • 方差(Variance)
    • 描述的是預測值的變化範圍,離散程度,也就是離其期望值的距離。方差越大,資料的分佈越分散。
  • 偏差和方差對誤差Error的影響可以表示為
\[Error = Bias + Variance + Noise \]
  • 偏差(bias)造成的誤差 - 準確率和欠擬合
    如果模型具有足夠的資料,但因不夠複雜而無法捕捉基本關係,即如果模型不適當,則會出現偏差。這樣一來,模型一直會系統地錯誤表示資料,從而導致預測準確率降低出現欠擬合。
  • 方差(variance)造成的誤差 - 精確率和過擬合
    方差就是指模型過於貼近訓練資料,以至於沒辦法把它的結果泛化。而泛化正是機器學習要解決的問題,如果一個模型只能對一組特定的資料有效,換了資料就無效了,我們就說這個模型過擬合。

判別方法:學習曲線

2.3 解決方法

  • 欠擬合通常容易解決
    • 增加資料增大訓練次數增大學習率使用更復雜的模型 等。
  • 過擬合則很難解決
    • 常用的方法包括 簡化模型減少特徵更多的資料交叉驗證正則化DropoutShuffling 等。

當心陷阱:維度災難(Curse of Dimensionality)

當維數提高時,模型空間的體積提高太快,因而可用資料變得很稀疏。
在高維空間中,所有的資料都很稀疏,從很多角度看都不相似,因而平常使用的資料組織策略變得極其低效。
為了獲得在統計學上正確並且有可靠的結果,用來支撐這一結果所需要的資料量通常隨著維數的提高而呈指數級增長。

如何避免維度災難

實際上並沒有一種固定的方法避免維度災難,解決方法需要結合資料集和所選的模型。訓練資料集越小,則用到的特徵應當越少。

另外,對於諸如神經網路、kNN、決策樹等泛化不好容易過擬合的分類器,維度應當適當的減少。而對於樸素貝葉斯和線性分類器等不太複雜的分類器,特徵可以適當的增大。

2.4 資料集拆分

為了得到泛化誤差小的模型,並避免過擬合,在構建機器模型時,通常將資料集拆分為相互獨立訓練資料集驗證資料集測試資料集

  • 訓練資料集(Train Dataset)用來構建機器學習模型
  • 驗證資料集(Validation Dataset)輔助構建模型,用於在構建過程中評估模型,為模型提供無偏估計,進而調整模型超引數
  • 測試資料集(Test Dataset)用來評估訓練好的最終模型的效能

為了劃分這幾種資料集,可以選擇採用留出法K-折交叉驗證法或者自助法等多種方法。這些方法都對資料集有一些基本的假設,包括:

  • 資料集是隨機抽取且獨立同分布的
  • 分佈是平穩的,不會隨時間發生變化
  • 始終從同一個分佈中抽取樣本

陷阱:請勿對測試資料集進行訓練。

自助法的效能評估變化小,在資料集小、難以有效劃分資料集時很有用。另外,自助法也可以從初始資料中產生多個不同的訓練集,對整合學習等方法有好處。

然而,自助法產生的資料集改變了初始資料的分佈,會引入估計偏差。因而,資料量足夠時,建議使用留出法和交叉驗證法。

資料集拆分:留出法

留出法(hold-out)直接將資料集劃分為互斥的集合,如通常選擇 80% 資料作為訓練集,20% 作為測試集。

需要注意的是保持劃分後集合數據分佈的一致性,避免劃分過程中引入額外的偏差而對最終結果產生影響。

通常來說,單次使用留出法得到的結果往往不夠穩定可靠,一般採用若干次隨機劃分、重複進行實驗評估後取平均值作為留出法的評估結果。

資料集拆分:K-折交叉檢驗法

機器學習中,演算法模型效能比較是比較複雜的。

  • 我們希望比較的是泛化效能,而實際中只能得到測試集上的效能,兩者的結果未必相同
  • 測試集上的效能跟測試集本身的選擇有很大關係
  • 很多機器學習演算法本身有一定的隨機性,即便用相同引數執行在同一個測試集上,多次的執行的結果也有可能不同

資料集拆分:K-折交叉檢驗法

初始取樣分割成K個子樣本,一個單獨的子樣本被保留作為驗證模型的資料,其他K-1個樣本用來訓練。交叉驗證重複K次,每個子樣本驗證一次,平均K次的結果或者使用其它結合方式,最終得到一個單一估測。這個方法的優勢在於,同時重複運用隨機產生的子樣本進行訓練和驗證,每次的結果驗證一次。方差Variance隨著k的增大而減小。

K常常取10,所以又稱為十折交叉檢驗。

引數調節

  • 引數調節
    • 簡稱調參(parameter tuning),在進行模型評估與選擇時,除了要對適用學習演算法進行選擇,還需對演算法引數進行設定的過程稱引數調節;
  • 常用方法
    • 對每個引數選定一個範圍和變化步長,例如在[0,0.2][0,0.2]範圍內以0.05為步長,則實際要評估的候選引數值有5個,最終是從這5個候選值中產生選定值。

網格搜尋

網格搜尋法是指定引數值的一種窮舉搜尋方法,通過將估計函式的引數通過交叉驗證的方法進行優化來得到最優的學習演算法。

即將各個引數可能的取值進行排列組合,列出所有可能的組合結果生成引數網格。

然後將各組合用於訓練,並使用交叉驗證對錶現進行評估。

在擬合函式嘗試了所有的引數組合後,返回一個合適的分類器,自動調整至最佳引數組合,可以獲得引數值

對SVM的C引數和gamma的網格搜尋視覺化結果如上圖所示,可知{C=1.0,gamma = 0.1}時效果最好。

2.5 模型評價

  • 分類模型
  • 迴歸模型
  • 聚類模型

模型評價:分類模型評價

  • 分類模型是通過訓練資料建立預測模型,並利用模型將需要預測的資料樣本劃分到已知的幾個類別中的過程。
  • 機器學習中常見分類演算法:邏輯迴歸、決策樹、樸素貝葉斯等

分類模型評價:混淆矩陣

  • 標籤
    • 在分類問題中,每一個樣本都存在兩種角度的標籤: 一個是樣本真實的標籤,一個是模型預測的標籤。
  • 混淆矩陣
    • 根據每一個樣本的兩種角度的標籤,可以得到一個混淆矩陣(Confusion Matrix)。混淆矩陣中的每一列代表預測類別 ,每一列的總數表示預測為該類別的樣本的數目。每一行代表了樣本的真實歸屬類別 ,每一行的資料總數表示該類別的樣本的數目。

分類模型的評價指標主要基於混淆矩陣。對於二分類問題,每一個樣本都可以劃分到以下四種類型中:

  • 真正(True Positive , TP):樣本真實類別是正向的,模型預測的類別也是正向的
  • 真負(True Negative , TN):樣本真實類別是負向的,模型預測的類別也是負向的
  • 假正(False Positive , FP):樣本真實類別是負向的,模型預測的類別是正向的(取偽)
  • 假負(False Negative , FN):樣本真實類別是正向的,模型預測的類別是負向的(去真)

分類模型評價:多分類混淆矩陣

分類模型評價:評價指標

  • 準確率(Accuracy)
  • 精確率(Precision)
  • 召回率(Recall)
  • F1值(F1 score)
  • ROC和AUC
  1. 分類模型評價指標:準確率

在分類問題中最常見的指標是準確率(accuracy),它表示模型預測正確的樣本比例,即將正的判定為正,負的判定為負。

準確率的定義如下:

\[accuracy=\frac{TP+TN}{TN+FN+FP+TP} \]

在不均衡資料中,準確率無法很好地度量模型的好壞。

例如在文字情感分類資料集中,正面的樣本佔比為80%,負面的內容佔比只有20%。

如果一個分類模型將所有的樣本都預測為正面,這個模型顯然是一個無用的模型,但是它的準確率卻可以達到80%。

對於不均衡資料,精確率和召回率是比準確率更好的效能評價指標。

總樣本量:100

\[accuracy=\frac { TP+TN }{ TN+FN+FP+TP } =\frac { 80+0 }{ 0+0+20+80 } =80 \]
  1. 分類模型評價指標:精確率

精確率(precision)又稱查準率,是指正確預測的正樣本佔所有預測為正樣本的比例。

\[precision=\frac{TP}{TP+FP} \]
  1. 分類模型評價指標:召回率

召回率(recall)又稱查全率、靈敏度和命中率,是指樣本中被正確預測的樣本比例。

\[recall=\frac{TP}{TP+FN} \]
  1. 分類模型評價指標:$$F_{\beta}$$值

單獨考慮精確率和召回率是片面的,而F值則是一個綜合考慮精確率和召回率的指標。

\[F_{\beta}=\frac{(1+\beta^2)precision\times recall}{\beta^2\times precision+ recall} \]

其中β為正數,其作用是調整精確率和召回率的權重。β越大,召回率的權重更大;β越小,則精確率的權重更大。當1β=1時,精確率和召回率的權重一樣,此時稱為F_1F1值,它是精確率和召回率的調和平均數。

  1. 分類模型評價指標:假正率

假正率(False Positive Rate)為被預測為正的負樣本結果數除以負樣本實際數的比值。

假正率的定義為

\[FPR=\frac{FP}{FP+TN} \]
  1. 分類模型評價指標:ROC曲線

ROC曲線通過召回率(TPR)和假正率(FPR)兩個指標進行繪製圖形,是一個畫在ROC空間的曲線,橫座標為FPR, 縱座標為TPR。

  • (TPR=0,FPR=0)
    • 把每個例項都預測為負類的模型
  • (TPR=1,FPR=1)
    • 把每個例項都預測為正類的模型
  • (TPR=1,FPR=0)
    • 理想模型

一個好的分類模型應該儘可能靠近圖形的左上角,而一個隨機猜測模型應位於連線點(TPR=0,FPR=0)和(TPR=1,FPR=1)的主對角線上。

  1. 分類模型評價指標:AUC

AUC就是處於ROC曲線下方的那部分面積的大小。通常AUC介於0.5到1.0之間,較大的AUC代表了較好的模型效能。

  • 如果模型是完美的,那麼它的 AUC=1AUC=1
  • 如果模型是個簡單的隨機猜測模型,那麼它的 AUG=0.5AUG=0.5
  • 如果一個模型好於另一個,則它的曲線下方面積相對較大。
  • 一般來說,AUC大於0.75可以認為是一個比較理想的模型。

分類模型評價指標:應用場景

  • 如果需要你使用機器學習進行地震預報,您會選擇哪個指標作為演算法模型的評價指標?
  • 如果需要你使用機器學習認定犯罪嫌疑人,您會選擇哪個指標作為演算法模型的評價指標?

迴歸模型評價指標

迴歸模型的預測值一般都是連續的。評價模型的指標沒有統一的標準。下面介紹三個常用的方法:

  • 平均絕對誤差
  • 均方誤差
  • 決定係數R^2R2

迴歸模型評價指標:平均絕對誤差

平均絕對誤差(Mean Absolute Error,MAE)是所有單個觀測值與算術平均值的偏差的絕對值的平均。

\[MAE=\frac{1}{n}\sum_{i=1}^n|\hat{y_i}-y_i| \]

迴歸模型評價指標:均方誤差

均方誤差(Mean Squared Error,MSE)是衡量"平均誤差"的一種較方便的方法,可以評價資料的變化程度。
均方根誤差(Root Mean Square Error,RMSE)是均方誤差的算術平方根,有時也用RMSE對迴歸模型進行評價。

\[MSE=\frac{1}{n}\sum_{i=1}^n(\hat{y_i}-y_i)^2 \]

迴歸模型評價指標:決定係數

在統計學中,通常使用決定係數對迴歸模型進行評價。假設樣本真實值的平均值為:

\[y=\frac{1}{n}\sum_{i=1}^n \]
  • 殘差平方和為
\[SSE=\sum_{i=1}^n(y_i-\hat{y_i})^2 \]
  • 總平方和為
\[SST=\sum_{i=1}^n(y_i-\bar{y_i})^2 \]

R^2R2的計算公式為

\[R^2(y,\hat{y})=1-\frac{SSE}{SST} \]
  • 通常R^2R2取值範圍為[0,1][0,1]
  • R^2R2越趨近於1,說明迴歸效果越好。
  • R^2R2越趨近於0,說明迴歸效果越差。

在一些迴歸效果非常差的情況下,殘差平方和可能大於總平方和,此時可能小於0。

決定係數計算例子(重慶2017鏈家房價預測)

聚類模型評價指標

聚類模型的效能指標主要分為內部指標(Internal Index)和外部指標(External Index)兩類。

  • 內部指標適用於無標註資料,根據聚類結果中簇內相似度和簇間分離度進行聚類質量評估;
  • 外部指標適用於有標註資料,將聚類結果與已知類標籤進行比較。
  • 內部指標
    • DB 指數
    • 輪廓係數
  • 外部指標
    • Rand指數
    • 調整Rand指數

聚類模型評價:DB指數

聚類模型的目標是使得簇內資料儘量相似,不同簇之間的資料儘量不相似。

DB指數正是基於這個思想所構建的指標,它表示簇內距離與簇內距離與簇間距離之比,DB的值越小說明聚類效果越好。

其中,K是聚類數目,W_i表示類C_i中的所有樣本到其聚類中心的平均距離,W_j表示類C_i中的所有樣本到類C_j中心的平均距離,Cij表示類C_i和C_j中心之間的距離。

DB越小表示類與類之間的相似度越低,從而對應越佳的聚類結果。

聚類模型評價:輪廓係數

輪廓係數結合了內聚度和**分離度兩種因素,可以用來在相同原始資料的基礎上用來評價不同演算法、或者演算法不同執行方式對聚類結果所產生的影響。對於樣本ii的輪廓係數其計算公式:

\[s(i)=\frac{b(i)-a(i)}{max(a(i),b(i))} \]
  • a(i)=average(樣本i到所有它屬於的簇中其它點的距離)a(i)=average(樣本i到所有它屬於的簇中其它點的距離),表示ii向量到同一簇內其他點不相似程度的平均值;
  • b(i)=min(樣本i到所有非本身所在簇的點的平均距離)b(i)=min(樣本i到所有非本身所在簇的點的平均距離),表示樣本ii到其他簇的平均不相似程度的最小值。
\[s(i)=\left\{ \begin{array}{cc} 1-\frac{a(i)}{b(i)},a(i)<b(i) \\ 0, \qquad a(i)=b(i) \\ \frac{a(i)}{b(i)}-1,a(i)>b(i) \end{array} \right. \]
  • s(i)s(i)接近1,則說明樣本ii聚類合理
  • s(i)s(i)接近-1,則說明樣本ii更應該分類到其他類
  • s(i)s(i)接近0,則說明樣本ii在兩個類的邊界上

聚類模型評價:Rand指數

Rand指數(Rand Index,RI)類似於分類模型中的準確度指標,其具體定義如下:

  • 設資料集XX的一個聚類結構為

C ={C_1,C_2,\dots, C_m}C=C1,C2,…,C**m

  • 資料集已知的劃分為

P ={ P_1,P_2,\dots,P_s }P=P1,P2,…,P**s ,

  • 可通過比較CC和PP的混淆矩陣來評價聚類的質量。

純度(Purity)方法是極為簡單的一種聚類評價方法,只需計算正確聚類的文件數佔總文件數的比例

互資訊(Mutual Information)是純度的另一種表述,作用與純度(Purity)一致。建立在熵的概念基礎上,又稱資訊增益。

檢視sklearn的幫助文件

  • 我們可以通過help()函式來檢視sklearn的幫助文件
    • 匯入sklearn庫:import sklearn
    • 檢視sklearn幫助:help(sklearn)
小石小石摩西摩西的學習筆記,歡迎提問,歡迎指正!!!