自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

分類器性能評估(混淆矩陣、PR曲線、ROC曲線)

人工智能 機器學習
精確率和召回率之間存在一種折中關(guān)系,提高精確率會降低召回率。到底需要較高的精確率還是較高的召回率,不能一概而論,具體場景具體分析。需要找得對就需要高的精確率,也就是想要的一定是好的;不想把想要的漏掉太多,就需要較高的召回率。

大家好,我是Bryce。

這次和大家分享機器學習涉及到的內(nèi)容——分類器性能評估,包括準確率、精確率、召回率、PR曲線、ROC曲線等。

一、準確率(Accuracy)

準確率并不是一個很好的分類器性能指標,尤其是當處理的數(shù)據(jù)集存在偏差時(一些類比其他類多得多)。比如有9個蘋果和1個香蕉,那我猜測10個都不是香蕉的準確率也高達90%。

在Python中,準確率指標可以使用cross_val_score()函數(shù)評估,同時使用K折交叉驗證。具體形式如下,其中,cv=3表示3折。

from sklearn.model_selection import cross_val_score
cross_val_score(sgd_clf, X_train, y_train_5, cv=3, scoring='accuracy')

二、混淆矩陣

圖片

如上圖所示,混淆矩陣每一行代表一個實際的結(jié)果,每一列代表一個預測的結(jié)果。分別有TP、FN、FP、TN四種結(jié)果,有Accuracy(準確率)、Precision(精確率)、Sensitivity(召回率或靈敏度)、Specificity(特異度)和Negative Predictive Value(反例預測率)5種衡量指標,它們的計算公式如上圖。

還是以蘋果、香蕉舉例子(蘋果為正例,香蕉為反例):

  • TP:真正例,把蘋果認成了蘋果;
  • FN:偽反例,把蘋果認成了香蕉;
  • FP:偽正例,把香蕉認成了蘋果;
  • TN:真反例,把香蕉認成了香蕉。

Accuracy(準確率):不管正負例,預測對的占多少。

Precision(精確率):找了這么多正例,找對了多少。

Sensitivity(召回率):有這么多正例,找出了多少。

在Python中計算混淆矩陣比較簡單,如下:

from sklearn.metrics import confusion_matrix
confusion_matrix(y_train, y_train_pred)

其中,y_train表示訓練值,y_train_pred表示預測值。

衡量指標中用的比較多的是精確率和召回率,它們的值可以在計算出混淆矩陣后,按照上圖公式計算,也可以直接調(diào)用對應(yīng)的函數(shù)。

from sklearn.metrics import precision_score, recall_score
precision_score(y_train, y_train_pred)
recall_score(y_train, y_train_pred)

其中,precision_score表示精確率,recall_score表示召回率。

F1值

F1值結(jié)合了精確率和召回率,是它們的調(diào)和平均。普通的平均值平等看待所有值,而調(diào)和平均會給小的值更大的權(quán)重。要想獲得一個高的F1值,精確率和召回率要同時高。

圖片

from sklearn.metrics import f1_score
f1_score(y_train, y_train_pred)

精確率和召回率之間存在一種折中關(guān)系,提高精確率會降低召回率。到底需要較高的精確率還是較高的召回率,不能一概而論,具體場景具體分析。需要找得對就需要高的精確率,也就是想要的一定是好的;不想把想要的漏掉太多,就需要較高的召回率。

某模型的精確率、召回率與閾值的關(guān)系曲線如下,橫坐標表示算法判斷的閾值(大于閾值為正,否則為負):

from sklearn.metrics import precision_recall_curve
precisions, recalls, thresholds = precision_recall_curve(y_train, y_scores) # y_scores是決策分數(shù),不是預測值

圖片

從圖中就可以看出精確率和召回率之間的博弈關(guān)系。

仔細看我們會發(fā)現(xiàn),召回率曲線比較平滑,而精確率曲線在性能較高時會有波動,這表示提高閾值,精確率并不一定會提高。

精確率和召回率之間的關(guān)系曲線(PR曲線)如下:

圖片

三、ROC曲線

ROC曲線橫坐標為FPR(偽正例率),縱坐標為TPR(真正例率,也即召回率),其中FPR=1-TNR,TNR就是特異性。

from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(y_train, y_scores)

圖片

一個評估分類器好壞的方法是:計算ROC曲線下的面積,roc_auc_score()可實現(xiàn)。面積越大,性能越好,從圖來看,就是更靠近左上角。(PR曲線應(yīng)該盡可能的靠近右上角)

from sklearn.metrics import roc_auc_score
roc_auc_score(y_train, y_scores)

PR曲線還是ROC曲線?

當正例非常少或者你更關(guān)注偽正例(FP)而不是偽反例(FN)時,你應(yīng)該選擇PR曲線, 反之則是ROC曲線。

本文轉(zhuǎn)載自微信公眾號「且聽數(shù)據(jù)說」,作者「Bryce」,可以通過以下二維碼關(guān)注。

轉(zhuǎn)載本文請聯(lián)系「且聽數(shù)據(jù)說」公眾號。


責任編輯:武曉燕 來源: 且聽數(shù)據(jù)說
相關(guān)推薦

2010-09-29 09:55:05

光纖

2023-09-13 14:45:14

性能測試開發(fā)

2024-08-23 09:06:35

機器學習混淆矩陣預測

2009-03-05 18:16:13

2023-06-02 22:36:02

鴻蒙彈簧動畫曲線

2021-07-27 05:53:00

Chrome瀏覽器KPI

2022-11-03 16:28:00

Javascript平滑曲線

2012-11-22 09:47:34

服務(wù)器虛擬化性能評估IOPS

2022-07-26 15:04:11

表情包卡片JS

2022-08-12 08:25:13

新興技術(shù)Gartner新興技術(shù)成熟曲線

2016-08-04 16:17:48

虛擬化服務(wù)器性能鑒定

2009-11-23 15:41:44

Visual Stud

2013-01-24 17:18:30

2019-08-15 07:33:09

2021-08-04 09:33:22

Go 性能優(yōu)化

2020-07-09 13:10:42

GIMP曲線文本應(yīng)用

2017-09-13 12:10:55

2020-11-26 11:45:31

Python繪圖代碼

2018-07-19 11:45:08

HTML5混合開發(fā)Gartner

2013-12-27 14:16:43

Android開發(fā)Android應(yīng)用線程
點贊
收藏

51CTO技術(shù)棧公眾號