打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
ROC曲线及其matlab实现ROC曲线的绘画

ROC曲线(Receiver Operating Characteristic Curve)是利用Classification模型真正率(True Positive Rate)和假正率(False Positive Rate)作为坐标轴,图形化表示分类方法的准确率的高低。

ROC图的一些概念定义: 
真正(True Positive , TP)被模型预测为正的正样本 
假负(False Negative , FN)被模型预测为负的正样本 
假正(False Positive , FP)被模型预测为正的负样本 
真负(True Negative , TN)被模型预测为负的负样本 

真正率(TPR)
TPR = TP /
TP + FN 
正样本预测结果数 / 正样本实际数 。在ROC曲线中,TPR作为Y轴

假正率 FPR 
FPR = FP /
FP + TN 
被预测为正的负样本结果数 /负样本实际数 。在ROC曲线中,FPR作为X轴

关于ROC曲线的相关概念的解释,请参阅cowboy_wz的博客ROC曲线:http://blog.csdn.net/chl033/article/details/4507544


我在此主要做的事情是画出ROC曲线工程实现方面的一些解释。我们设计一个函数,此函数需要有一个模型预测值predict和数据标签值ground_truth作为输入参数。分为几步进行实现。


(1)统计数据标签值ground_truth(及y)中分类为0和分类为1的数据数目:

pos_num=sum(ground_truth==1);neg_num=sum(ground_truth);


(2)对利用模型求出的预测值predict由低到高进行排序;对应数据原来所在位置进行索引记录,用于重新排序ground_truth.利用函数sort实现,sort详情请查看help文档:

[pre,Index]=sort(predict); ground_truth=ground_truth(Index);


(3)对ground_truth和predict遍历i=1:n,n是测试集数目。其目的是随着predict中概率的增加,随着增加判断正负样本的阈值;也就是说取遍历到的predict值为阈值,大于阈值的假设预测为正样本(阈值右边),小于阈值的假设预测为负样本(阈值左边)。

所以同时我们可得到真正TP 和假正FP值:TP=sum(ground_truth(i:n)==1);FP=sum(ground_truth(i:n)==0);

这时我们就可以求取TPR 和FPR了:TPR=TP/pos_num;  FPR=FP/neg_num;   把求取到的值保存起来(x(i),y(i)),因为这就是我们要在图上画的点。


(4)返回曲线与坐标轴间的面积auc。我们的目的是测量数据的准确率,这个面积就是一个量度,auc越大,准确率越高。

auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;


实现ROC曲线的代码如下:

%  predict       - 分类器对测试集的分类结果
%  ground_truth - 测试集的正确标签,这里只考虑二分类,即0和1
%  auc            - 返回ROC曲线的曲线下的面积
function auc = plot_roc( predict, ground_truth )
%初始点为(1.0, 1.0)
%计算出ground_truth中正样本的数目pos_num和负样本的数目neg_num

pos_num = sum(ground_truth==1);
neg_num = sum(ground_truth==0);

m=size(ground_truth,1);
[pre,Index]=sort(predict);
ground_truth=ground_truth(Index);
x=zeros(m+1,1);
y=zeros(m+1,1);
auc=0;
x(1)=1;y(1)=1;


for i=2:m
TP=sum(ground_truth(i:m)==1);FP=sum(ground_truth(i:m)==0);
x(i)=FP/neg_num;
y(i)=TP/pos_num;
auc=auc+(y(i)+y(i-1))*(x(i-1)-x(i))/2;
end;


x(m+1)=0;y(m+1)=0;
auc=auc+y(m)*x(m)/2;
plot(x,y);
end

具体实现结果:

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
RPubs
[Algorithm] 机器学习算法常用指标总结
模型评价(AUC,ROC曲线,ACC, 敏感性, 特异性,精确度,召回率,PPV, NPV, F1)
也谈谈机器学习中的Evaluation Metrics
机器学习之分类器性能指标之ROC曲线、AUC值
深入理解ROC曲线的定义以及绘制ROC曲线过程,其与模型性能的关系,以及AUC_roc曲线描述的是测试还是训练
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服