您的位置:首頁>國際>正文

敲黑板!模型的度量標準不止有「準確率」,別忘了「精度」和「召回率」

編譯:Simons Road

為分類任務選擇正確的度量標準

雖然這個模型具有接近100%的準確性, 但在這個問題上準確性顯然不是一個合適的度量指標!檢測恐怖分子屬於一種典型的非平衡分類問題:我們需要將資料分為兩類,

恐怖分子或非恐怖分子, 但非恐怖分子佔據了絕大多數的情況。 我們再看看另一個非平衡的分類問題, 疾病檢測。 我們知道通常情況下疾病在公眾中發病率是非常低的。 在這兩種非平衡分類問題中, 像疾病或恐怖分子這樣的正類屬於少數情況, 而正常人這樣的負類出現的概率遠遠超過了他們。 這類問題是資料科學中相當常見的例子, 單看準確度並非是評估模型性能的好方法。

直觀地, 我們都知道在檢測恐怖分子問題上, 把所有的資料點都歸為負類(非恐怖分子)是徒勞且毫無意義的。 相反, 我們應該把重點放在正類(恐怖分子)的識別上。

直覺告訴我們, 應當最大化的度量標準是召回率(確切定義為真陽性數除以真陽性數加假陰性數), 就是說模型在資料集中找到所有相關目標樣本的能力, 即查全率。 其中, TP真陽性表示由模型將資料點分類為正而實際也為正, 意味著分類正確, FN假陰性表示模型將資料點分類為負而實際為正, 意味著分類是錯誤的樣本。 在檢測恐怖分子問題中, TP是被正確識別的恐怖分子, 而FN是模型將恐怖分子錯誤地分為非恐怖分子。 通過召回率, 我們可以分析模型找到資料集中所有感興趣資料點的能力。

點開看大圖

仔細觀察這個等式, 你會發現:如果我們把所有的人都標記為恐怖分子, 那麼我們的召回率就會達到1.0!這能說我們擁有一個完美的分類器嗎?不,

這並不儘然。 與資料科學中的大多數概念一樣, 我們所選擇的最大化指標中存在著此消彼長的關係。 當我們增加召回率的時候, 精度會降低。 同時, 我們知道, 將100%的乘客都標記為恐怖分子的模型是不可用的, 這會導致我們得禁止所有人上飛機。 統計學上會這樣描述這種情況:新模型精度很低, 或者分類模型只能識別一些相關資料點的能力, 即查準率。

精度被定義為真陽性數除以真陽性數加假陽性數。 如下圖所示, FP假陽性數是指模型錯誤地將實際為負的資料點標記為正, 在我們的例子中表示模型將普通人歸類為恐怖分子。

小結一下, 召回率表示模型能夠在資料集中查找所有相關示例的能力,

而精度表示模型得出的相關資料點與實際相關的資料點的比例。

現在我們可以看到, 第一個模型將所有乘客都標記為非恐怖分子, 並不可取。 雖然它有著近乎完美的準確率, 但是它的精度和召回率卻為零, 因為沒有真陽性TP!現在我們稍微修改一下模型, 能將其中一個恐怖分子正確地識別。 那麼, 模型的精確度將是1.0(不存在假陽性FP), 但召回率仍舊很低, 因為實際上還有很多假陰性FN。 再想想, 另一個極端, 我們將所有乘客都歸類為恐怖分子, 那召回率就是1.0, 意味著我們找到了每一個恐怖分子, 但精度會特別低, 因為我們扣留了許多無辜的人。 換句話說, 隨著精度的提高, 召回率就會降低, 反之亦然它們兩是此消彼長的關係。

精度與召回率的權衡

精度與召回率兩者結合

在某些情況下, 我們往往需要犧牲其中一項指標來最大化另一指標。 例如, 在對患者隨訪檢查進行初步疾病篩查時, 我們可能會希望召回率接近1.0——這樣就能找出所有真正患有該疾病的患者。 如果隨訪檢查的成本較低,那麼較低的精度也是能被接受的。但是,如果我們想要找到精度和召回率的最佳組合,可以使用F1分數來對兩項度量指標進行組合。

F1分數是精度和召回率的調和平均值

我們使用調和平均值而不是簡單的算術平均值在於它可以懲罰極端值。比如,對精度為1.0而召回率為0.0的分類器而言,算術平均值為0.5,但F1分數為0。F1分數給予了精度和召回率同等的權重,屬於通用Fβ度量的特殊情況。在通用Fβ度量中,β被用來調整召回率或精確度的權值變得更大或更小。當然,還有一些結合精度和召回率指標的其他方式,如幾何平均值,但F1分數是最常用的。如果我們想要創建一個召回率和精度最佳平衡的分類模型,我們只需將F1分數最大化。

