机器学习做分类任务得到结果后,往往需要一些指标来评价模型效果,常用到的就有精准率(Precision)、召回率(Recall)和准确率(Accuracy),在不同场景需要看不同指标。
下图表示的是一个二分类的混淆矩阵:
真实值\预测值 | Positive(1) | Negative(0) |
---|---|---|
Positive(1) | True Positive (TP) | False Positive (FP) |
Negative(0) | False Negative (FN) | True Negative (TN) |
TP,预测是正样本(1),真实为正样本(1),预测对了;
FN,预测是负样本(0),真实为正样本(1),预测错了
FP,预测是正样本(1),真实为负样本(0),预测错了;
TN:预测是负样本(0),真实为负样本(0),预测对了
精准率(Precision)
精准率(Precision)又称查准率:预测为正的样本中真实为正的样本。
P
r
e
c
i
s
i
o
n
=
T
P
/
(
T
P
+
F
P
)
Precision = TP/(TP+FP)
Precision=TP/(TP+FP)
召回率(Recall)
召回率(Recall)又称查全率:真实为正的样本中预测为正的样本。
r
e
c
a
l
l
=
T
P
/
(
T
P
+
F
N
)
recall = TP/(TP+FN)
recall=TP/(TP+FN)
准确率(Accuracy)
准确率(Accuracy):预测某类正确的样本比例
A
c
c
u
r
a
c
y
=
(
T
P
+
T
N
)
/
(
T
P
+
T
N
+
F
P
+
F
N
)
Accuracy = (TP+TN)/(TP+TN+FP+FN)
Accuracy=(TP+TN)/(TP+TN+FP+FN)
举个栗子
假设银行有1000个信用卡客户,其中有10名欺诈用户。现有一个分类器检测这1000个信用卡客户,结果预测出20个欺诈用户,其中有4名真正的欺诈用户,另外16名实际上为非欺诈用户,则混淆矩阵如下:
真实值\预测值 | Positive(1) | Negative(0) |
---|---|---|
Positive(1) | True Positive (TP=4) | False Positive (FP=16) |
Negative(0) | False Negative (FN=6) | True Negative (TN=974) |
则指标值分别为:
Accuracy = (4+974)/1000 = 0.978
Precision = 4/20 = 0.25
Recall = 4/10 = 0.4
案例中可以发现,尽管分类器的准确率达到了97.8%,但是如果建立模型目的是尽可能找出隐藏在1000名客户中的欺诈客户,则这个分类器并不好。预测为欺诈且真实为欺诈的比率(Precision)仅为25%,真实为欺诈预测为欺诈的比率(Recall)仅为40%,这个比例对银行而言是不够好的,可能因为漏判了60%的欺诈客户,导致银行出现比较严重的违约可能,造成较大的损失。
总结
模型整体预测效果看Accuracy(准确率);在预测欺诈、违约、流失客户时需要看Recall(召回率),召回率越高,说明模型更能够识别欺诈、违约客户。想要知道分类器某个分类的准确性则使用Precision(精确率)。