ROC曲线——实例、原理及相关文献的绘制方法

数据分析最迷人的用途之一是创建一个机器学习预测模型,该模型可以根据现有数据区分不同类型的场景。通过定义一个清晰的模型,我们可以确定能够预测结果的最重要的因素,为战略假设开发有价值的洞察力,甚至通过友好的用户界面将模型的逻辑实现到软件应用程序中。

首先,我们需要评估所建立的预测模型是否具有良好且准确的预测能力!例如,如果我们的电子邮件程序的垃圾邮件分类器只能检测出50%不想要的电子邮件或请求,我们都会非常生气。本文将讨论如何使用经典工具来评估预测模型:受试者工作特征(ROC)曲线。

本文主要分三个部分来梳理ROC曲线的相关内容,大家可以根据自己的需求来选择:

1.使用ROC曲线分析的相关文献实例。

2.ROC曲线的原理和历史。

3.如何绘制ROC曲线

从SCI开始:金属综合征中瘦供体效应后内在敏感性的改善是由基线有意微生物群组成驱动的。

这是阿姆斯特丹大学学术医学中心在cell子刊2017发表的一篇文献。其中一个亮点提到对瘦供体FMT的反应是由基线粪便微生物群组成驱动的,使用ROC曲线来评估预测模型的质量。

为了比较同种异体FMT菌群与疗效的关系,根据FMT前后Rd值的变化将患者分为有反应组和无反应组,比较两组菌群的差异。从菌群多样性的变化来看,基于Shannon指数,发现两组菌群的多样性变化不明显,而基线菌群的多样性有显著差异(图5A),说明无应答者菌群的多样性明显高于应答者。随后,作者使用弹性网络算法elastic net?算法(邹和哈斯蒂,2005年)区分反应者和非反应者。为了避免过拟合,在数据的训练分区(80%)中使用十倍交叉验证,剩余的20%样本作为测试数据集。要选择的参数是L1,L2范数和正则化阈值之间的比值。稳定性采用80%随机二次抽样选取,***100次。在稳定性选择过程中,计算所有具有非零权重系数的特征。这些计数被归一化并转换成稳定的系数,对于总是选择的特征值,这些系数在1.0之间,对于从未选择的特征值,这些系数在0.0之间。通过随机实验评估由弹性网络算法获得的结果的统计有效性。根据该程序,结果变量(例如,同种异体与自体或有反应者与无反应者)随机重组,同时保留相应的微生物谱。重复100次,计算每次的ROC AUC评分。用于二元分类任务的性能度量是ROC AUC。ROC可以理解为正确分类同种异体受试者和自体受试者或有效和无效受试者的概率图。数据集中的交叉验证是通过在模型中随机隐藏20%的受试者并评估这组受试者的预测质量来完成的。ROC AUC评分使用0.5 AUC来衡量分类模型的预测准确性,这对应于随机结果。定义临界值0.05,并将原始数据集的真实AUC与该值进行比较。

通过ROC曲线对基线微生物组成预测6周代谢反应的模型进行评价,结果显示AUC=0.88,模型良好。

从该文献中得知,ROC曲线可用于评估用于寻找生物标记的预测模型的质量。

从SCI文章中了解:肠道微生物学和冶金学的变化与冠状动脉疾病的严重程度。

这是我们课题组与北京协和医学院合作于2019发表的一篇文章,重点研究不同冠心病(CAD)类型患者肠道菌群的差异。其中,对区分不同CAD亚型(稳定型冠心病(SCAD)、不稳定型心绞痛(UA)、心肌梗死(MI))的随机森林模型进行了ROC曲线评估,取得了较好的预测效果。

基于CAGs和CAD相关代谢型的亚群识别和预测

为了确定肠道菌群中CAG和代谢物模块能否作为区分冠心病不同阶段和正常冠状动脉的生物标志物,构建随机森林模型,根据24个CAG和72个血清代谢类型对冠心病不同阶段进行分类,并通过ROC曲线对分类进行检验(详见“材料与方法”)。总共构建了五个预测模型(对照对CAD、对照对scad、scad对ua、scad对ACS和UA对MI)。