視覺化精度與召回率

在實例展示召回率與精度在實際中是如何使用之前,我們還要簡單地談一談用於精度和召回率視覺化的一些概念。

首先,要介紹一下混淆矩陣(confusion matrix),給定一個模型的預測標籤,通過它可以快速計算精度和召回率。二分類問題的混淆矩陣總共包含四個不同的結果:真陽性(TP)、假陽性(FP)、真陰性(TN),以及假陰性(FN)。列表示真實值,行表示預測值。行與列的交叉點對應著這四種結果。例如,如果我們將一個數據點預測為正例,但它實際上是反例,那麼這就是假陽性。

用混淆矩陣計算精度和召回率時,需要找到矩陣中對應的值,並用以下的等式進行計算:

另一個顯示分類模型性能工具是受試者工作特徵曲線Receiver Operating Characteristic(ROC)曲線。 別被唬人的名字嚇跑!其實思想很簡單:ROC曲線顯示了當我們調節模型中閾值(高於閾值的為正例)時,召回率與精度的關係如何變化。假設有一個識別疾病的模型,模型會為每個患者輸出一個0到1間的分數,我們可以在0-1範圍內設置一個閾值來標記患者是否患有該疾病。 通過調節閾值,我們可以讓精度與召回率之間有一個較好的平衡。

ROC 曲線的Y 軸表示真陽性率(TPR), X 軸表示假陽性率 (FPR)。真陽性率就是召回率,假陽性率是負例被判斷為正例的概率,兩者都可以通過混淆矩陣計算得到。

下圖是一個典型的ROC 曲線:

上圖所示,黑色對角線表示隨機分類器,紅色和藍色曲線分別表示兩種不同的分類模型。 對於一個給定的模型,只會對應一條曲線,但我們可以通過調節上述閾值來讓召回率與精度沿著曲線移動。通常來說,當我們降低閾值時,會沿著曲線向右和向上移動。當閾值為1.0時,我們將位於圖的左下角,此時沒有將資料點標識為正類,也就沒有真陽性結果和假陽性結果(TPR = FPR = 0)。隨著我們降低閾值,會有更多的資料點為正類,真陽性會增加,同時伴隨著很多假陽性。最終,當閾值為0.0時,我們將所有數據點標識為正,此時位於ROC曲線的右上角(TPR = FPR = 1.0)。

最後,我們可以通過計算曲線下面積(AUC)來量化模型的ROC曲線,面積的計算結果在0到1的範圍內,值越高則表明分類性能越好。在上圖中,藍色曲線的AUC大於紅色曲線的AUC,這意味著藍色模型更好地實現了精確度和召回率的權衡組合。隨機分類器(黑線)的AUC等於0.5。

概 要

在此之前,我們已經涵蓋了一些專業術語,相信每一個都很好理解,但是要把它們在實戰中運用自如,還有點小難度哦,接下來讓我們快速回顧一下,然後通過一個例子來鞏固我們學到的新知識。

二分類的四種結果

真陽性(TP):正類的資料點被標記為正例

假陽性(FP):負類的資料點被標記為正例

真陰性(TN):負類的資料點被標記為負例

假陰性(FN): 正類的資料點被標記為負例

召回率與精度度量

召回率:分類模型識別所有相關示例的能力

精度: 分類模型識別相關示例的能力

F1分數:使用召回率與精度的調和平均值來度量組合

召回率與精度視覺化

混淆矩陣: 顯示分類問題的實際標籤和預測標籤

受試者工作特徵曲線(ROC) curve: 建立閾值與真陽性率(TPR)、假陽性率(FPR)的對應關係,可以在曲線上直觀地選取模型合適的閾值

曲線下面積(AUC): 通過計算ROC 曲線下方的面積,來度量分類模型總體性能的指標

實例應用

我們的任務是診斷100名病人是否患有一種全世界50%的人都患有的疾病。首先,假設一個黑箱模型,輸入關於患者的資訊,並得到0和1之間的分數。其次,通過調節將患者標記位元正類(患有疾病)的閾值,來使分類器性能最大化。我們將以0.1為步長,逐步增加閾值從0.0到1.0,並計算每一步ROC曲線上的精度、召回率、F1分數和ROC曲線上的位置。以下是每個閾值的分類結果:

每個閾值下的模型輸出結果

我們以閾值0.5為例,計算召回率、精度、真陽性率和假陽性率。 首先我們建立混淆矩陣:

閾值為 0.5 時的混淆矩陣

