每日记录 8.28 TP(真阳率) NP(假阳率) FP

参考链接:https://blog.csdn.net/u011534057/article/details/51733244

                  https://blog.csdn.net/sinat_28576553/article/details/83448724?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

                  https://blog.csdn.net/littlehaes/article/details/83278256?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

 

很早以前就知道这些概念了,不过由于跟自己的认知习惯不一样,所以碰到了还是会忘。于是索性把这些概念总结一下,以后再忘了也不好找(其他的文章太罗嗦额,计算方法也写的不清不楚)。

 

真阳率、假阳率

这些概念是从医学那引入到机器学习的,所以其思维模式多多少少跟机器学习有点出入。我们去看病,化验单或报告单会出现(+)跟(-),其分别表现阳性和阴性。比如你检查是不是得了某种疾病,阳性(+)说明得了,阴性(-)说明没得。

那么这种检验到底靠不靠谱呢?科研人员在设计这种检验方法的时候希望知道,如果这个人确实得了病,那么这二个方法能检查出来的概率是多少呢:

真阳率:

含义是检测出来的真阳性样本除以所有真实阳性样本数。

假阳率:

检测出来的假阳性样本数除以所有真实隐形样本数。

ROC

很简单,就是吧假阳率当作X轴,真阳率当Y轴画一个二维平面直角坐标系。然后不断调整检测方法的阈值,即最终得分法偶遇某个值就是阳性,反之就是阴性,得到不同的真阳率和假阳率数值,然后描点。就可以得到一条ROC曲线。

需要注意的是,ROC曲线必定起于(0,0),止于(1,1),因为,当全部判断 为阴性时,就是(0,0);全部判断为阳性(+)时就是(1,1)。这两点间斜率为1的线段表示随机分类器。所以一般分类器需要在这条线上方。

 

方案一:

我们可以对于总体样本中的M个正样本和负样本,组成个pair,如果某个pair正样本score大于负样本,则记1分,反之记0分,先等记0.5分。然后总分初一AUC的值了。复杂度

方案二:

基本思想一样,不过复杂度可以缩减到。

首先,我们将所有样本毒粉从大到小排序,则排名最高的样本rank为M+N,第二的为M+N-1,以此类推。然后我们将所有正样本的rank加和,其思想为:排名k的正样本至多比k-1个负样本的score要大。当我们将正样本的rank加权后,再减去,即正样本的个数,就是正样本scorel比负样本score大的pair个数。在除以就是AUC的值了。

 

注意:对score相等的样本,需要赋予相同的rank(无论这个相等的score是出现在同类样本还是i不同类的样本之间,都需要这样处理)。具体操作就是把所有这些score相等的样本的rank取平均值。然后再使用上述公式。比如score为0.8的两个样本,rank为7和8,则其最终代入公式为rank7.5。

 

TP、True Positive   真阳性:预测为正,实际也为正

FP、False Positive  假阳性:预测为正,实际为负

FN、False Negative 假阴性:预测与负、实际为正

TN、True Negative 真阴性:预测为负、实际也为负

 

也就是说,预测和实际一致则为真,预测和实际不一致则为假;如果预测出来是“正”的,则为“阳”,预测结果为 “负”,则为“阴”。

 

先看一个简单的二分类问题。

比如说总共有100个人,其中60个人患有疾病,40个人是健康的。我们的要找出里面的病人,我们一共找出了50个我们认为的病人,其中40个确实是病人,另外10个是健康的。因为我们要找的是“病人”,所以“病人”就是正样本,健康者是负样本。

TP 正阳性:预测为正,实际也为正,也就是预测为病人,实际也是病人的样本数目,一个有40个。

FP 假阳性:预测为正,实际为负。预测为病人,但实际不是病人,有10个。

FN 假阴性:预测为负,实际为正。我们找出了50个我们认为的病人,剩下50个我们认为都是健康的,但事实上剩下的50个人中,有20个是病人。这20个就是假阴性的数目。预测没病,但实际有病。

TN 真阴性:预测为负,实际为负。我们找出了50个我们认为的病人,剩下的50个就是我们预测的负样本,但是这50个样本中,有20个是病人,剩下30个才是负样本,所以真阴性的个数为30。

以一个等级预测为例。

人员

璇璇

晓慧

美君

鱼丸

奶副

菌菇

铁扣

甜甜

梦慧

实际等级

A

A

A

B

B

B

C

C

C

预测等级

A

A

B

B

A

C

C

B

B

为了叙述方便,下文一律把“等级”称呼为“类”。

首先看真阳性TP:预测为正,实际也为正。也就说本来属于哪个类,预测出来还是那个类,就叫真阳性。对于类A而言,实际是A,预测出来还是A的有“璇璇”和“晓慧”,那么类A的真阳性TP的个数为2。对于类B而言,实际是B,预测出来还是B(说成预测出来是B,实际也是B是等效的)的只有“鱼丸”,所以类B的真阳性个数为1。同理对于类C而言,真阳性TP的个数也为1。

接下来看假阳性FP:预测为正,实际为负。就是说你预测她是某个类,但她实际不是,就是假阳性。对于类A而言,假阳性FP的个数为1,就是“奶副”,预测为A,但实际是B。对于类B而言,假阳性FP的个数为3,分别是“美君”,“梦慧”和“甜甜”,预测出来是B,但实际都不是。类C的假阳性FP个数为1,是“菌菇”,预测出来是C,但实际是B。

假阴性FN,预测与负、实际为正。就是预测不是,但是实际是,还是结合前边的表格来看。对于类A而言,假阴性就是预测不是A,但实际是A(注意和假阳性的区别),这样的情况有“美君”,预测为B(负),但实际是A(正)所以类A假阴性的个数为1。类B假阴性的,有“奶副”和“菌菇”,所以为2。同理类C的假阴性个数为2,分别是“甜甜”和“梦慧”。

至于真阴性在多分类中的应用我暂时还没搞明白。不过无碍,毕竟还是用Precision和Recall比较多,而这两个用不到真阴性。

 

二:精确率(Precision),召回率(Recall),准确率(Accuracy)

准确率(Accuracu):这会儿三个指标里最直观的就是准确率:,模型判断正确的数据(TP+TN)占总数据的比例。

Acc= (TP+TN)/(TP+TN+FP+FN)

召回率(Recall):针对数据集中所有正例(TP+FN)而言,模型正确判断出的整理(TP)占数据集中所有正例的比例。FN表示被模型误认为是负例但实际是正例的数据。召回率也叫查全率,以物体检测为例,我们往往把图片中的物体作为正例,此时召回率高代表着模型可以找出图片中更多的物体。

Recall =(TP)/(TP+FN)

精确率:针对模型判断出的所有整理而言。其中真正例(TP)占的比例。精确率也叫查准率,还是以物体检测为例,准确率高表示模型检测出的物体中大部分是物体,只有少量不是物体的对象被当成物体。

Precision = (TP)/(TP+FP)

区分好召回率和精确率的关键在于:针对的数据不同,召回率针对的是数据集中的所有正例,精确率针对的是模型判断出的所有正例。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值