随后,作者利用该模型通过招募新队列进行分类预测,进一步论证了该疾病亚型识别模型的潜在分类能力。

总结:从这两篇文献中,作者通过某种分类机器学习预测模型寻找生物标志物,然后用ROC曲线对模型进行评估。因此,我们可以知道ROC曲线是检验预测模型质量的一种度量。那么除了这个目的,ROC曲线还能做什么呢?

为了进一步理解和应用ROC曲线,我们需要先了解ROC曲线的原理和过去。

关于ROC曲线的介绍文章很多。在此,我摘录个人认为比较详细有用的文章,理解一下。

第一,评估预测模型的方法

首先要明白,预测模型的类型可以分为回归模型和分类模型(分类模型有分类输出模型和概率输出模型两种算法,这里不赘述),不同模型的评价指标也是不同的。如何评价模型的好坏,机器学习(24)——一种常用的模型评价方法。分类模型的评价方法介绍首先需要知道自己构建的预测模型的类型,以确定评价方法,不限于使用ROC曲线。

ROC曲线原理:

ROC曲线的概念和意义请参考ROC曲线的概念和意义。

如果你英语很好,你也可以看看这个:Roc曲线——它们是什么,如何使用?

为了更直观的了解ROC,还可以看这个视频:ROC和AUC,解释清楚!

接收机工作特性曲线(接收机操作员特性曲线),最初用于评估雷达性能,也称为接收机工作特性曲线。ROC曲线实际上是由混淆矩阵导出的图形,以真阳性率(灵敏度)为纵坐标,假阳性率(1-特异性,1-特异性)为横坐标绘制。

自变量(检测项目)一般为连续变量(如检测到的蛋白因子丰度或含量、菌株、代谢物等。),而因变量(金标准,如一个疾病亚型的分类,治疗反应与无反应,疾病与非疾病)一般是二元变量。

ROC曲线图:随着阈值的降低,更多的值属于阳性范畴,敏感性和1-特异性也相应增加,因此ROC曲线呈增加趋势。那条45度对角线是参考线,也就是说ROC曲线要和这条曲线做比较。简单来说,如果我们不使用模型对客户进行随机分类,得到的曲线就是参考线。但是如果用模型来预测的话,应该比随机的好,所以ROC曲线离参考线越远越好,离得越远我们模型的预测效果就越好。

ROC曲线用于判断诊断的正确性。理想状态是曲线下面积为1,理想状态是曲线下面积在0.8到0.9之间,0.5对实验结果没有影响。

说到ROC曲线,离不开AUC(ROC曲线下面积),其判断方法是AUC要大于0.5。ROC曲线是基于与对角线的比较来判断模型的好坏,但这只是直观的定性分析。如果需要精确,就需要用AUC,即ROC曲线下面积(AUC)。

从AUC判断分类器(预测模型)优劣的标准;

AUC = 1,是一个完美的分类器。当使用该预测模型时,至少存在一个阈值来获得完美的预测。在大多数预测情况下,没有完美的分类器。

0.5 & ltAUC & lt1,比乱猜要好。如果阈值设置适当,该分类器(模型)可以具有预测价值。

AUC = 0.5,就像随机猜测(如抛硬币),模型没有预测价值。

AUC & lt0.5,比乱猜差;但只要总是和预测背道而驰,总比乱猜好。

看图,参考线的面积是0.5。ROC曲线与其偏离越大,ROC曲线越靠近左上方,其下方的面积(AUC)越大,其中面积为0.869。我们可以通过比较AUC的值与0.5来评价一个分类模型的预测效果。

二、ROC曲线的历史和关键值

推荐阅读这篇文章:机器学习基础(1)- ROC曲线理解。这里从雷达兵使用ROC曲线评价的原故事来看,言简意赅。