我們可以利用混淆矩陣中的數值來計算召回率、精度和 F1分數:

然後計算真陽性率和假陽性率,並找到ROC曲線上對應點的橫縱坐標。

為了得到整個ROC曲線,我們在每個閾值下都執行此這個過程。 你可能會感到十分乏味,但不一定全要手算完成,使用Python這樣的語言很容易就可以做到這一點!關於這些計算的JupyterNotebook已經上傳到了GitHub上,可供任何人下載實現。最終的ROC曲線如下圖所示,點上方的數字表示閾值。

在這裡我們可以看到,所有的概念都彙集到一起了!在閾值等於 1.0 的點,我們沒有將任何病人歸類為患病,因此模型的召回率和精度都是 0。隨著閾值的減小,召回率增加了,因為我們發現更多的患者患有該疾病。然而,隨著召回率的增加,精度會降低,因為除了增加真正例之外,還會增加假正例。在閾值為 0.0 的時候,我們的召回率是完美的——我們發現所有的患者都患有這種疾病——但是精度很低,因為有很多假正例。通過更改閾值並選擇最大化 F1 score 的閾值,我們可以沿著給定模型的曲線移動。要改變整個曲線,我們需要建立一個不同的模型。

我們可以看到所學的概念都出現在了這裡!在閾值等於1.0的時候,沒有任何病人被標記位元疾病患者,因此具有0.0的召回率和精度。隨著閾值的降低,召回率增加,我們發現了更多患有該疾病的病人。然而,隨著我們召回率的增加,精度卻在不斷下降,因為除了增加真陽性示例之外,我們增加了很多假陽性示例。當閾值為0.0的時候,召回率是100%,我們發現了所有患該疾病的病人,但精度很低,存在著很多假陽性示例。通過改變閾值來沿著給定模型的曲線移動,並選擇最大化F1分數的閾值。為了移動整個曲線,我們需要建立一個不同的模型。

每個閾值下的最終模型統計量如下表:

基於F1得分,整體最佳的模型出現在閾值為0.5的地方。如果我們想要在更大程度上強調精度或召回率,我們可以選擇這些度量表現最佳時對應的模型。

結 論

我們傾向於使用準確性,是因為它被大眾熟知,並不是因為它是任務最合適的度量標準! 儘管更適合的度量標準(如召回率和精度)可能看起來十分陌生,但我們已經直觀地瞭解了為什麼它們能更好地處理諸如非平衡分類任務等問題。統計學為我們提供了計算這些度量的標準定義和方程,資料科學能説明我們尋找到解決問題的正確工具。我們在研究分類模型的時候,通過不會只看準確性,召回率、精度、F1分數和ROC曲線等都可以説明我們評估分類模型的有效性,有了它們當有人在你面前吹噓模型的準確性有多高的時候,尤其針對的是非平衡問題的時候,你就可以用這些度量標準擊破它的模型。正如我們所看到的,準確性有時候的確不能為一些重要問題提供有效評估,但現在我們掌握了更多更有用的度量指標啦!

-The End-

將門是一家專注於發掘、加速並投資技術創新啟動商業價值的創業公司的創投機構,旗下設有將門創新服務、將門技術社群以及將門投資基金。

將門創新服務專注于使創新的技術落地于真正的應用場景,啟動和實現全新的商業價值,服務於行業領先企業和技術創新型創業公司。

將門技術社群專注于幫助技術創新型的創業公司提供來自產、學、研、創領域的核心技術專家的技術分享和學習內容,使創新成為持續的核心競爭力。

將門投資基金專注於投資通過技術創新啟動商業場景,實現商業價值的初創企業,關注技術領域包括機器智慧、物聯網、自然人機交互、企業計算。在兩年的時間裡,將門投資基金已經投資了包括量化派、碼隆科技、禾賽科技、偉景智慧、Convertlab、迪英加科技等十幾傢俱有高成長潛力的技術型創業公司。

如果您是技術領域的初創企業,不僅想獲得投資,還希望獲得一系列持續性、有價值的投後服務,歡迎發送或者推薦項目給我“門”: bp@thejiangmen.com

點擊右上角,把文章朋友圈

將門創投

讓創新獲得認可!

微信:thejiangmen

bp@thejiangmen.com

如果隨訪檢查的成本較低,那麼較低的精度也是能被接受的。但是,如果我們想要找到精度和召回率的最佳組合,可以使用F1分數來對兩項度量指標進行組合。

F1分數是精度和召回率的調和平均值

