對於一個binary classification的問題來說,我知道可以比較Area Under PR,Area Under ROC來判斷到底是哪個模型有更好的性能。但是我的理解是這兩個都是只能針對二分類問題而言,因為真假陽性都僅僅是Positive和Negative的比較。那麼如果是對一個multi-classification的問題,使用不同的模型進行模擬,該用什麼來判斷到底哪個模型比較好?accuracy?


提供一種多見的評價。

1.二分類

F1 score = 2 * P * R / (P + R)

其中,準確率(precise) P = TP / (TP + FP),召回率(recall) R = TP / (TP + FN)

2.多分類[1]

Macro F1: 將n分類的評價拆成n個二分類的評價,計算每個二分類的F1 score,n個F1 score的平均值即為Macro F1。

Micro F1: 將n分類的評價拆成n個二分類的評價,將n個二分類評價的TP、FP、RN對應相加,計算評價準確率和召回率,由這2個準確率和召回率計算的F1 score即為Micro F1。

一般來講,Macro F1、Micro F1高的分類效果好。Macro F1受樣本數量少的類別影響大。

[1] Liu, C., Wang, W., Wang, M., Lv, F., Konan, M. (2017). An efficient instance selection algorithm to reconstruct training set for support vector machine. Knowledge-Based Systems, 116(1), 58-73.


謝邀。

多分類的話,accuracy不再是惟一的評價指標。與accuracy相對應的,有precision和recall (精確度和召回率)。注意precision和accuracy不是一個意思。精確率的計算公式:[公式]

召回率的計算公式:[公式]

與這兩個值密切相關的一個參數是F-score,是調和這兩個參數的一個綜合指標。用這個當指標的比較客觀公正。一般來講,F-score有一個參數是[公式],用來調節兩部分的比例。帶有這個參數的計算公式是:[公式][公式]時,就退化成簡單的調和平均了,叫F1-score:[公式],這個指標用得非常多。計算實現方面,也不需要自己手動計算。如果你使用Python做分類,那麼scikit learn機器學習包的metrics下會提供相應的函數,搜索一下就好。如果你用WEKA,那麼在主界面上就會顯示分類結果。與F-score相對應,有G-mean,涉及到兩個名詞:sensitivity和specificity,計算公式如下:[公式][公式]於是[公式]這個不太常用。你掌握了F-score就足夠應付大多數情況了。


from sklearn.metrics import precision_score,recall_score

print (precision_score(y_true, y_scores,average=micro))

其中average是參數,不同參數適用不同任務,比如二分類,多分類,多標籤


瀉藥

可以結合具體案例看下,

代碼亂了可以看原文鏈接:http://tecdat.cn/?p=11334

有多種性能指標來描述機器學習模型的質量。但是,問題是,對於哪個問題正確的方法是什麼?在這裡,我討論了選擇回歸模型和分類模型時最重要的性能指標。請注意,此處介紹的性能指標不應用於特徵選擇,因為它們沒有考慮模型的複雜性。

回歸的績效衡量

對於基於相同函數集的模型,RMSE和R2 通常用於模型選擇。

均方誤差

均方誤差由比較預測y ^ y ^與觀察到的結果yy所得的殘差平方和確定:

?

由於MSE是基於殘差平方的,因此它取決於結果平方 。因此,MSE的根 通常用於報告模型擬合:

?

均方誤差的一個缺點是它不是很容易解釋,因為MSE取決於預測任務,因此無法在不同任務之間進行比較。例如,假設一個預測任務與估計卡車的重量有關,而另一項與估計蘋果的重量有關。然後,在第一個任務中,好的模型可能具有100 kg的RMSE,而在第二個任務中,好的模型可能具有0.5 kg的RMSE。因此,雖然RMSE可用於模型選擇,但很少報告,而使用R2R2。

皮爾遜相關係數

由於確定係數可以用皮爾遜相關係數來解釋,因此我們將首先介紹該數量。令Y ^ Y ^表示模型估計,而YY表示觀察到的結果。然後,相關係數定義為

?

其中Cov(?,?)∈RCov(?,?)∈R是協方差,而σσ是標準偏差。協方差定義為

?

其中,μμ表示平均值。在離散設置中,可以將其計算為

?

這意味著,如果預測和結果與平均值的偏差相似,則它們的協方差將為正;如果與平均值具有相對的偏差,則它們之間的協方差將為負。

標準偏差定義為

?

在離散設置下,可以計算為

?

請注意,R函數 sd 計算總體標準差,該標準差用於獲得無偏估計量。如果分布較寬(均值附近的寬分布),則σσ高;如果分布較窄(均值周圍的較小分布),則σσ小。

?

關聯 :協方差和標準差

為了更好地理解協方差,我們創建了一個繪製測量值與均值偏差的函數:

plot.mean.deviation &

然後,我們生成代表三種協方差的數據:正協方差,負協方差和無協方差:

# covariance set.seed(1501) df.low &

?

?

?

注意離群值(與均值的高偏差)對協方差的影響大於與均值接近的值。此外,請注意,協方差接近0表示變數之間在任何方向上似乎都沒有關聯(即各個貢獻項被抵消了)。

由於協方差取決於數據的散布,因此具有高標準偏差的兩個變數之間的絕對協方差通常高於具有低方差的變數之間的絕對協方差。讓我們可視化此屬性:

plot.mean.deviation(y, y.hat, label = "Positive Covariance")

?

df.high &

因此,協方差本身不能得出關於兩個變數的相關性的結論。這就是為什麼Pearson的相關係數通過兩個變數的標準偏差將協方差歸一化的原因。由於這將相關性標準化到範圍[-1,1] ,因此即使變數具有不同的方差,也可以使相關性具有可比性。值-1表示完全負相關,值1表示完全正相關,而值0表示沒有相關。

