机器学习结果指标评估

简介: ROC、混淆矩阵、PR曲线

第一种:ROC(Receiver Operating Characteristic)

目的:

(1)分类结果往往不是0和1 而是0-1之间的连续变量 为此需要设定一个阈值线进行分类

(2)accuracy评价方式已经满足不了。也即是引入:类不平衡问题,链接

其主要分析工具是一个画在二维平面上的曲线——ROC curve。横坐标是false positive rate(FPR),纵坐标是true positive rate(TPR)

引入:混淆矩阵

真阳性TP(True Positive)、真阴性TN(True Negative);假阳性FP(False Positive)、假阴性FN(False Negative)

image.png

设定1为阳性,正类,0为阴性,负类

真阳性TP(True Positive):表示实际类别是1,预测为1.(其中1为我们想要检出的目标)

真阴性TN(True Negative)表示实际类别是0,预测为0.

假阴性FN(False Negative)表示实际类别是1,预测为0.

假阳性FP(False Positive)表示实际类别是0,预测为1.假的预测为阳性

举例:对应于疾病检测,若我们要检测出肿瘤为1,健康为0。

TP就表示正确的检测出肿瘤,TN表示正确的检测出健康类别

FN表示将肿瘤错误的检测为健康,FP表示将健康错误的检测为肿瘤;

FN和FP都是错误的检测(F),N表示预测为0(负类),P表示预测为1(正类)

TP和TN都是正确的检测(T)

它们之间的关系:

b72105eeb8e6df8bb3a1a25bcee4f1b5_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

上图说明:虚线左代表预测为负类,虚线右代表预测为正类;虚线A往右,则TP、FP变小,则查准率变高;FP变小、FN变大则查全率变低

准确率(Accuracy):Acc = ( TP + TN ) / ( TP+FP+TN+FN)