ROC曲线最初是用来确定美国雷达“接收器操作员”如何错过日本飞机的。在模型预测判断中,会出现真阳、假阳、真阴、假阴三种情况,不同的雷达兵可能有自己的一套评价标准。对于每个接收到的信号,不管是大鸟还是轰炸机,每个雷达兵都会给出自己的判断结果,让每个雷达兵计算出ROC曲线上的一个关键点(一组FPR,TPR值),把大家的点连接起来,这就是最早的ROC。

ROC曲线需要知道几个关键值:

灵敏度:正确识别真阳性的比例。在这种情况下,健康患者的比例被诊断工具正确地识别。这有时被称为“召回”。

SN =真阳性/(真阳性+假阴性)

逆(1灵敏度)=?假阴性率。未被该工具检测到的健康患者被错误地识别为患有CAD。假阴性也称为第二类错误。

特异性:正确识别真阴性的比例。在这种情况下,可以通过诊断工具正确识别冠心病患者的比例。

SP =真阴性/(真阴性+假阳性)

逆(1-特异性)=?假阳性率。患有CAD的患者被错误地识别为没有CAD。假阳性也称为I型错误。

阳性预测值:这个工具报告的阳性比率实际上是阳性的。对于诊断工具报告缺乏CAD的患者组,PPV是实际上没有患病的患者的比例。这有时被称为“准确性”。

PPV =真阳性/(真阳性+假阳性)

负面预测值:该工具报告的负面影响比例实际上是负面的。对于诊断工具报告存在CAD的患者组,NPV是实际上没有CAD的患者的比例。

NPV =真负值/(真负值+假负值)

这里可以借助混淆矩阵来理解:

TP(真正):真为0,预测也为0。

FN(假阴性):真值为0,预测值为1。

FP(误报):真值为1,预测值为0。

TN(真负):真为0,预测也为0。

三、ROC曲线的主要功能

1,ROC曲线可以很容易的找出在任何边界值上识别疾病的能力。

2.选择最佳诊断限值。

3.两种或两种以上不同诊断试验鉴别疾病的能力的比较。在比较同一疾病的两种或两种以上诊断方法时,可将每个实验的ROC曲线画在同一个坐标上,直观识别优劣。靠近左上角的ROC曲线代表受试者最准确的工作。也可以通过计算每次测试的ROC曲线下面积(AUC)来进行比较。哪个测试具有最大的AUC是最好的诊断值。

第四,交叉验证和过拟合。

参考:你真的了解交叉验证和过拟合吗?

机器学习交叉验证的详细说明

10折叠交叉验证,留一法和分层抽样。

我意识到过度拟合似乎是一个难题,所以我想在这里补充一下:

简单来说,当训练集误差较小,测试集误差较大时,我们可以认为模型过拟合。这句话表达的另一个意思是,模型评价指标方差大,说明模型过拟合。此外,监督学习和无监督学习都存在过拟合的问题。

有个比喻还不错,这里也摘抄一下:

语文老师让同学A解释一句话:?鲁迅先生的一篇文章~ ~ ~ ~ ~ ~ '

欠适:穷学生:这是什么鬼?比例是英里英里~ ~ ~

过拟合:语文老师的解释:‘表面上是~ ~ ~,实际上是~ ~ ~ ~,本质上是~ ~ ~ ~,体现了~ ~ ~的心情,烘托了~ ~ ~’的气氛

正常:当时鲁迅先生认为时间不早了,该休息了。

那么,怎样才能在一定程度上避免过度拟合呢?这导致了交叉验证:

判断模型是否过拟合最简单的方法就是通过训练精度和测试精度的值直观地判断模型是否过拟合。比如训练集的准确率是90%,测试集的准确率是70%,那么我们可以认为模型是过拟合的。但这种方法没有明确的判断标准,完全靠个人主观判断——“感觉训练和测试的差别有点大,可能会过拟合。”

如何通过交叉验证避免过度拟合?

避免模型过拟合的方法可以总结如下:

-重新清理数据(删除稀疏特征,处理噪声数据(删除/替换))

-重新采样(改变采样方法等。)

-增加训练数据

