機器學習評價指標大彙總

来源:http://www.cnblogs.com/zhaokui/archive/2016/03/02/ml-metric.html
-Advertisement-
Play Games

在使用機器學習演算法的過程中,針對不同場景需要不同的評價指標,在這裡對常用的指標進行一個簡單的彙總。


作者:無影隨想 
時間:2016年3月。 
出處:http://www.zhaokv.com/2016/03/ml-metric.html
聲明:版權所有,轉載請聯繫作者並註明出處

 

在使用機器學習演算法的過程中,針對不同場景需要不同的評價指標,在這裡對常用的指標進行一個簡單的彙總。

一、分類

1. 精確率與召回率

精確率與召回率多用於二分類問題。精確率(Precision)指的是模型判為正的所有樣本中有多少是真正的正樣本;召回率(Recall)指的是所有正樣本有多少被模型判為正樣本,即召回。設模型輸出的正樣本集合為$A$,真正的正樣本集合為$B$,則有:

$\text{Precision}(A,B)=\frac{|A\bigcap B|}{|A|},\text{Recall}(A,B)=\frac{|A\bigcap B|}{|B|}$。

有時候我們需要在精確率與召回率間進行權衡,一種選擇是畫出精確率-召回率曲線(Precision-Recall Curve),曲線下的面積被稱為AP分數(Average precision score);另外一種選擇是計算$F_{\beta}$分數:

$F_{\beta}=(1+\beta^2)\cdot\frac{\text{precision}\cdot\text{recall}}{\beta^2\cdot\text{precision}+\text{recall}}$。

當$\beta=1$稱為$F_1$分數,是分類與信息檢索中最常用的指標之一。

2. ROC

設模型輸出的正樣本集合為$A$,真正的正樣本集合為$B$,所有樣本集合為$C$,我們稱$\frac{|A\bigcap B|}{|B|}$為真正率(True-positive rate),$\frac{|A- B|}{|C-B|}$為假正率(False-positive rate)。

ROC曲線適用於二分類問題,以假正率為橫坐標,真正率為縱坐標的曲線圖,如:

../_images/plot_roc_0011.png

AUC分數是曲線下的面積(Area under curve),越大意味著分類器效果越好。

3. 對數損失

對數損失(Log loss)亦被稱為邏輯回歸損失(Logistic regression loss)或交叉熵損失(Cross-entropy loss)。

對於二分類問題,設$y\in\{0,1\}$且$p={\rm Pr}(y=1)$,則對每個樣本的對數損失為:

$L_{\rm log}(y,p)=-\log{\rm Pr}(y|p)=-(y\log(p)+(1-y)\log(1-p))$。

可以很容易地將其擴展到多分類問題上。設$Y$為指示矩陣,即當樣本$i$的分類為$k$時$y_{i,k}=1$;設$P$為估計的概率矩陣,即$p_{i,k}={\rm Pr}(t_{i,k}=1)$,則對每個樣本的對數損失為:

$L_{\log}(Y_i,P_i)=-\log{\rm Pr}(Y_i|P_i)=\sum\limits_{k=1}^{K}y_{i,k}\log p_{i,k}$。

 4. 鉸鏈損失

鉸鏈損失(Hinge loss)一般用來使“邊緣最大化”(maximal margin)。

鉸鏈損失最開始出現在二分類問題中,假設正樣本被標記為1,負樣本被標記為-1,$y$是真實值,$w$是預測值,則鉸鏈損失定義為:

$L_{\text{Hinge}}(w, y)=\max\{1-wy,0\}=|1-wy|_+$。

然後被擴展到多分類問題,假設$y_w$是對真實分類的預測值,$y_t$是對非真實分類預測中的最大值,則鉸鏈損失定義為:

$L_{\text{Hinge}}(y_w, y_t)=\max\{1+y_t-y_w,0\}$。

註意,二分類情況下的定義並不是多分類情況下定義的特例。

5. 混淆矩陣

混淆矩陣(Confusion Matrix)又被稱為錯誤矩陣,通過它可以直觀地觀察到演算法的效果。它的每一列是樣本的預測分類,每一行是樣本的真實分類(反過來也可以),顧名思義,它反映了分類結果的混淆程度。混淆矩陣$i$行$j$列的原始是原本是類別$i$卻被分為類別$j$的樣本個數,計算完之後還可以對之進行可視化:

混淆矩陣可視化

6. kappa繫數

