1. 程式人生 > >機器學習模型的評價指標和方法

機器學習模型的評價指標和方法

衡量分類器的好壞

對於分類器,或者說分類演算法,評價指標主要有accuracy, [precision,recall,巨集平均和微平均,F-score,pr曲線],ROC-AUC曲線,gini係數。

對於迴歸分析,主要有mse和r2/擬合優度。

分類模型的評估

機器學習系統設計系統評估標準

  1. Error Metrics for Skewed Classes有偏類的錯誤度量精確度召回率
    1. PrecisionRecall精確度召回率
  2. Trading Off Precision and Recall權衡精度和召回率F1值
    1. A way to choose this threshold automatically How do we decide which of these algorithms is best
  3. Data For Machine Learning資料影響機器學習演算法的表現

召回率、準確率、F值

對於二分類問題,可將樣例根據其真實類別和分類器預測類別劃分為:

真正例(True Positive,TP):真實類別為正例,預測類別為正例。

假正例(False Positive,FP):真實類別為負例,預測類別為正例。

假負例(False Negative,FN):真實類別為正例,預測類別為負例。

真負例(True Negative,TN):真實類別為負例,預測類別為負例。

然後可以構建混淆矩陣(Confusion Matrix)如下表所示。

真實類別

預測類別

正例

負例

正例

TP

FN

負例

FP

TN

準確率,又稱查準率(Precision,P):

       (1)       

召回率,又稱查全率(Recall,R):

       (2)    

F1值:

      (3)     

F1的一般形式

      (4)   

G-Mean指標,也能評價不平衡資料的模型表現。

巨集平均(macro-average)和微平均(micro-average)

如果只有一個二分類混淆矩陣,那麼用以上的指標就可以進行評價,沒有什麼爭議,但是當我們在n個二分類混淆矩陣上要綜合考察評價指標的時候就會用到巨集平均和微平均。巨集平均(macro-average)和微平均(micro-average)是衡量文字分類器的指標。根據Coping with the News: the machine learning way: When dealing with multiple classes there are two possible ways of averaging these measures(i.e. recall, precision, F1-measure) , namely, macro-average and micro-average. The macro-average weights equally all the classes, regardless of how many documents belong to it. The micro-average weights equally all the documents, thus favouring the performance on common classes. Different classifiers will perform different in common and rare categories. Learning algorithms are trained more often on more populated classes thus risking local over-fitting.

巨集平均(Macro-averaging),是先對每一個類統計指標值,然後在對所有類求算術平均值。巨集平均指標相對微平均指標而言受小類別的影響更大。

             (5)

           (6)

           (7)

        (8)     

微平均(Micro-averaging),是對資料集中的每一個例項不分類別進行統計建立全域性混淆矩陣,然後計算相應指標。

          (9)

          (10)         

       (11)  

從上面的公式我們可以看到微平均並沒有什麼疑問,但是在計算巨集平均F值時我給出了兩個公式分別為公式(7)和(8)。都可以用。

"macro" simply calculates the mean of the binary metrics,giving equal weight to each class. In problems where infrequent classesare nonetheless important, macro-averaging may be a means of highlightingtheir performance. On the other hand, the assumption that all classes areequally important is often untrue, such that macro-averaging willover-emphasize the typically low performance on an infrequent class.
"weighted" accounts for class imbalance by computing the average ofbinary metrics in which each class’s score is weighted by its presence in thetrue data sample.
"micro" gives each sample-class pair an equal contribution to the overallmetric (except as a result of sample-weight). Rather than summing themetric per class, this sums the dividends and divisors that make up theper-class metrics to calculate an overall quotient.Micro-averaging may be preferred in multilabel settings, includingmulticlass classification where a majority class is to be ignored.
"samples" applies only to multilabel problems. It does not calculate aper-class measure, instead calculating the metric over the true and predictedclasses for each sample in the evaluation data, and returning their(sample_weight-weighted) average.

Kappa係數

        交叉表(混淆矩陣)雖然比較粗糙,卻是描述柵格資料隨時間的變化以及變化方向的很好的方法。但是交叉表卻不能從統計意義上描述變化的程度,需要一種能夠測度名義變數變化的統計方法即KAPPA指數——KIA。 kappa係數是一種衡量分類精度的指標。KIA主要應用於比較分析兩幅地圖或影象的差異性是“偶然”因素還是“必然”因素所引起的,還經常用於檢查衛星影像分類對於真實地物判斷的正確性程度。KIA是能夠計算整體一致性和分類一致性的指數。