-采用交叉验证培训模式。

-重新过滤功能

-降低模型的复杂度(增加正则项:L1,L2)

-辍学(在神经网络中,神经元以一定的概率工作)

本文讨论了如何使用交叉验证来避免模型过度拟合:

第一个功能是评估模型的性能。当我们通过一次性划分样本来训练和检验模型时,由于样本划分的偶然性,我们对模型的评价会不准确。所以可以用交叉验证来评估模型(一般是5折或者10%,sklearn默认用7折),N倍的交叉验证结果的平均值可以作为模型的性能评估。

第二个作用是避免过度拟合。比如我们在进行10折叠交叉验证的时候,训练了10次,得到了10个模型。每个模型的参数也不同。那么我们应该使用哪个模型作为我们的最终模型呢?答案是:没有!我们需要用全部数据重新训练一个最终模型!

ROC曲线的绘制方法有很多。以下是一些可操作的平台和方法:

1,SPSS:如何用SPSS做ROC曲线分析?看这1的文章就够了!

2.R语言:R语言logistic回归,ROC曲线,十倍交叉验证。

ROC曲线基于r语言-(pROC包)

用r语言的pROC包绘制ROC曲线

3.Python:理解机器学习基础(1)- ROC曲线

ROC原理介绍及用python实现两类和多类ROC曲线

4.Matlab: Matlab绘图-ROC曲线绘制(官方演示)

ROC曲线详解及matlab绘图实例

ROC曲线的初步研究到此结束。我们初步了解到,ROC曲线最初是用来评估雷达兵判断轰炸机信号的准确性,后来被用来判断医疗指标,在生活中被广泛使用。ROC曲线可以用来找出在任意阈值下识别疾病的能力,选择最佳诊断阈值,也可以用来评价机器学习预测模型的好坏(目前好像这方面用的比较多)。当然,还有一些问题值得探讨,比如什么时候使用ROC曲线,如何通过S倍交叉验证来绘制平均ROC曲线等等。在机器学习模型构建过程中,训练集和测试集的建立,模型交叉验证和ROC曲线评估的结合都需要继续学习。

库特尔斯,莱文E,萨洛奇?rvi J、Smits LP、Hartstra AV、Udayappan SD、Hermes G、Bouter KE、Koopen AM、Holst、Knop、Blaak EE、Zhao J、Smidt H、Harms AC、Hankemeijer T、Bergman JJGHM、Romijn HA、Schaap FG、Olde Damink SWM、Ackermans MT、Dallinga-蒂耶GM、Zoetendal E、de Vos WM、Serlie MJ、Stroes ESG、Groen AK、Nieuwdorp M细胞代谢。2017 Oct 3;26(4):611-619 . E6 . doi:10.1016/j . cmet . 2017 . 09 . 008。PMID: 28978426。

刘,陈,胡,牛,田,王,庞,江,邱,陈,张,马,唐,李,冯,张,张。微生物组。2019 04 26;7(1):68.doi:10.1186/s 40168-019-0683-9。PMID:31027508;PMCID: PMC6486680。

罗德里格斯-鲁伊斯A,L?ng K,Gubern-Merida A,Broeders M,Gennaro G,Clauser P,Helbich TH,Chevalier M,Tan T,Mertelmeier T,Wallis MG,Andersson I,Zackrisson S,Mann RM,Sechopoulos I .乳房x线照相术中乳腺癌检测的独立人工智能:与101放射学家的比较。美国国家癌症研究所。2019 Sep 1;111(9):916-922.doi:10.1093/jnci/djy 222。PMID:30834436;PMCID: PMC6748773。

Duclos G,Bobbia X,马卡里安T,Muller L,Cheyssac C,Castillon S,Resseguier N,Boussuges A,Volpicelli G,Leone M,Zieleskiewicz L .斑点追踪定量肺滑动诊断气胸:一项多中心观察性研究重症监护室。2019年9月;45(9):1212-1218.doi:10.1007/s 00134-019-05710-1。epub 2019 7月29日PMID: 31359081。