kappa繫數(Cohen's kappa)用來衡量兩種標註結果的吻合程度,標註指的是把N個樣本標註為C個互斥類別。計算公式為

$\mathcal{K}=\frac{p_o-p_e}{1-p_e}=1-\frac{1-p_o}{1-p_e}$。

其中$p_o$是觀察到的符合比例,$p_e$是由於隨機性產生的符合比例。當兩種標註結果完全相符時,$\mathcal{K}=1$,越不相符其值越小,甚至是負的。

是不是雲里來霧裡去的,現在舉個慄子,對於50個測試樣本的二分類問題,預測與真實分佈情況如下表:

 GROUND
1 0
PREDICT 1 20 5
0 10 15

預測與真實值相符共有20+15個,則觀察到的符合比例為$p_o=(20+15)/50=0.7$。計算$p_e$比較複雜,PREDICT預測為1的比例為0.5,GROUND中1的比例為0.6,從完全隨機的角度來看,PREDICT與GROUND均為1的概率為0.5*0.6=0.3,PREDICT與GROUND均為0的概率為0.5*0.4=0.2,則PREDICT與GROUND由於隨機性產生的符合比例為0.2+0.3=0.5,即$p_e=0.5$,最後求得$\mathcal{K}=\frac{p_o-p_e}{1-p_e}=\frac{0.7-0.5}{1-0.5}=0.4$。

7. 準確率

準確率(Accuracy)衡量的是分類正確的比例。設$\hat{y}_i$是是第$i$個樣本預測類別,$y_i$是真是類別,在$n_{\rm sample}$個測試樣本上的準確率為

${\rm accuracy}=\frac{1}{n_{\rm sample}}\sum\limits_{i=1}^{n_{\rm sample}}1(\hat{y}_i=y_i)$。

其中$1(x)$是indicator function,當預測結果與真實情況完全相符時準確率為1,兩者越不相符準確率越低。

雖然準確率適用範圍很廣,可用於多分類以及多標簽等問題上,但在多標簽問題上很嚴格,在有些情況下區分度較差。

8. 海明距離

海明距離(Hamming Distance)用於需要對樣本多個標簽進行分類的場景。對於給定的樣本$i$,$\hat{y}_{ij}$是對第$j$個標簽的預測結果,${y}_{ij}$是第$j$個標簽的真實結果,$L$是標簽數量,則$\hat{y}_i$與$y_i$間的海明距離為

$D_{Hamming}(\hat{y}_i,y_i)=\frac{1}{L}\sum\limits_{j=1}^L 1(\hat{y}_{ij}\neq y_{ij})$。

其中$1(x)$是indicator function。當預測結果與實際情況完全相符時,距離為0;當預測結果與實際情況完全不符時,距離為1;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。

我們可以通過對所有樣本的預測情況求平均得到演算法在測試集上的總體表現情況,當標簽數量$L$為1時,它等於1-Accuracy,當標簽數$L>1$時也有較好的區分度,不像準確率那麼嚴格。

9. 傑卡德相似繫數

傑卡德相似繫數( Jaccard similarity coefficients)也是用於需要對樣本多個標簽進行分類的場景。對於給定的樣本$i$,$\hat{y}_i$是預測結果,${y}_i$是真實結果,$L$是標簽數量,則第$i$個樣本的傑卡德相似繫數為

$J(\hat{y}_i,y_i)=\frac{|\hat{y}_i\bigcap y_i|}{|\hat{y_i}\bigcup y_i|}$。

它與海明距離的不同之處在於分母。當預測結果與實際情況完全相符時,繫數為1;當預測結果與實際情況完全不符時,繫數為0;當預測結果是實際情況的真子集或真超集時,距離介於0到1之間。

我們可以通過對所有樣本的預測情況求平均得到演算法在測試集上的總體表現情況,當標簽數量$L$為1時,它等於Accuracy。

10. 多標簽排序

在這節我們介紹一些更精細化的多標簽分類效果衡量工具。設真實標簽分類情況為$y\in\{0, 1\}^{n_\text{samples} \times n_\text{labels}}$,分類器預測情況為$\hat{f}\in\mathbb{R}^{n_\text{samples} \times n_\text{labels}}$。

10.1 涵蓋誤差

涵蓋誤差(Coverage error)計算的是預測結果中平均包含多少真實標簽,適用於二分類問題。涵蓋誤差定義為:

$coverage(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\max\limits_{j:y_{ij}=1}\text{rank}_{ij}$,

其中$\text{rank}_{ij}=\left|\left\{k:\hat{f}_{ik}\ge \hat{f}_{ij} \right\}\right|$。可以看到它實際衡量的是真實標簽中有多少排在預測結果的前面。

10.2 標簽排序平均精度

標簽排序平均精度(Label ranking average precision)簡稱LRAP,它比涵蓋誤差更精細:

$LRAP(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\frac{1}{|y_i|}\sum\limits_{j:y_{ij}=1}\frac{|\mathcal{L}_{ij}|}{\text{rank}_{ij}}$,

其中$\mathcal{L}_{ij}=\left\{k:y_{ik}=1,\hat{f}_{ik}\ge\hat{f}_{ij}\right\}$,$\text{rank}_{ij}=\left|\left\{k:\hat{f}_{ik}\ge \hat{f}_{ij} \right\}\right|$。

10.3 排序誤差

排序誤差(Ranking loss)進一步精細考慮排序情況:

$ranking(y,\hat{f})=\frac{1}{n_\text{samples}}\sum\limits_{i=1}^{n_\text{samples}}\frac{1}{|y_i|(n_\text{labels}-|y_i|))}\left|\mathcal{L}_{ij} \right|$,

其中$\mathcal{L}_{ij}=\left\{(k,l):\hat{f}_{ik}<\hat{f}_{ij}, y_{ik}=1, y_{il}=0\right\}$。

二、擬合

擬合問題比較簡單,所用到的衡量指標也相對直觀。假設$y_i$是第$i$個樣本的真實值,$\hat{y}_i$是對第$i$個樣本的預測值。

1. 平均絕對誤差

平均絕對誤差MAE(Mean Absolute Error)又被稱為$l1$範數損失($l1$-norm loss):

${\rm MAE}(y, \hat{y})=\frac{1}{n_{\rm samples}}\sum\limits_{i=1}^{n_{\rm samples}}|y_i-\hat{y}_i|$。

2. 平均平方誤差

平均平方誤差MSE(Mean Squared Error)又被稱為$l2$範數損失($l2$-norm loss):

${\rm MSE}(y, \hat{y})=\frac{1}{n_{\rm samples}}\sum\limits_{i=1}^{n_{\rm samples}}(y_i-\hat{y}_i)^2$。

3. 解釋變異

解釋變異( Explained variance)是根據誤差的方差計算得到的:

${\rm explained variance}(y,\hat{y})=1-\frac{{\rm Var}\{y-\hat{y}\}}{{\rm Var}{y}}$。

4. 決定繫數

決定繫數(Coefficient of determination)又被稱為$R^2$分數:

$R^2(y,\hat{y})=1-\frac{\sum_{i=1}^{n_{\rm samples}}(y_i-\hat{y}_i)^2}{\sum_{i=1}^{n_{\rm samples}}(y_i-\bar{y})^2}$,

其中$\bar{y}=\frac{1}{n_{\rm samples}}\sum_{i=1}^{n_{\rm samples}}y_i$。

三、聚類

1 . 蘭德指數

蘭德指數(Rand index)需要給定實際類別信息$C$,假設$K$是聚類結果,$a$表示在$C$與$K$中都是同類別的元素對數,$b$表示在$C$與$K$中都是不同類別的元素對數,則蘭德指數為:

${\rm RI}=\frac{a+b}{C_2^{n_{\rm samples}}}$,

其中$C_2^{n_{\rm samples}}$數據集中可以組成的總元素對數,RI取值範圍為$[0,1]$,值越大意味著聚類結果與真實情況越吻合。

對於隨機結果,RI並不能保證分數接近零。為了實現“在聚類結果隨機產生的情況下,指標應該接近零”,調整蘭德繫數(Adjusted rand index)被提出,它具有更高的區分度:

${\rm ARI}=\frac{{\rm RI}-E[{\rm RI}]}{\max({\rm RI})-E[{\rm RI}]}$,

具體計算方式參見Adjusted Rand index

ARI取值範圍為$[-1,1]$,值越大意味著聚類結果與真實情況越吻合。從廣義的角度來講,ARI衡量的是兩個數據分佈的吻合程度。

2. 互信息

互信息(Mutual Information)也是用來衡量兩個數據分佈的吻合程度。假設$U$與$V$是對$N$個樣本標簽的分配情況,則兩種分佈的熵(熵表示的是不確定程度)分別為:

$H(U)=\sum\limits_{i=1}^{|U|}P(i)\log (P(i)), H(V)=\sum\limits_{j=1}^{|V|}P'(j)\log (P'(j))$,

其中$P(i)=|U_i|/N,P'(j)=|V_j|/N$。$U$與$V$之間的互信息(MI)定義為:

${\rm MI}(U,V)=\sum\limits_{i=1}^{|U|}\sum\limits_{j=1}^{|V|}P(i,j)\log\left ( \frac{P(i,j)}{P(i)P'(j)}\right )$,

其中$P(i,j)=|U_i\bigcap V_j|/N$。標準化後的互信息(Normalized mutual information)為:

${\rm NMI}(U,V)=\frac{{\rm MI}(U,V)}{\sqrt{H(U)H(V)}}$。

與ARI類似,調整互信息(Adjusted mutual information)定義為:

${\rm AMI}=\frac{{\rm MI}-E[{\rm MI}]}{\max(H(U), H(V))-E[{\rm MI}]}$。

利用基於互信息的方法來衡量聚類效果需要實際類別信息,MI與NMI取值範圍為$[0,1]$,AMI取值範圍為$[-1,1]$,它們都是值越大意味著聚類結果與真實情況越吻合。

3. 輪廓繫數

輪廓繫數(Silhouette coefficient)適用於實際類別信息未知的情況。對於單個樣本,設$a$是與它同類別中其他樣本的平均距離,$b$是與它距離最近不同類別中樣本的平均距離,輪廓繫數為:

$s=\frac{b-a}{\max(a,b)}$。

對於一個樣本集合,它的輪廓繫數是所有樣本輪廓繫數的平均值。

輪廓繫數取值範圍是$[-1,1]$,同類別樣本越距離相近且不同類別樣本距離越遠,分數越高。

四、信息檢索

信息檢索評價是對信息檢索系統性能(主要滿足用戶信息需求的能力)進行評估,與機器學習也有較大的相關性,感興趣的可以參考這篇不錯的博文。

四、總結

上面介紹了非常多的指標,實際應用中需要根據具體問題選擇合適的衡量指標。那麼具體工作中如何快速使用它們呢?優秀的Python機器學習開源項目Scikit-learn實現了上述絕指標的大多數,使用起來非常方便。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 提高OC代碼質量的小心機 一、OC特性 OC 為 C 語言添加了面向對象特性,是其超集; OC 使用動態綁定的消息結構,也就是,在運行時才會檢查對象類型; 接收一條消息後,究竟應執行何種代碼,由運行期環境來決定,而非編譯器;ps:理解C語言的核心概念有助於寫好OC程式,尤其要掌握記憶體模型與指針。 二
  • 本文由CocoaChina--BYB_1132(論壇ID)翻譯 原文:Thoughts On AlamoFire--Swift’s AFNetworking Implementation HTTP協議就是現代開發的同義詞,對於有經驗的iOS開發者來說, 熟悉並儘可能使用這些流行的協議是日常工作的基礎
  • 這是一張QQ空間說說詳情的截圖。 分析: 1、點擊右上角三個點的圖標,在界面底部彈出一個區域,這個區域有一些按鈕提供給我們操作 2、當該區域出現的時候,詳情界面便灰了,也說成透明度變化了 3、當任意選了一個按鈕或者點擊了該區域以外的部分,該區域消失,灰色界面變回亮白色,並執行點擊的按鈕對應的操作 顯
  • 這篇文章主要介紹一些小細節的優化技巧,當這些小技巧綜合使用起來的時候,對於整個App的性能提升還是有作用的,只是不能較大幅度的提升性能而已。選擇合適的演算法與數據結構才應該是你首要考慮的因素,在這篇文章中不會涉及這方面。你應該使用這篇文章中的小技巧作為平時寫代碼的習慣,這樣能夠提升代碼的效率。 通常來
  • 開發中遇到的問題:要實現一個button初始為不可點擊,於是在配置文件中設置了android:clickable="false"運行後發現還是可以點擊,於是寫在了Activity中:btn.setClickable(false);發現還是可以點擊,在網上查資料說android setClickabl
  • MySQL 字元串截取相關函數 在工作中,可能需要將某些欄位按某個分割符組成一個字元串作為欄位值存取到資料庫表中,比如某個任務對應三個結果,分別存儲在不同的數據表中,這時可以將這三個不同表的主鍵按照約定的順序進行組合(主鍵a:主鍵b:主鍵c)。當需要分別去查任務對應類別的詳情信息時,可以截取特定位置
  • 1、鴨子類型,走起來像鴨子,叫起來像鴨子,就是鴨子。函數中使用{ def close(): Unit }作為參數類型,因此任何含有此函數的類都可以作為參數傳遞。好處是不必使用繼承特性。 1 def withClose(closeAble: { def close(): Unit }, 2 op: {
  • 轉載自:http://www.w3school.com.cn/sql/sql_alter.asp ALTER TABLE 語句 ALTER TABLE 語句用於在已有的表中添加、修改或刪除列。 SQL ALTER TABLE 語法 如需在表中添加列,請使用下列語法: ALTER TABLE tabl
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...