我們使用調和平均值而不是簡單的算術平均值在於它可以懲罰極端值。比如,對精度為1.0而召回率為0.0的分類器而言,算術平均值為0.5,但F1分數為0。F1分數給予了精度和召回率同等的權重,屬於通用Fβ度量的特殊情況。在通用Fβ度量中,β被用來調整召回率或精確度的權值變得更大或更小。當然,還有一些結合精度和召回率指標的其他方式,如幾何平均值,但F1分數是最常用的。如果我們想要創建一個召回率和精度最佳平衡的分類模型,我們只需將F1分數最大化。

視覺化精度與召回率

在實例展示召回率與精度在實際中是如何使用之前,我們還要簡單地談一談用於精度和召回率視覺化的一些概念。

首先,要介紹一下混淆矩陣(confusion matrix),給定一個模型的預測標籤,通過它可以快速計算精度和召回率。二分類問題的混淆矩陣總共包含四個不同的結果:真陽性(TP)、假陽性(FP)、真陰性(TN),以及假陰性(FN)。列表示真實值,行表示預測值。行與列的交叉點對應著這四種結果。例如,如果我們將一個數據點預測為正例,但它實際上是反例,那麼這就是假陽性。

用混淆矩陣計算精度和召回率時,需要找到矩陣中對應的值,並用以下的等式進行計算:

另一個顯示分類模型性能工具是受試者工作特徵曲線Receiver Operating Characteristic(ROC)曲線。 別被唬人的名字嚇跑!其實思想很簡單:ROC曲線顯示了當我們調節模型中閾值(高於閾值的為正例)時,召回率與精度的關係如何變化。假設有一個識別疾病的模型,模型會為每個患者輸出一個0到1間的分數,我們可以在0-1範圍內設置一個閾值來標記患者是否患有該疾病。 通過調節閾值,我們可以讓精度與召回率之間有一個較好的平衡。

ROC 曲線的Y 軸表示真陽性率(TPR), X 軸表示假陽性率 (FPR)。真陽性率就是召回率,假陽性率是負例被判斷為正例的概率,兩者都可以通過混淆矩陣計算得到。

下圖是一個典型的ROC 曲線:

上圖所示,黑色對角線表示隨機分類器,紅色和藍色曲線分別表示兩種不同的分類模型。 對於一個給定的模型,只會對應一條曲線,但我們可以通過調節上述閾值來讓召回率與精度沿著曲線移動。通常來說,當我們降低閾值時,會沿著曲線向右和向上移動。當閾值為1.0時,我們將位於圖的左下角,此時沒有將資料點標識為正類,也就沒有真陽性結果和假陽性結果(TPR = FPR = 0)。隨著我們降低閾值,會有更多的資料點為正類,真陽性會增加,同時伴隨著很多假陽性。最終,當閾值為0.0時,我們將所有數據點標識為正,此時位於ROC曲線的右上角(TPR = FPR = 1.0)。

最後,我們可以通過計算曲線下面積(AUC)來量化模型的ROC曲線,面積的計算結果在0到1的範圍內,值越高則表明分類性能越好。在上圖中,藍色曲線的AUC大於紅色曲線的AUC,這意味著藍色模型更好地實現了精確度和召回率的權衡組合。隨機分類器(黑線)的AUC等於0.5。

概 要

在此之前,我們已經涵蓋了一些專業術語,相信每一個都很好理解,但是要把它們在實戰中運用自如,還有點小難度哦,接下來讓我們快速回顧一下,然後通過一個例子來鞏固我們學到的新知識。

二分類的四種結果

真陽性(TP):正類的資料點被標記為正例

假陽性(FP):負類的資料點被標記為正例

真陰性(TN):負類的資料點被標記為負例

假陰性(FN): 正類的資料點被標記為負例

召回率與精度度量

召回率:分類模型識別所有相關示例的能力

精度: 分類模型識別相關示例的能力

F1分數:使用召回率與精度的調和平均值來度量組合

召回率與精度視覺化

混淆矩陣: 顯示分類問題的實際標籤和預測標籤

受試者工作特徵曲線(ROC) curve: 建立閾值與真陽性率(TPR)、假陽性率(FPR)的對應關係,可以在曲線上直觀地選取模型合適的閾值

曲線下面積(AUC): 通過計算ROC 曲線下方的面積,來度量分類模型總體性能的指標

實例應用

我們的任務是診斷100名病人是否患有一種全世界50%的人都患有的疾病。首先,假設一個黑箱模型,輸入關於患者的資訊,並得到0和1之間的分數。其次,通過調節將患者標記位元正類(患有疾病)的閾值,來使分類器性能最大化。我們將以0.1為步長,逐步增加閾值從0.0到1.0,並計算每一步ROC曲線上的精度、召回率、F1分數和ROC曲線上的位置。以下是每個閾值的分類結果:

