机器学习分类任务效果评估指标大全(包含ROC和AUC)

目录

1.1、什么是混淆矩阵?

1.2、混淆矩阵是什么样子的?

1.3、常见二分类混淆矩阵

2.1、混淆矩阵的指标

2.2、混淆矩阵的二级指标

        2.2.1、准确率:

         2.2.2、精确率:

         2.2.3、召回率(灵敏度):

         2.2.4、特异度:

2.3、混淆矩阵的三级指标

        2.3.1、F1-Score

3.1、ROC曲线和AUC面积

4.1、Python实现ROC曲线

5.1、其他


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和AUC)_第1张图片

        我们不难看出来 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曲线等等。

你可能感兴趣的:(机器学习,python,线性代数,算法,机器学习)