R2確定係數

確定係數R2 定義為

?

其中 是平方的殘差和,是平方 的總和。對於模型選擇,R2R2等效於RMSE,因為對於基於相同數據的模型,具有最小MSE的模型也將具有最大值 。

?

?

?

?

可以根據相關係數或根據解釋的方差來解釋確定係數。

用相關係數解釋

R平方通常為正,因為具有截距的模型會產生SSres &

?

用解釋方差解釋

在平方總和分解為殘差平方和回歸平方和的情況下 ,

?

?

然後

?

這意味著R2 表示模型所解釋的方差比。因此,R2 = 0.7R2 = 0.7的模型將解釋70% 的方差,而剩下30% 的方差無法解釋。

確定係數

為了獲得有關R2 ,我們定義了以下函數,利用它們可以繪製線性模型的擬合。理想模型將位於曲線的對角線上,並且將殘差表示為與該對角線的偏差。

rsquared &

例如,比較以下模型

?

?

儘管基於的模型 df.low 具有足夠的擬合度(R平方為0.584), df.low 但不能很好地擬合數據(R平方為0.009)。

R平方的局限性

僅基於R平方盲目選擇模型通常是個壞主意。首先,R平方不一定能告訴我們一些關於擬合優度的信息。例如,考慮具有指數分布的數據:

plot(x,y)

?

讓我們為基於這些數據的線性模型計算R 2:

## [1] 0.9

如我們所見,R平方非常高。儘管如此,該模型仍無法很好地擬合,因為它不遵守數據的指數分布。

R2R2的另一個屬性是它取決於值範圍。R2R2通常在XX的寬值範圍內較大,這是因為協方差的增加是由標準偏差調整的,該標準偏差的縮放速度比1N 項引起的協方差的縮放速度慢。

## [1] "R squared: 0.924115453794893, MSE:0.806898017781999"

## [1] "R squared: 0.0657969487417489, MSE:0.776376454723889"

我們可以看到,即使兩個模型的殘差平方和相似,第一個模型的R2 也更高。

分類模型的績效指標

二進位分類的許多性能度量均依賴於混淆矩陣。假設有兩個類別,00和11,其中11表示特徵的存在(正類),00表示特徵的不存在(負類)。相應的混淆矩陣是具有以下結構的2×22×2表:

預測/參考01個0TNFN1個FPTP

其中TN表示真實否定的數量(模型正確預測否定類別),FN表示假否定的數量(模型錯誤地預測否定類別),FP表示錯誤肯定的數量(模型錯誤地預測肯定類別),TP表示真實陽性的數量(模型正確預測陽性類別)。

準確性與敏感性和特異性

基於混淆矩陣,可以計算準確性,敏感性(真陽性率,TPR)和特異性(1-假陽性率,FPR):

?

準確性表示正確預測的總體比率。準確性的聲譽很差,因為如果類別標籤不平衡,它就不合適。例如,假設您要預測稀有腫瘤的存在(1類)與不存在的罕見腫瘤(0類)。讓我們假設只有10%的數據點屬於肯定類別,而90%的數據屬於正面類別。總是預測陰性分類(即未發現腫瘤)的分類器的準確性如何?這將是90%。但是,這可能不是一個非常有用的分類器。因此,靈敏度和特異性通常優於準確性。

敏感性表示正確預測的觀察到的陽性結果的比率,而特異性表示與陽性分類相混淆的觀察到的陰性結果的比率。這兩個數量回答以下問題:

  • 敏感性:如果事件發生,則模型檢測到事件的可能性有多大?
  • 特異性:如果沒有事件發生,那麼該模型識別出沒有事件發生的可能性有多大?

我們始終需要同時考慮敏感性和特異性,因為這些數量本身對模型選擇沒有用。例如,始終預測陽性類別的模型將使靈敏度最大化,而始終預測陰性類別的模型將使特異性最大化。但是,第一個模型的特異性較低,而第二個模型的靈敏度較低。因此,敏感性和特異性可以解釋為蹺蹺板,因為敏感性的增加通常導致特異性的降低,反之亦然。

通過計算平衡精度,可以將靈敏度和特異性合併為一個數量

平衡精度是更適合於類別不平衡的問題的度量。

ROC曲線下方的區域

評分分類器是為每個預測分配一個數值的分類器,可用作區分這兩個類的臨界值。例如,二進位支持向量機將為正類分配大於1的值,為負類分配小於-1的值。對於評分分類器,我們通常希望確定的模型性能不是針對單個臨界值而是針對多個臨界值。

這就是AUC(ROC曲線下方的區域)出現的位置。此數量表示在幾個截止點的靈敏度和特異性之間進行權衡。這是因為接收器工作特性(ROC)曲線只是TPR與FPR的關係圖,而AUC是由該曲線定義的面積,範圍為[0,而AUC是由該曲線定義的面積,其中在[0,1]範圍內。

使用R,我們可以使用ROCR 包來計算AUC 。讓我們首先創建一個用於繪製分類器及其AUC得分的函數:

plot.scores.AUC &

?

?

第一個示例顯示允許完美分離的分類器的AUC為1。不能完全分離的分類器需要犧牲特異性以提高其靈敏度。因此,它們的AUC將小於1。


PyCM一個專門針對於多分類問題評價的,你可以選擇一個你想用的指標。

王平凡:PyCM-多分類性能評估神器-混淆矩陣?

zhuanlan.zhihu.com圖標

新專欄,希望多多關注。


哪個模型好取決於問題本身

Kappa一致性係數可以


推薦閱讀:
相关文章