1. 算法预测结果的表示
二分类算法(也可表述为结果为两种的分类器)的输出结果只有0/1两种状态(或者表示为真和假,更容易理解),这样对一个给定的数据,算法判别的预测结果与实际情况的组合共有四种,【预测为真,实际为真】、【预测为真,实际为假】、【预测为假,实际为真】、【预测为假,实际为假】。这四种情况的关系可以用下面的混淆矩阵来标识:
实际为真 | 实际为假 | |
---|---|---|
预测结果正确 | 将正类预测为正类数(True Positive, TP)【预测为真,实际为真】 | 将负类预测为负类数(True Negative, TN)【预测为假,实际为假】 |
预测结果错误 | 将负类预测为正类数(False Positive, FP)【预测为真,实际为假】 | 将正类预测为负类数(False Negative, FN)【预测为假,实际为真】 |
另一种表示方式是:
实际为真 | 实际为假 | |
---|---|---|
预测为真 | 将正类预测为正类数(True Positive, TP)【预测为真,实际为真】 | 将负类预测为正类数(False Positive, FP)【预测为真,实际为假】 |
预测为假 | 将正类预测为负类数(False Negative, FN)【预测为假,实际为真】 | 将负类预测为负类数(True Negative, TN)【预测为假,实际为假】 |
上面两种表达方式的不同在于,对预测结果的区分,是以预测结果区分,还是以预测结果的正确与否区分。
false positve 在医学检测中使用比较广泛。可以用肿瘤的检查来做示例:
一个病人,长了个肿瘤,去医院检查,分别有以下情况:
1、真实情况:恶性,检查结果:恶性:true positve,真阳性。
2、真实情况:良性,检查结果:恶性:false positve,假阳性。
3、真实情况:恶性,检查结果:良性:false negative,假阴性。
4、真实情况:良性,检查结果:良性:true negtive,真阴性。
2. 表征算法性能的指标
对二分类算法的评价指标主要有以下几方面:
2.1 准确率
准确率(Accuracy)是最常见的指标,即分类正确的样本数除以总的样本数: $$ ACC = (TP+TN)/(TP+FP+TN+FN) $$ 准确率对算法的评价较为直观,但是并未将样本的情况纳入考虑,当样本中实际为真和假的比例接近时,准确率有较好的评判价值。
比如对某个地区某天地震的预测,假设我们有不同维度特征作为地震分类的输入,输出类别只有两个:0:不发生地震、1:发生地震。一个不加思考的分类器,对每一个测试用例都将类别划分为0,那那么它就可能达到99%的准确率,但真的地震来临时,这个分类器毫无察觉,这个分类带来的损失是巨大的。99%的准确率的分类器却不是我们想要的,是因为数据分布不均衡,类别1的数据太少,即使这部分数据被完全错分,依然可以达到很高的准确率,但这样却忽视了我们真正关注的东西。
又例如:在正负样本不平衡的情况下,准确率这个评价指标有很大的缺陷。比如在互联网广告里面,点击的数量是很少的,一般只有千分之几,如果用acc,即使全部预测成负类(不点击)acc也有 99% 以上,没有意义。因此,单纯靠准确率来评价一个算法模型是远远不够科学全面的。
2.2 错误率
错误率(Error Rate)与准确率相反,描述的是分类错误的比例,即: $$ Error-rate = (FP+FN)/(TP+TN+FP+FN) $$ 显然准确率与错误率的总和必定为1
2.3 灵敏度
灵敏度(Sensitive)表示分类算法对正例的识别能力,即所有正例中,被正确识别的比例。 $$ Sensitive = TP/P $$
2.4 特效度
特效度(Specificity)表示算法对负例的识别能力,即所有负例中,被正确识别出的比例 $$ Specificity = TF/F $$
2.5 精确率(精度)
精确率(Precision)表示被分为正例的数据中,实际为正例的比例。 $$ Precision = TP/(TP+FP) $$
2.6 召回率
召回率(Recall)是覆盖面的度量,与灵敏度是同一指标。
2.7 总和评价指标
精确率P和召回率R有时会出现矛盾的情况,对P和R进行加权调和平均,得到F-Measure(F-Score):
$$
F=\frac{(a^2+1)PR}{a^2(P+R)}
$$
当a=1
时,就是常见的F1,即P和R的调和平均:
$$
F1=\frac{2P*R}{P+R}
$$
值得注意的是,在数据分布不平衡的情况下,上述指标对算法性能的表征能力会有一定程度变化。
Ref: