

機器學習度量指標
分類評估指標
TN TP FN FP
TP:預測為正向(P),實際上預測正確(T),即判斷為正向的正確率
TN:預測為負向(N),實際上預測正確(T),即判斷為負向的正確率
FP:預測為正向(P),實際上預測錯誤(F),誤報率,即把負向判斷成了正向
FN:預測為負向(N),實際上預測錯誤(F),漏報率,即把正向判斷稱了負向
Positive | Negative | |
---|---|---|
True | True Positive(TP) 真陽性 | True Negative(TN) 真陰性 |
False | False Positive(FP) 假陽性 | False Negative(FN) 假陰性 |
准確率(Accuracy)
【注意】當分類問題是平衡(blanced)的時候,准確率可以較好地反映模型的優劣程度,但不適用於數據集不平衡的時候。
例如:分類問題的數據集中本來就有97% 示例是屬於X,只有另外3%不屬於X,所有示例都被分類成X的時候,准確率仍然高達97%,但這沒有任何意義。
精確率Precision
查准率 即在預測為正向的數據中,有多少預測正確。【預測結果為真的數據】
召回率Recall
Recall=TP/(TP+FN)
查全率 即在所有正向的數據中,有多少預測正確。【樣本原來真的數據】
F1-Score
F1值為精確率和召回率的調和均值。
ROC(Receiver Operating Characteristic)曲線
先了解以下幾個概念
真正率(True Positive Rate, TPR),又名靈敏度(Sensitivity):分類正確的正樣本個數占整個正樣本個數的比例。
假負率(False Negative Rate, FNR):分類錯誤的正樣本的個數占正樣本的個數的比例。
假正率(False Positive Rate, FPR):分類錯誤的負樣本個數占整個負樣本個數的比例。
真負率(True Negative Rate, TNR):分類正確的負樣本的個數占負樣本的個數的比例。
ROC曲線是以假正率(FP_rate)和真正率(TP_rate)為軸的曲線,ROC曲線下面的面積我們叫做AUC。
AUC(Area Under Curve) 被定義為ROC曲線下的面積,顯然這個面積的數值不會大於1。
如下圖所示:

曲線與FP_rate軸圍成的面積(記作AUC)越大,說明性能越好,即圖上L2曲線對應的性能優於曲線L1對應的性能。即:曲線越靠近A點(左上方)性能越好,曲線越靠近B點(右下方)曲線性能越差。
PR(precision recall)曲線
表現的是precision和recall之間的關系。
回歸評估指標
測試數據集中的點,距離模型的平均距離越小,該模型越精確。
使用平均距離,而不是所有測試樣本的距離和,因為距離和受樣本數量的影響
平均絕對誤差 MAE
平均絕對誤差MAE(Mean Absolute Error)又被稱為 范數損失(l1-norm loss)。
平均平方誤差 MSE
平均平方誤差 MSE(Mean Squared Error)又被稱為 范數損失(l2-norm loss)。
RMSE:均方根誤差
均方根誤差RMSE(Root Mean Squared Error)
RMSE和MAE有局限性:同一個算法模型,解決不同的問題,不能體現此模型針對不同問題所表現的優劣。因為不同實際應用中,數據的量綱不同,無法直接比較預測值,因此無法判斷模型更適合預測哪個問題。
R-squared
-
原始數據和均值之差的平方和
-
預測數據與原始數據均值之差的平方和
上面公式中表示測試數據真實值的方差(內部差異);
代表回歸值與真實值之間的平方差異(回歸差異),因此R-squared既考量了回歸值與真實值的差異,也兼顧了問題本身真實值的變動。【模型對樣本數據的擬合度】
R-squared 取值范圍,值越大表示模型越擬合訓練數據;最優解是1;當模型 預測為隨機值的時候,有可能為負;若預測值恆為樣本期望,R2為0。
from sklearn.metrics import mean_squared_error #均方誤差 from sklearn.metrics import mean_absolute_error #平方絕對誤差 from sklearn.metrics import r2_score#R square
聚類性能指標
ARI (Adjusted Rand index)
若樣本數據本身帶有正確的類別信息,可用ARI指標進行評估。
from sklearn.metrics import adjusted_rand_score()
輪廓系數 Silhouette Cofficient
若樣本數據沒有所屬類別,可用輪廓系數來度量聚類結果的質量。
from sklearn.metrics import silhouette_score
sklearn里的常見評測指標
Scoring(得分) | Function(函數) | Comment(注解) |
---|---|---|
Classification(分類) | ||
‘accuracy’ | metrics.accuracy_score | |
‘average_precision’ | metrics.average_precision_score | |
‘f1’ | metrics.f1_score | for binary targets(用於二進制目標) |
‘f1_micro’ | metrics.f1_score | micro-averaged(微平均) |
‘f1_macro’ | metrics.f1_score | macro-averaged(微平均) |
‘f1_weighted’ | metrics.f1_score | weighted average(加權平均) |
‘f1_samples’ | metrics.f1_score | by multilabel sample(通過 multilabel 樣本) |
‘neg_log_loss’ | metrics.log_loss | requires predict_proba support(需要 predict_proba 支持) |
‘precision’ etc. | metrics.precision_score | suffixes apply as with ‘f1’(后綴適用於 ‘f1’) |
‘recall’ etc. | metrics.recall_score | suffixes apply as with ‘f1’(后綴適用於 ‘f1’) |
‘roc_auc’ | metrics.roc_auc_score | |
Clustering(聚類) | ||
‘adjusted_mutual_info_score’ | metrics.adjusted_mutual_info_score | |
‘adjusted_rand_score’ | metrics.adjusted_rand_score | |
‘completeness_score’ | metrics.completeness_score | |
‘fowlkes_mallows_score’ | metrics.fowlkes_mallows_score | |
‘homogeneity_score’ | metrics.homogeneity_score | |
‘mutual_info_score’ | metrics.mutual_info_score | |
‘normalized_mutual_info_score’ | metrics.normalized_mutual_info_score | |
‘v_measure_score’ | metrics.v_measure_score | |
Regression(回歸) | ||
‘explained_variance’ | metrics.explained_variance_score | |
‘neg_mean_absolute_error’ | metrics.mean_absolute_error | |
‘neg_mean_squared_error’ | metrics.mean_squared_error | |
‘neg_mean_squared_log_error’ | metrics.mean_squared_log_error | |
‘neg_median_absolute_error’ | metrics.median_absolute_error | |
‘r2’ | metrics.r2_score |