前言:随着大数据的不断深入,机器学习越来越受到我们的热捧,因此机器学习算法出现的也越来越多,面对已经处理好的数据选择一个算法,我们如何知道这个算法是否合适呢。这个就需要用数据测试模型,对模型性能进行评估,一般数据需要分训练集和测试集,训练集就是用来训练模型的嘛,测试集则是测试模型的泛化性能,还有一个比较常见的是验证集,验证集是在模型训练过程中实时评估模型的性能,这个可以让模型训练时的效果有迹可循,配合一些函数可以让模型防止过拟合现象等等,这个在这里就不细讲。上面这些数据集评估模型性能的方法就是今天要说的了。
-
符号了解
下面是我做的一张符号图,有利于理解下面所要讲的评估指标。在这里稍微解释下这个表格图,预正实负:训练好的模型根据样本数据特征预测出该样本属于正例(1),但该样本的标签是正例(1),所以预测的这个正例是真的正例【真正】,最后用两个单词的首字母TP表示。
-
准确率
A = ( T P + T N ) ( T P + T N + F P + F N ) A = \frac{(TP+TN)}{(TP+TN+FP+FN)} A=(TP+TN+FP+FN)(TP+TN)
解释:对给到的要评估数据集的样本进行预测,求预测正确的样本数占所预测的总样本数的比例。
适用情况:可以客观反映所有类别的预测情况。
缺点:这个不适合去评估类别非常不平衡的数据集。比如说,一个数据集中有99个正例,1个反例,之后你的模型没训练全预测所给到的数据集为正,出来100个正例,之后模型用准确率这个指标去评估时出现准确率是99%,这显然有问题。在目标检测算法里就非常明显的突出了这个问题,假设目标检测中你所想要检测的目标为正例(1),不想检测的目标即为背景、为反例(0),在大部分情况下一张图中反例的数量远远大于正例的数量。 -
精确率
P = T P ( T P + F P ) P = \frac{TP}{(TP+FP)} P=(TP+FP)TP
解释:求在你预测的所有正例样本中真的是正例的所占的比率。你所认可的东西中有多少是受众所认可的。
适用情况:可以直观的表达出你所关心预测出的那个的类别的实际效果。假如你只关心正例,也就是说只要预测出的正例全是真的那就是好模型,有“大浪淘沙”的这个意思。 -
召回率
R = T P ( T P + F N ) R = \frac{TP}{(TP+FN)} R=(TP+FN)TP
解释:求对数据集中所有的正例样本被预测出来的个数占所有正例样本的比例。
适用情况:可以直观的表达出对你所关心的那个类别的预测效果。假如你只关心正例,也就是说只要样本中的所有正例全被预测出来那就是好模型,有“宁可错杀一千,也不愿放过一个”的这个意思。 -
F1指标
F = ( α 2 + 1 ) ∗ P ∗ R α 2 ∗ ( P + R ) F = \frac{(\alpha^2+1)*P*R}{\alpha^2*(P+R)} F=α2∗(P+R)(α2+1)∗P∗R
解释:该指标是精确率和召回率加权调和平均,其中F1指标是当 α \alpha α=1时的公式 F = 2 P R P + R F = \frac{2PR}{P+R} F=P+R2PR。指标越高预测模型越好,要想提高指标值,精确率和召回率两个值首先要相差不大而且都接近于1。
适用情况:利用了精确率和召回率的特点达到一个均衡状态,使评估模型更加具有说服力。所以适用性更广。
**缺点:**和准确率一样,对于数据类别不平衡时表现很差。 -
ROC曲线
T P R ( 真 正 率 ) = T P T P + F N TPR(真正率) = \frac{TP}{TP+FN} TPR(真正率)=TP+FNTP
F P R ( 假 正 率 ) = F P F P + T N FPR(假正率) = \frac{FP}{FP+TN} FPR(假正率)=FP+TNFP
解释:该指标是以假正率-真正率为x、y轴。一般分类模型输出的值是概率,所以设置一个范围在(0,1)的阈值就可以计算一个点(FPR,TPR)。
ROC曲线生成:若range(0,1,0.05),将在0,1之间生成间隔为0.05的20个阈值,大于阈值的则为正类,小于就为负类,所以每一个阈值都会对测试集的预测结果计算一个(FPR,TPR)的点,当threshold取值越多,生成的ROC曲线就越平滑。
ROC曲线实际意义:如下图所示,最理想的分类器是到达(0,1)点的折线。如果我们说一个机器学习算法A比B好,那么我们指的是A的ROC曲线完全覆盖了B的ROC曲线,如果有交点,只能说明A在某些场合优于B。
优点:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡现象,即负样本比正样本多很多(或者相反),所以这个指标作为评估模型性能有更大的说服力。 -
AUC值
解释:AUC就是 ROC曲线下方的面积,如下图蓝色部分,一般AUC值是在(0.5,1)范围内的。
AUC值意义:很多时候ROC曲线并不能清晰的说明哪个分类器的效果更好,而作为一个数值,对应AUC更大的分类器效果更好,这样更加直观、明了。
-
PR曲线
解释:顾名思义该指标是以召回率-精确率为x、y轴进行评判的。和ROC曲线一样通过阈值就可以计算点(召回率,精确率),只是计算的东西不同而已。曲线越靠近右上角说明模型越好,如下图。