評估指標 Evaluation metrics 可以說明模型的性能,辨別模型的結果。
我們建立一個模型后,計算指標,從指標獲取反饋,再繼續改進模型,直到達到理想的準確度。在預測之前檢查模型的準確度至關重要,而不應該建立一個模型后,就直接將模型應用到看不見的數據上。
今天先來簡單介紹幾種回歸和分類常用的評估方法。
回歸:
均方誤差:
其中 D 為數據分布,p 為概率密度函數。
from sklearn.metrics import mean_squared_error
y_true = [3, -0.5, 2, 7]
y_pred = [2.5, 0.0, 2, 8]
mean_squared_error(y_true, y_pred)
0.375
分類:
二分類 and 多分類:
錯誤率
精度
二分類
混淆矩陣:
from sklearn.metrics import confusion_matrix
pipe_svc.fit(X_train, y_train)
y_pred = pipe_svc.predict(X_test)
confmat = confusion_matrix(y_true=y_test, y_pred=y_pred)
print(confmat)
[[71 1]
[ 2 40]]
單純用 錯誤率,精度 是無法知道下面的問題時:
查準率:
應用場景-當你想知道“挑出的西瓜中有多少比例是好瓜”
from sklearn.metrics import precision_score
from sklearn.metrics import recall_score, f1_score
print('Precision: %.3f' % precision_score(y_true=y_test, y_pred=y_pred))
Precision: 0.976
查全率:
應用場景-當你想知道“所有好瓜盅有多少比例被挑出來了”
print('Recall: %.3f' % recall_score(y_true=y_test, y_pred=y_pred))
Recall: 0.952
P-R 圖:
當一個學習器的 P-R 曲線被另一個學習器的包住,那么后者性能優于前者。
有交叉時,需要在具體的查準率或者查全率下進行比較。
平衡點 (Break Event Point BEP):
即上圖中三個紅點。
綜合考慮查準率,查全率的度量
當 查準率=查全率 時的點,誰大誰比較優。
F1 度量:
也是綜合考慮查準率,查全率的度量,比 BEP 更常用:
print('F1: %.3f' % f1_score(y_true=y_test, y_pred=y_pred))
F1: 0.964
Fβ:
可以表達對查準率,查全率的不同重視度,
β > 1 則查全率有更大影響,β < 1 則查準率有更大影響,β = 1 則為 F1。
One vs. All (OvA) 分類問題
這時會在 n 個二分類問題上綜合考慮查準率,查全率。
宏~ :先在每個混淆矩陣上計算率,再求平均
宏查準率
宏查全率
宏 F1
微~ :先將各個混淆矩陣上對應元素求平均,再計算率
微查準率
微查全率
微 F1
ROC :
反映敏感性和特異性連續變量的綜合指標,roc曲線上每個點反映著對同一信號刺激的感受性。
縱軸為 TPR 真正例率,預測為正且實際為正的樣本占所有正例樣本的比例
橫軸為 FPR 假正例率。預測為正但實際為負的樣本占所有負例樣本的比例
對角線對應的是 “隨機猜想”
當一個學習器的 ROC 曲線被另一個學習器的包住,那么后者性能優于前者。
有交叉時,需要用 AUC 進行比較。
AUC:
ROC 曲線下的面積
import numpy as np
from sklearn.metrics import roc_auc_score
y_true = np.array([0, 0, 1, 1])
y_scores = np.array([0.1, 0.4, 0.35, 0.8])
roc_auc_score(y_true, y_scores)
0.75
代價敏感
現實任務中,當不同類型的錯誤具有不同的影響后果時,它們的代價也是不一樣的。
此時,可以設定
代價矩陣 cost matrix:
如果將第 0 類預測為 第 1 類造成的損失更大,則 cost01 > cost10,相反將第 1 類預測為 第 0 類造成的損失更大,則 cost01 < cost10 :
則帶有“代價敏感”的錯誤率為:
其中 0 為正類,1 為反類,D+ 為正例子集合,D- 為反例子集合。
代價曲線 cost curve:
非均等代價下,反應學習器的期望總體代價。
橫軸為取值為[0,1]的正例概率代價:
縱軸為取值為[0,1]的歸一化代價:
其中 p 為正例的概率,FPR = 1 - TPR。
資料:
機器學習
Python Machine Learning
推薦閱讀 歷史技術博文鏈接匯總
http://www.lxweimin.com/p/28f02bb59fe5
也許可以找到你想要的:
[入門問題][TensorFlow][深度學習][強化學習][神經網絡][機器學習][自然語言處理][聊天機器人]