在解釋分類指標之前的一個關鍵概念是該過程如何工作。你有三個數據集。它們是訓練集,驗證集和測試集。

  1. 訓練集:使用訓練集中的數據構建模型。您,模型,從此數據集中的輸入中學習。
  2. 驗證集:有幾種方法可以獲得驗證集。一種簡單的方法是刪除部分數據並將其作為驗證集。因此,當您訓練模型時,模型尚未從驗證集中學習。驗證集指示您的訓練集的執行情況。您還可以使用驗證集調整超參數,因為您知道正確的答案。
  3. 測試集:測試集通常遠不及數據科學家。在此步驟中測試我們的模型表明我們的模型執行得有多好。

我在Jupyter Notebook中創建了一個隨機數據幀。我們在驗證集中。我們的客戶將為我們提供一個新的數據集(測試集)。我們的目標是獲得最佳表現。

你的表現是什麼意思?

我將演示我們的分類模型如何衡量績效。在決定如何衡量績效時存在細微差別。但首先,讓我們創建一個0和1的數據幀。

我們還需要知道這些定義:

  1. 真實肯定:準確預測的總數是「正面」。在我們的示例中,這是正確預測電子郵件為垃圾郵件的總數。
  2. 誤報:「肯定」的不準確預測總數。在我們的示例中,這是錯誤地將電子郵件預測為垃圾郵件的總數。
  3. 真實否定:「否定」的準確預測總數。在我們的示例中,這是正確預測電子郵件為非垃圾郵件的總數。
  4. 錯誤否定:「否定」的不準確預測總數。在我們的示例中,這是錯誤地將電子郵件預測為非垃圾郵件的總數。

為了獲得這些指標的出色視覺效果,我們將使用混淆矩陣。在Python中,sklearn庫使得創建混淆矩陣非常容易。

如果我們回顧一下定義:

  1. 真實的積極因素:238
  2. 誤報:19
  3. 真正的否定:219
  4. 假陰性:24

「這是偉大的亞歷克斯,但還沒有討論過表現!」

正確。但我們現在有了繼續進行的信息。我將解釋準確度,精確度,召回率(靈敏度),F1分數,特異性,對數損失和ROC / AUC曲線。


準確性

式:

  • 正確/預測#的數量
  • (TP + TN)/(TP + FP + TN + FN)

準確性似乎可能是最好的方法。在我們的例子中,我們的準確率為91.4%。得分很高。那麼為什麼不使用呢?

我的想法:

  • 準確性僅在兩種可能的結果(電子郵件是否為垃圾郵件)相等時才有效。例如,如果我們有一個數據集,其中5%的電子郵件是垃圾郵件,那麼我們可以遵循不太複雜的模型並獲得更高的準確度分數。我們可以將每封電子郵件預測為非垃圾郵件,並獲得95%的準確度分數。不平衡數據集可以提供準確性,而不是可靠的性能指標。解釋的悖論是指「 準確性悖論 」,

精密/召回

這兩個性能指標經常結合使用。

精確

式:

  • TP /(TP + FP)

精確地說,我們通過「積極」預測的表現來評估我們的數據。我們對電子郵件示例的精確度為92.61%!請記住,我們示例中的「正面」是預測電子郵件是垃圾郵件。

考慮精確積極預測的準確性。

召回(也稱為靈敏度)

式:

  • TP /(TP + FN)

通過召回,我們通過其積極成果的基本事實的表現來評估我們的數據。意思是,當結果為時,我們判斷預測為。我們對電子郵件示例的召回率為90.83%!

我的想法:

  • 你不可能擁有兩全其美的優勢。在我們的電子郵件示例中,我們具有高精度和召回分數。但是,需要權衡利弊。想一想。精度的分母是TP + FP。它不考慮FN。因此,如果我們只做了一個正面預測,並且是正確的,那麼我們的精確分數將是1.儘管如此,我們可能錯過了許多實際的積極觀察。
  • 另一方面,Recall的分母是TP + FN。它沒有看到我所做的所有自信預測。我們可以預測所有電子郵件都是垃圾郵件。因此,我們將Recall評分為1,因為我們預計每個例子都是正數,而我們的FN將為0(我們不預測非垃圾郵件)。

此外,它取決於你是否應該使用精確或召回的情況。在某些情況下,您最好採用高召回率。

  • 如果您將每封電子郵件標記為垃圾郵件,則會召回1.為什麼?因為您預測電子郵件是垃圾郵件。由於您沒有預測電子郵件是非垃圾郵件,因此您無法使用假陰性。但是,您也會錯誤地將垃圾郵件預測為非垃圾郵件。
  • 如果您預測一封電子郵件是垃圾郵件,並且您做得對,那麼您的精確度將是1.為什麼?因為沒有誤報。但是,你會遺漏很多預測。

還有一個不太常見的性能指標:特異性

特異性與Sensitivity或Recall相反。因此,公式為TN /(TN + FP)。

F1-分數

「F 1 Score是Precision和Recall的加權平均值。因此,該分數考慮了誤報和漏報。直覺上它並不像準確性那麼容易理解,但F1通常比準確性更有用,特別是如果你有不均勻的類分布。「 – Renuka Joshi

式:

  • (2 *(精確*召回))/(精確+召回)

F1-Score是精確度和召回率的加權平均值(調和平均值)。我們的F1分數為91.71%。

ROC曲線 / AUC評分

ROC曲線ROC曲線)是示出分類模型中的所有分類的閾值的性能的曲線圖。

AUC代表「ROC曲線下的面積」。也就是說,AUC測量從(0,0)到(1,1)的整個ROC曲線下面的整個二維區域(認為積分微積分)。

當我們評估模型時,ROC曲線/ AUC分數最有用。讓我解釋。我們的基本事實和預測是1和0。但是,我們的預測從不是1或0.相反,我們預測概率,然後評估它是1還是0.通常,分類閾值是.5(在中間)。但我們可以有更好的分類門檻。

我們的ROC曲線所關注的指標是TPR(真實正率)和FPR(誤報率​​)。

  • 真陽性率:TP /(TP + FN)
  • 誤報率:FP /(FP + TN)
資料來源:https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc

我們對ROC的目標是使下圖中的藍線儘可能接近圖的右上部分。另一方面,它越接近直線,我們的模型性能越差。紅點代表了TPR和FPR之間的權衡。

  • 如果您正在與癌症患者打交道,那麼獲得高TPR比FPR更重要。您想要準確地檢測儘可能多的癌症患者。你的假陽性率很高並不重要。
  • 如果您需要將誤報率保持在較低水平,假設您不希望對某些人產生偏見,則還必須接受較低的真實正面率。

AUC是曲線下面積。因此,它將是一個介於0和1之間的數字。我們希望它能夠接近1。

我知道這個例子在比較模型時沒用,但重要的是要知道!

登入損失

對數損失根據與實際標籤的差異程度來考慮預測的不確定性。這使我們對模型的性能有了更細緻的了解。

式:

  • – (ylog(p)+(1-y)log(1-p))

對於對數丟失,我們使用我們預測的概率。

我們來看看上面的圖表。注意它是如何說明「真正的標籤= 1」。那麼,這表明了基本事實。此外,該數字的斜率是顯著的。當預測概率接近0時,我們的對數損失呈指數增長。而在另一端,日誌損失接近0。

直覺也適用於「真實標籤= 0」,除了圖表是水平反射,我們看到指數增長為1而不是0。

現在,它想評估每個分類標籤(多類)和每個例子的性能,公式如下:

多級對數損失

結論

我希望您能夠直觀地了解這些不同的性能指標。只需在Kaggle從事數據科學項目以獲得實際的理解!