精度/召回率权衡 ROC曲线

  看《机器学习实战:基于Scikit-Learn 和TensorFlow》 第三章,而且2号晚做虎牙的笔试题,也考了不少关于这方面的,所以打算总结一下。

1.  首先我自己觉得比较好记的理解:一个目标它本身就由真假(T、F)来归类,而靠分类器就是用正负(P 、N)来判别。若本身是真,判断为真,就是真正类;若本身为假,判断为负,就是真负类。那另外俩,同行的正负相同,也只能是假了。

实际(右)

预测(下)

真正类(TP) 假正类(FP)
假正类(FN) 真负类(TN)

精度 =  \frac{TP}{TP+FP} ,  就是真正类占判断为正的比率;   

召回率 =  \frac{TP}{TP+FN},就是真正类占本身为真的比率;

F1分数精度/召回率权衡 ROC曲线_第1张图片,方便地将精度和召回率组合成一个单一的指标。(吐槽:这博客对公式真的很不友好。。)

期望就是精度和召回率都能很高就好啊,但是……看2

2. 精度/召回率权衡:随着精度的增加,召回率会降低;召回率增加,精度就会降低。

书上解释: 要理解这个权衡过程,我们来看看SGDClassifier如何进行分类决策。对于每个实例,它会基于决策函数计算出一个分值,如果该值大于阈值,则将该实例判为正类,否则便将其判为负类。图3-3显示了从左边最低分到右边最高分的几个数字。假设决策阈值位于中间箭头位置(两个5之间):在阈值的右侧可以找到4个真正类(真的5),一个假正类(实际上是6)。因此,在该阈值下,精度为80%(4/5)。但是在6个真正的5中,分类器仅检测到了4个,所以召回率为67%(4/6)。现在,如果提高阈值(将其挪动到右边箭头的位置),假正类(数字6)变成了真负类,因此精度得到提升(本例中提升到100%),但是一个真正类变成一个假负类,召回率降低至50%。反之,降低阈值则会在增加召回率的同时降低精度。

精度/召回率权衡 ROC曲线_第2张图片

本人理解:先看轴上数据,可以知道,数据本身为真的有6个5,也就是TP+FN=6(结合上面的2×2表看),那分类器实际怎么归类的呢?就和设置的阈值有关,在俩5之间时,分类器归类在大于阈值的都为正,那就是有5个数,但实际里面只有4个是5(有1个是6),那么TP=4,FP=1,那么计算精度和回归率就很容易了。增加阈值的话,虽然归类为真的数据变少了,但是数据本身为5的个数变少了,使得分类为正的比率增大了,也就是精度增大了(我觉得这应该都是基于这个例子来说,属于一般规律。。),但是召回率应该是下降了。

3. ROC曲线:横、纵坐标算的都是预测正类占实际本身假、真的比率。(我的说法)

真正类率(也就是召回率)(True Postive Rate)TPR: TP/(TP+FN),代表分类器预测的正类中实际正实例占所有正实例的比例。Sensitivity灵敏度

负正类率FPR: FP/(FP+TN),代表分类器预测的正类中实际负实例占所有负实例的比例。1-Specificity

真负类率(True Negative Rate)TNR: TN/(FP+TN),代表分类器预测的负类中实际负实例占所有负实例的比例,TNR=1-FPR。Specificity 特异度

精度/召回率权衡 ROC曲线_第3张图片

同样这里再次面临一个折中权衡:召回率(TPR)越高,分类器产生的假正类(FPR)就越多。(极端就是全部预测为正类)虚线表示纯随机分类器的ROC曲线;一个优秀的分类器应该离这条线越远越好(向左上角)。
有一种比较分类器的方法是测量曲线下面积(AUC。完美的分类器的ROC AUC等于1,而纯随机分类器的ROC AUC等于0.5。

 

由于ROC曲线与精度/召回率(或PR)曲线非常相似,因此你可能会问如何决定使用哪种曲线。有一个经验法则是,当正类非常少见或者你更关注假正类而不是假负类时,你应该选择PR曲线,反之则是ROC曲线。(这个不怎么明白。。)

 

 

 

 

你可能感兴趣的:(捣鼓)