KIA的計算式的一般性表示為: 
  這裡寫圖片描述 
總體KAPPA指數的計算式為:
這裡寫圖片描述

  式中, 
這裡寫圖片描述 
  式中的p0和pc都有著明確的含義:p0被稱為觀測精確性或一致性單元的比例;pc被稱為偶然性一致或期望的偶然一致的單元的比例。kappa計算結果為-1~1,但通常kappa是落在 0~1 間,可分為五組來表示不同級別的一致性:0.0~0.20極低的一致性(slight)、0.21~0.40一般的一致性(fair)、0.41~0.60 中等的一致性(moderate)、0.61~0.80 高度的一致性(substantial)和0.81~1幾乎完全一致(almost perfect)。 

kappa指數計算的一個示例:

混淆矩陣

kappa在sklearn上的實現[sklearn.metrics.cohen_kappa_score]

ROC-AUC曲線和PRC曲線

KS曲線

    柯爾莫哥洛夫-斯米爾諾夫檢驗(Колмогоров-Смирнов檢驗)基於累計分佈函式,用以檢驗兩個經驗分佈是否不同或一個經驗分佈與另一個理想分佈是否不同。ROC曲線是評判一個模型好壞的標準,但是最好的閾值是不能通過這個圖知道的,要通過KS曲線得出。

    KS值越大,表示模型能夠將正、負客戶區分開的程度越大。 通常來講,KS>0.2即表示模型有較好的預測準確性。

  繪製方式與ROC曲線略有相同,都要計算TPR和FPR。但是TPR和FPR都要做縱軸,橫軸為把樣本分成多少份。 KS曲線的縱軸是表示TPR和FPR的值,就是這兩個值可以同時在一個縱軸上體現,橫軸就是閾值,然後在兩條曲線分隔最開的地方,對應的就是最好的閾值。

下圖中,一條曲線是FPR,一條是TPR

吉尼係數Gini coefficient

在用SAS或者其他一些統計分析軟體,用來評測分類器分類效果時,常常會看到gini coefficient,gini係數通常被用來判斷收入分配公平程度,具體請參閱wikipedia-基尼係數

在ID3演算法中我們常使用資訊增益來選擇特徵,資訊增益大的優先選擇。在C4.5演算法中,採用了資訊增益比來選擇特徵,以減少資訊增益容易選擇特徵值多的特徵的問題。但是無論是ID3還是C4.5,都是基於資訊理論的熵模型的,這裡面會涉及大量的對數運算。能不能簡化模型同時也不至於完全丟失熵模型的優點呢?CART分類樹演算法使用基尼係數來代替資訊增益比,基尼係數代表了模型的不純度,基尼係數越小,則不純度越低,特徵越好。這和資訊增益(比)是相反的。


  圖6.洛倫茨曲線與基尼係數

Gini coefficient 是指絕對公平線(line of equality)和洛倫茨曲線(Lorenz Curve)圍成的面積與絕對公平線以下面積的比例,即gini coefficient = A面積 / (A面積+B面積) 。

用在評判分類模型的預測效力時,是指ROC曲線曲線和中線圍成的面積與中線之上面積的比例。


  圖7.Gini coefficient與AUC

因此Gini coefficient與AUC可以互相轉換:

gini = A / (A + B) = (AUC - C) / (A + B) = (AUC -0.5) / 0.5 = 2*AUC - 1

Note: 特別值得注意的一點是,這裡的AUC並不是roc_auc(y是二值的)計算裡面的那個roc曲線面積,而是指x,y橫縱座標計算出來的面積(y不是二值而是連續值)。

Gini係數的計算

def giniCoefficient(x, y):
    '''
    gini係數計算
      :param x: 推測值(人口)
      :param y: 實際值(財富)
    '''
    x = np.asarray(x)
    y = np.asarray(y)
    x.__add__(0)
    y.__add__(0)

    x = np.cumsum(x)
    if x[-1] != 0:
        x = x / x[-1]

    y = np.cumsum(y)
    if y[-1] != 0:
        y = y / y[-1]

    area = metrics.auc(x, y, reorder=True)
    gini_cof = 1 - 2 * area

    return gini_cof if math.fabs(gini_cof) > pow(math.e, -6) else 0

迴歸模型的評估

