在进行二分类时,机器学习会计算测试样本的预测概率,再人为设定一个阈值,当预测概率大于这个阈值时为正类,反之为负类。这个阈值的设定很重要,直接影响了分类器的泛化能力。
roc曲线就是根据不同的阈值,比较同一个分类器的泛化能力。
在提roc曲线时,先了解下这几个指标:
TP:true positive,正类样本被分类器正确预测为正类,即真正类
FP:false positive,负类样本被分类器错误预测为正类,即假正类
TN:true negative,负类样本被分类器正确预测为负类,即真负类
FN:false negative,正类样本被分类器错误预测为负类,即假负类
TPR:true positive rate,正类样本被分类器预测为正类占样本中所有正类的比率,即 TP / (TP + FN)
FPR:false negative rate,负类样本被分类器预测为正类占样本中所有负类的比率,即FP/(FP+TN)
改变不同的阈值,都会得到一对TPR, FPR,ROC曲线就是以FPR为横坐标,TPR为纵坐标绘制的曲线。如下图所示:曲线上的每个点对应不同阈值下的FPR和TPR。
理想目标:TPR=1,FPR=0,即图中(0,1)点,故ROC曲线越靠拢(0,1)点,越偏离45度对角线越好。
图1ROC曲线是针对一个分类器下的观察,如果要分析多个分类器哪个泛化能力比较好的情况下,如果ROC曲线出现相交的情况则难以评定最优分类器。这时候就引入了AUC衡量指标,即ROC曲线下的面积。
这里先强调一下:
TPRate的意义是所有真实类别为1的样本中,预测类别为1的比例。
FPRate的意义是所有真实类别为0的样本中,预测类别为1的比例。
AUC表示的意思为,随机从样本中抽出一个正样本和一个负样本,分类器预测正样本为正的概率为p1,预测负样本为正的概率为p2,AUC则表示了p1 > p2的概率。
一下子看可能不好理解,下面就从数学的角度上稍作解释会更加明朗。
AUC即ROC曲线下的面积,而ROC曲线的横轴是FPRate,纵轴是TPRate,当二者相等时,即y=x,如下图:
图2它所表示的意义为无论是样本是正样本还是负样本,分类器预测两者为正样本的概率是一样的,换句话说,分类器对于正例和负例毫无区分能力,和抛硬币没什么区别。这是最差的情况,此时分类器的AUC值为0.5。
而我们希望分类器达到的效果是:对于真实类别为正类的样本,分类器预测为正类的概率(即TPRate),要大于真实类别为负类而预测类别为正类的概率(即FPRate),即y>x,因此大部分的ROC曲线长成下面这个样子:
图3最理想的情况下,没有真实类别为1而错分为0的样本,TPRate一直为1,于是AUC为1,这便是AUC的极大值。
网友评论