查准率(从字面理解,预测出的正类中,确实为正类的准确率),也称准确率,

            也称为阳性预测值(Positive Predictive Value PPVprecision  精确率

P=TP/(TP+FP)

举例:正确预测为肿瘤的人数/预测出的肿瘤人数

查全率(从字面理解,实际所有的正类中,预测为正类的准确率),也称召回率

R=TP/(TP+FN)

查全率等价于真阳性率(TPR),别名:灵敏度、命中率、召回recall、敏感度(SE)Sensitivity

TPR=TP/(TP+FN)

含义:1(正确预测的正类)/所有正类(TP 正确的预测为正类+错误的预测为负类(原来是正类))

举例:肿瘤被识别为肿瘤/所有的肿瘤人数

假阳性率(FPR)(实际所有的负类中,预测结果为正类的概率)别名:误检率

FPR=FP/(FP+TN)

含义:0(原来是负类却错误的预测为正类)/所有的负类(FP+正确的预测为负类)

举例:健康人被识别为肿瘤的个数/所有的健康人数

特异性Specificity:实际所有的负类中,预测结果为负类的概率(SP)真阴性率

SPC=TN/(TN+FP)

参考:https://www.cnblogs.com/leezx/p/6105212.html

高敏感性低特异性时,阳性诊断(真阳性率)具有诊断意义;

高特异性低敏感性时,阴性诊断(真阴性率)具有排除诊断意义。

阴性预测值(negative predictive value, NPV)指预测结果为阴性的受试者中确实为阴性(真正未患病的)的比例

NPV:Negative predictive value

计算公式:NPV=TN / (FN + TN)

参考:https://blog.csdn.net/qimo601/article/details/87528926

假阴性率 (False Negative Rate):FNR = FN /(TP + FN)

通过FPR(横轴)和TPR(纵轴)构成ROC曲线,其中FPR越小时TPR越大越好,也即是曲线下的面积越大越好。

20e4c61ae609d4acc7d2c8f2de0b164c_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

b72105eeb8e6df8bb3a1a25bcee4f1b5_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

上图的曲线A往右走,(上边的蓝色包络)则FP减小TN增大,则假阳性率FPR变小,(下边的红色包络)TP变小,FN变大,则真阳性率TPR变小。假设左边为阈值1 , 右边为阈值0,通过阈值调整实现ROC曲线的绘制;正好对应ROC曲线:往左边则FPR和TPR减少。

其中上图的ROC曲线为锯齿状的原因是: 样例数目少使得计算出的(FPR,TPR)数目少。

AUC(Area Under the Curve)

AUROC表示计算ROC曲线(如上文中所述的蓝色曲线)下的面积,评价分类器性能好坏的指标。越大则分类器越好!

虚线为随机预测结果

面积计算:

9bcae614120c40410c8c505cf42c1b1d_20190106190229730.png

其中的xi和yi代表每ROC曲线上的每一个点。

第二种:PR曲线

4657c132522f397b3b38416f0da13f46_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

b72105eeb8e6df8bb3a1a25bcee4f1b5_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

单个模型的曲线获得:上面图说明:虚线左代表预测为负类,虚线右代表预测为正类;虚线A往右,则TP、FP变小,则查准率变高;FP变小、FN变大则查全率变低

解读:上图为ABC三个模型得出的PR曲线图,如何比较不同模型的分类性能?

(1)曲线C被曲线A包住,则模型A的分类效果比模型C的效果好;

(2)若两条曲线交叉,如A和B,则需要看具体的查全率和查准率值,评价方式有:比较曲线下面积、引入平衡点BEP、调和平均值F1

平衡点:查准率=查全率的点,越高则越好

调和均值F1:(精确率和召回率的调和均值,精确率和召回率都高时,F1值也会高

2593685015acf782ef8004452918c301_20190106134553377.png

调和均值的扩展:

2fd7774f46f61e377a8b76b85e08d666_20190106134707797.png

看更加看重的是查全率还是查准率,调节不同的值,并比较不同模型得出的F值。

单个模型下:

7bb230b07c39c0e69d77e43784909c4c_20190106193213909.png

有多个训练和测试得出的PR结果,可以采用1、先计算各个P和R,求平均,再求F1,F 2、计算的各个TP、TN、FP、FN,分别对应求平均,再求F1和F 

问题:单个模型下ROC曲线和PR曲线是如何绘制出来的?区分上面的多个测试集。

26f57e8726bff772b99fe4330b2d68a8_20190106195348529.png

这部分西瓜书解释不好!

参考:点击链接https://blog.csdn.net/zuolixiangfisher/article/details/81328297  讲的不错

5c86aab21a04b3573cf1cf68b64b0e6d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

5c86aab21a04b3573cf1cf68b64b0e6d_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2hlZGEz,size_16,color_FFFFFF,t_70.png

总结:用到的是一个测试集,样本点逐个比较,越往后则包含的点数越多。我们根据每个测试样本属于正样本的概率值从大到小排序然后我们按照样本的score(概率值)值,从大到小依次作为阈值,当样本score值大于等于阈值时则判定为正样本,否则为负样本;因此将会得到一组TPR和FPR的点,依据这些点就可以画出ROC曲线。

同理PR曲线的绘制类似,只不过计算的是P和R。

 ROC和PR曲线的区别,具有的优势

当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变【4】【6】。

    其中分布变化,具体是在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化

而PR曲线就会因为正负样本的分布变化而出现很大的改变。

b3c1af7735d30802fbec071c79702384_70.png

待续......


博客总结的全:https://blog.csdn.net/aliceyangxi1987/article/details/74181259


总结的优缺点:https://www.zhihu.com/question/30643044


参考:

【1】AUC以及AOC混淆矩阵1http://m.elecfans.com/article/648824.html

【2】Receiver Operating Characteristic (ROC)https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html

【3】ROC曲线与AUC值https://www.cnblogs.com/gatherstars/p/6084696.html 写的不错

【4】机器学习分类模型效果评估指标介绍https://blog.csdn.net/zuolixiangfisher/article/details/81328297

【5】西瓜书

【6】一篇关于ROC曲线的论文2006年:An introduction to ROC analysis    http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=E25A3B8C4747B3488D5CEFD0B61AB217?doi=10.1.1.646.2144&rep=rep1&type=pdf

【7】https://www.cnblogs.com/Allen-rg/p/5821949.html


目录
相关文章
|
23天前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
44 1
|
1月前
|
机器学习/深度学习 算法 API
机器学习入门(六):分类模型评估方法
机器学习入门(六):分类模型评估方法
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
116 8
|
2月前
|
机器学习/深度学习 数据采集 算法
利用未标记数据的半监督学习在模型训练中的效果评估
本文将介绍三种适用于不同类型数据和任务的半监督学习方法。我们还将在一个实际数据集上评估这些方法的性能,并与仅使用标记数据的基准进行比较。
183 8
|
2月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【9月更文挑战第13天】在数据科学与机器学习领域,Scikit-learn是不可或缺的工具。本文通过问答形式,指导初学者从零开始使用Scikit-learn进行模型训练、评估与选择。首先介绍了如何安装库、预处理数据并训练模型;接着展示了如何利用多种评估指标确保模型性能;最后通过GridSearchCV演示了系统化的参数调优方法。通过这些实战技巧,帮助读者逐步成长为熟练的数据科学家。
97 3
|
3月前
|
机器学习/深度学习 数据挖掘
机器学习模型的选择与评估:技术深度解析
【8月更文挑战第21天】机器学习模型的选择与评估是一个复杂而重要的过程。通过深入理解问题、选择合适的评估指标和交叉验证方法,我们可以更准确地评估模型的性能,并选择出最适合当前问题的模型。然而,机器学习领域的发展日新月异,新的模型和评估方法不断涌现。因此,我们需要保持对新技术的学习和关注,不断优化和改进我们的模型选择与评估策略。
|
4月前
|
机器学习/深度学习 算法 数据挖掘
从菜鸟到大师:Scikit-learn库实战教程,模型训练、评估、选择一网打尽!
【7月更文挑战第26天】在数据科学领域, Scikit-learn是初学者通往专家之路的必备工具。
66 5
|
4月前
|
机器学习/深度学习 数据可视化 开发者
视觉的力量!Python 机器学习模型评估,Matplotlib 与 Seaborn 如何助力决策更明智?
【7月更文挑战第23天】在Python机器学习中,模型评估不可或缺。Matplotlib与Seaborn作为数据可视化工具,助力洞察模型性能。Matplotlib基础灵活,构建复杂图表;Seaborn在其上层,简化绘图,提升美观。从折线图追踪损失到条形图对比准确率,两者互补,促进高效决策制定。尽管Matplotlib掌控力强,但Seaborn友好快捷,适于统计图形。结合使用,可将数据转化成深刻见解。
42 6
|
4月前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【7月更文挑战第25天】在数据科学中,模型评估是理解模型泛化能力的关键。对新手来说,众多评估指标可能令人困惑,但Scikit-learn简化了这一过程。
55 2
|
5月前
|
机器学习/深度学习 人工智能 算法
算法金 | 一文彻底理解机器学习 ROC-AUC 指标
```markdown # ROC曲线与AUC详解:评估分类模型利器 本文深入浅出解释ROC曲线和AUC,通过实例和代码帮助理解其在模型评估中的重要性,旨在提升对分类模型性能的理解和应用。 ```
298 13
算法金 | 一文彻底理解机器学习 ROC-AUC 指标