每個閾值下的模型輸出結果

我們以閾值0.5為例,計算召回率、精度、真陽性率和假陽性率。 首先我們建立混淆矩陣:

閾值為 0.5 時的混淆矩陣

我們可以利用混淆矩陣中的數值來計算召回率、精度和 F1分數:

然後計算真陽性率和假陽性率,並找到ROC曲線上對應點的橫縱坐標。

為了得到整個ROC曲線,我們在每個閾值下都執行此這個過程。 你可能會感到十分乏味,但不一定全要手算完成,使用Python這樣的語言很容易就可以做到這一點!關於這些計算的JupyterNotebook已經上傳到了GitHub上,可供任何人下載實現。最終的ROC曲線如下圖所示,點上方的數字表示閾值。

在這裡我們可以看到,所有的概念都彙集到一起了!在閾值等於 1.0 的點,我們沒有將任何病人歸類為患病,因此模型的召回率和精度都是 0。隨著閾值的減小,召回率增加了,因為我們發現更多的患者患有該疾病。然而,隨著召回率的增加,精度會降低,因為除了增加真正例之外,還會增加假正例。在閾值為 0.0 的時候,我們的召回率是完美的——我們發現所有的患者都患有這種疾病——但是精度很低,因為有很多假正例。通過更改閾值並選擇最大化 F1 score 的閾值,我們可以沿著給定模型的曲線移動。要改變整個曲線,我們需要建立一個不同的模型。

我們可以看到所學的概念都出現在了這裡!在閾值等於1.0的時候,沒有任何病人被標記位元疾病患者,因此具有0.0的召回率和精度。隨著閾值的降低,召回率增加,我們發現了更多患有該疾病的病人。然而,隨著我們召回率的增加,精度卻在不斷下降,因為除了增加真陽性示例之外,我們增加了很多假陽性示例。當閾值為0.0的時候,召回率是100%,我們發現了所有患該疾病的病人,但精度很低,存在著很多假陽性示例。通過改變閾值來沿著給定模型的曲線移動,並選擇最大化F1分數的閾值。為了移動整個曲線,我們需要建立一個不同的模型。

每個閾值下的最終模型統計量如下表:

基於F1得分,整體最佳的模型出現在閾值為0.5的地方。如果我們想要在更大程度上強調精度或召回率,我們可以選擇這些度量表現最佳時對應的模型。

結 論

我們傾向於使用準確性,是因為它被大眾熟知,並不是因為它是任務最合適的度量標準! 儘管更適合的度量標準(如召回率和精度)可能看起來十分陌生,但我們已經直觀地瞭解了為什麼它們能更好地處理諸如非平衡分類任務等問題。統計學為我們提供了計算這些度量的標準定義和方程,資料科學能説明我們尋找到解決問題的正確工具。我們在研究分類模型的時候,通過不會只看準確性,召回率、精度、F1分數和ROC曲線等都可以説明我們評估分類模型的有效性,有了它們當有人在你面前吹噓模型的準確性有多高的時候,尤其針對的是非平衡問題的時候,你就可以用這些度量標準擊破它的模型。正如我們所看到的,準確性有時候的確不能為一些重要問題提供有效評估,但現在我們掌握了更多更有用的度量指標啦!

-The End-

將門是一家專注於發掘、加速並投資技術創新啟動商業價值的創業公司的創投機構,旗下設有將門創新服務、將門技術社群以及將門投資基金。

將門創新服務專注于使創新的技術落地于真正的應用場景,啟動和實現全新的商業價值,服務於行業領先企業和技術創新型創業公司。

將門技術社群專注于幫助技術創新型的創業公司提供來自產、學、研、創領域的核心技術專家的技術分享和學習內容,使創新成為持續的核心競爭力。

將門投資基金專注於投資通過技術創新啟動商業場景,實現商業價值的初創企業,關注技術領域包括機器智慧、物聯網、自然人機交互、企業計算。在兩年的時間裡,將門投資基金已經投資了包括量化派、碼隆科技、禾賽科技、偉景智慧、Convertlab、迪英加科技等十幾傢俱有高成長潛力的技術型創業公司。

如果您是技術領域的初創企業,不僅想獲得投資,還希望獲得一系列持續性、有價值的投後服務,歡迎發送或者推薦項目給我“門”: bp@thejiangmen.com

點擊右上角,把文章朋友圈

將門創投

讓創新獲得認可!

微信:thejiangmen

bp@thejiangmen.com

Next Article
喜欢就按个赞吧!!!
点击关闭提示