机器学习之偏斜类误差度量
机器学习分类模型存在一种情况叫偏斜类。偏斜类简单理解就是在训练模型时由于正样本和负样本之间的严重不平衡,导致模型最后检测全部都是1或者全部都是0。假设正样本的y值为1,当正样本远远多于负样本的时候,训练好的模型就会一直输出1,这会给我们判断模型优劣带来一定的障碍,比如模型输出1的概率是99.8%,输出0的概率是0.2%,这里我们就会认为模型的精度很好,误差很小。但是其实这种结果是由于数据集的不平衡导致的。因此我们迫切需要一种新方法判断模型的优劣而不仅仅是从accuracy和error。
因此我们接下来引出两个参数一个是precision,另一个是recall。如下图:
Actual class是实际的类别,Predicted class是预测的类别。当预测类别和真实类别均为1时为True positive(TP),当真实类为0预测为1则说明预测错误为False positive(FP),当预测为0真实类为1则预测错误为False negative(FN),当预测和真实均为0时说明为True negative(TN)。
假设y=1是要检测的类别:
precision(查准率) =TP / (TP+FP) 查准率是真实类别和预测类别均为1然后除以预测类别为1的总和(红色框框)
Recall(召回率) = TP / (TP+FN) 召回率是真实类别和预测类别均为1除以真实类为1(不管预测对不对,黄色框框)
当出现偏斜类,假设正样本很多,负样本很少时就会出现模型一直识别为1,这样就会使得召回率很高,查准率很低,当正样本很少,负样本很多,模型就会一直识别0,就会导致召回率接近为0。因此当出现偏斜类时就能根据这两个参数判断模型的性能,我们实际应用中希望召回率和查准率两者均高一点,模型性能会好一些。
由于查准率和召回率有两个数值,有时候难以抉择,如下图 :
有三个算法,3个算法的查准率和召回率如上图,如何根据这些数值选择机器学习算法。先观察第三个算法,召回率很高,查准率很低说明模型一直识别1,样本出现偏斜。
可根据如下公式计算出的数值大小判断选择哪一个算法,P代表查准率,R代表召回率: