分类模型评估:准确率,精确率,查全率,特异度,F1
计算各种评估指标之前,首先需要计算混肴矩阵:
真正类数(True Positive , TP):被模型预测为正的正样本。
假正类数(False Positive , FP):被模型预测为正的负样本。
假负类数(False Negative , FN):被模型预测为负的正样本。
真负类数(True Negative , TN):被模型预测为负的负样本。
各指标计算公式如下:
准确率(Accuracy), ACC=(TP+TN)/N,
精确率/查准率(Precision), PPV=TP/(TP+FP),
灵敏度/召回率/查全率(Sensitivity/Recall) , TPR=TP/(TP+FN),
特异度(Specificity) , TNR=TN/(FP+TN),
F1=2*Precision*Recall/(Precision+Recall)
例如在titanic_export.csv的数据中,有目标变量的真实值Survived,阈值0.5时预测值Survived_predict 和目标变量为 1 的概率预测值 Survived_1_percentage
Survived_1_percentage |
PassengerId |
Survived |
Survived_predict |
0.146539017 |
1 |
0 |
0 |
0.966226989 |
2 |
1 |
1 |
0.644612591 |
3 |
1 |
1 |
0.970606942 |
4 |
1 |
1 |
0.096753954 |
5 |
0 |
0 |
… |
… |
… |
… |
根据计算公式,对阈值0.5时的预测结果Survived_predict进行评估
A |
B |
|
1 |
=T("D://titanic_export.csv") |
|
2 |
=A1.select(Survived==1 && Survived_predict==1) |
|
3 |
=A1.select(Survived==0 && Survived_predict==1) |
|
4 |
=A1.select(Survived==1 && Survived_predict==0) |
|
5 |
=A1.select(Survived==0 && Survived_predict==0) |
|
6 |
>TP=A2.len(),FP=A3.len(),FN=A4.len(),TN=A5.len(),N=A1.len() |
|
7 |
=(TP+TN)/N |
/Accuracy |
8 |
=TP/(TP+FP) |
/Precision |
9 |
=TP/(TP+FN) |
/Sensitivity/Recall |
10 |
=TN/(FP+TN) |
/Specificity |
11 |
=2*A8*A9/(A8+A9) |
/F1 |
A2 被模型预测为正的正样本
A3 被模型预测为正的负样本
A4 被模型预测为负的正样本
A5 被模型预测为负的负样本
A6 计算TP,FP,FN,TN,N
A7 计算准确率Accuracy
A8-A11 同理,根据计算公式计算其他指标