目录
1.1、什么是混淆矩阵?
混淆矩阵也称误差矩阵(Confusion Matrix),是用来求得分类问题的指标计算。比如分类指标:准确率(正确率),精确率,召回率等等。我们都可以通过混淆矩阵计算得出。具体如下
1.2、混淆矩阵是什么样子的?
混淆矩阵是用来总结一个分类器结果的矩阵。对于k元分类,其实它就是一个k x k的k维表格,用来记录分类器的预测结果。
1.3、常见二分类混淆矩阵
真实为1 | 真实为0 | |
预测为1 | TP | FP |
预测为0 | FN | TN |
其中:
真实样本为1,预测样本结果为1。称为真阳性。(True Postive) 简称TP。
真实样本为1,预测样本结果为0。称为假阴性。(False Negative)简称FN。
真实样本为0,预测样本结果为1。称为假阳性。(False Postive) 简称FP。
真实样本为0,预测样本结果为0。称为真阴性。(True Negative) 简称TN。
注:FN的情况其实是统计学上的第二类错误(Type II Error),我们可以理解为放跑了坏人,
FP的情况其实是统计学上的第一类错误(Type I Error),我们可以理解为误杀了好人
2.1、混淆矩阵的指标
做为二分类输出结果,我们肯定是希望我们的分类器越准确越好。那么对应混淆矩阵中也就是TP和TN越多越好,而FP和FN越少越好。知道这一决策方法后,我们往往在得到混淆矩阵后去观察我们的TP和TN所在的格中数据量的多少。
又因为混淆矩阵只能观察到TP和TN的数量的多少,混淆矩阵中不管是TP 或 TN 或 FP 又或 FN,统计的只是样本所属数量。并不能完全代表分类器的好坏。有时候在特定的不同场景中,我们侧重的点也是不一样的。所以就有了分类二级指标。
2.2、混淆矩阵的二级指标
真实为1 | 真实为0 | |
预测为1 | TP | FP |
预测为0 | FN | TN |
2.2.1、准确率:
所有预测正确的样本数量占总体样本比例。
2.2.2、精确率:
所有预测为1的样本中,实际也为1的样本所占比例。
2.2.3、召回率(灵敏度):
所有真实为1的样本中,预测正确(为1)的样本所占比例。
2.2.4、特异度:
所有预测为1的样本中,真实为1的样本所占比例
2.3、混淆矩阵的三级指标
2.3.1、F1-Score
根据二级指标,延伸出了一个三级指标。即F1-score。它综合了精确率(Precision)和召回率(Recall)。公式如下:
注:F1-score是一个0-1之间的小数,越接近1表示分类结果越好。
3.1、ROC曲线和AUC面积
下图为我使用逻辑回归训练并花的一个ROC曲线图。
我们不难看出来 ROC曲线是根据每个样本点的TPR值和FPR值,画出来的一个图。其中横轴为FPR,纵轴为TPR。曲线下方为AUC面积,AUC的取值一般在0.5~1之间,AUC面积越大越好,ROC曲线越接近左上方越好。
4.1、Python实现ROC曲线
Python的sklearn已有封装ROC曲线的接口,我们直接调用传入参数即可输出。
from matplotlib import pyplot as plt
plot_roc_curve(lr, test_x, test_y) # test_x:测试样本集;test_y:测试标签集
plt.title("ROC曲线")
plt.show()
5.1、其他
机器学习分类指标其实还有很多,列如:PR曲线,KS值,AR值,KS曲线等等。