平均均方誤差mse

MSE=1n∑(y¯−yi)2=Var(Y)MSE = \frac{1}{n}\sum(\bar{y}-y_i)^2 = Var(Y)

R^2 (coefficient of determination)

regression score function.評估模型擬合的好壞。訓練集估計和學到的模型產生的新資料集評估的偏離度。

在用線性模型擬合完資料之後,我們需要評估模型擬合的好壞情況。當然,這種評估取決於我們想要用這個模型來做什麼。一種評估模型的辦法是計算模型的預測能力。

在一個預測模型中,我們要預測的值稱為因變數(dependent variable),而用於預測的值稱為解釋變數或自變數(explanatory variable或independent variable)。

通過計算模型的確定係數(coefficient of determination),也即通常所說的R2R^2,來評價模型的預測能力:

R2=1−Var(ε)Var(Y)R^2 = 1 - \frac{Var(\varepsilon)}{Var(Y)}

即1 - 預測模型的mse/資料本身的mse (資料本身的mse就是直接將資料label均值作為預測的mse)

​​解釋R2意義例子

假設你試圖去猜測一群人的體重是多少,你知道這群人的平均體重是y¯\bar{y}​。如果除此之外你對這些人一點兒都不瞭解,那麼你最佳的策略是選擇猜測他們所有人的體重都是y¯\bar{y}​。這時,估計的均方誤差就是這個群體的方差var(Y):

MSE=1n∑(y¯−yi)2=Var(Y)MSE = \frac{1}{n}\sum(\bar{y}-y_i)^2 = Var(Y)

接下來,假如我告訴你這群人的身高資訊,那麼你就可以猜測體重大約為α^+β^xi\hat{\alpha}+\hat{\beta}x_i​,在這種情況下,估計的均方誤差就為Var(ε):

MSE=1N∑(α^+β^xi−yi)2=Var(ε)MSE = \frac{1}{N}\sum (\hat{\alpha}+\hat{\beta}x_i-y_i)^2 = Var(\varepsilon)

所以,Var(ε)/Var(Y)表示的是有解釋變數情況下的均方誤差與沒有解釋變數情況下的均方誤差的比值,也即不能被模型解釋的均方誤差佔總的均方誤差的比例。這樣R2表示的就是能被模型解釋的變異性的比例。

假如一個模型的R2=0.64R^2=0.64,那麼我們就可以說這個模型解釋了64%的變異性,或者可以更精確地說,這個模型使你預測的均方誤差降低了64%。

線上性最小二乘模型中,我們可以證明確定係數和兩個變數的皮爾遜相關係數存在一個非常簡單的關係,即:R2=ρ2。

[擬合優度 ]

擬合優度Goodness of fit

擬合優度(Goodness of Fit)是指回歸直線對觀測值的擬合程度。度量擬合優度的統計量是可決係數(亦稱確定係數)R^2。R^2最大值為1。R^2的值越接近1,說明迴歸直線對觀測值的擬合程度越好;反之,R^2的值越小,說明迴歸直線對觀測值的擬合程度越差。

其它

學習目標

{評價學習模型的不同方法}

不同的模型通過表達了不同的折中方案。近似模型根據一種效能度量可能表現很好,但根據其它度量又可能很差。為了引導學習演算法的發展,必須定義學習任務的目標,並且定義能夠評價不同結果 相應的度量方法。

密度估計

評價指標及方法

期望的對數似然

由於生成分佈p*是固定的,評價指標——相對熵可以轉換成最大期望的對數似然。直觀上就是,M~對從真實分佈中取樣的點賦予的概率越大,越能反映它是該分佈。

資料的似然

專欄:16.A 用於設計和評價機器學習過程的基本實驗性條款

評價泛化效能

抵抗測試holdout-testing

Dtrain: 目標函式;Dtest: 損失函式。

k-折交叉驗證

討論及及演算法

選擇學習過程

使用抵抗測試或交叉驗證來選擇學習過程。更好的是使用訓練集,用來學習模型;驗證集,用來評價學習過程的不同變體並從中做出選擇;分離的測試集,用來在其上評價最終的效能(會使分割資料的問題更加惡化)。也可以發展一種巢狀的交叉驗證方案。

專欄:16.B 用來嘗試並回答有關模型類合適複雜性問題的基本理論框架:PAC界

[《Probabilistic Graphical Models:Principles and Techniques》(簡稱PGM)]