精华内容
下载资源
问答
  • 比如你觉得前列腺特异性抗原(PSA)用来筛查前列腺癌不准确,你收集临床样本做了个癌和癌旁组织lncRNA检测,筛选出差异表达,建立回归模型,看它们对前列腺癌的预测作用,再做个ROC曲线,哎哟,AUC > 0.75,太棒...

    有一类研究看似简单,其实水挺深的。

    比如你觉得前列腺特异性抗原(PSA)用来筛查前列腺癌不准确,你收集临床样本做了个癌和癌旁组织的lncRNA检测,筛选出差异表达的,建立回归模型,看它们对前列腺癌的预测作用,再做个ROC曲线,哎哟,AUC > 0.75,太棒了3-5分在握!

    但是转眼看别人好像也差不多嘛,对某现有诊断或风险预测方法不满意,根据既往零散报道的风险因素收集一些临床资料,建立回归模型然后ROC一下,为什么人家能冲上四大医刊,甚至被迫不及待写进指南呢?仅仅因为人家有N个中心上万个样本量吗?不,你肯定没在意另一些分析方法。

    人家的诊断(预测)模型好,你的可能也不赖,但人家把它的好处说得很清楚、很有技术范呀,编辑和审稿人就喜欢这样。

    评价一个模型的好坏,不仅关乎能发多少分的文章,也关乎临床医生的决策。近期JAMA上的一篇文章专门讨论了这个问题,我们一起来琢磨一下。

    模型的区分度和校准度

    一个好的预测模型应该能针对某个结局,把一群人的风险高低区分开来,这就是区分度(discrimination)。它跟患者在人群中的分布特征有关,模型中纳入的自变量(如性别、年龄、某些实验室检查等)如果有异质性,那么模型的区分度就好,否则就差。

    区分度一般以我们熟悉的ROC曲线下面积(AUC)来评价,或称C统计量(C-statistics)。AUC越高,模型对高低风险人群的区分度越好。一个广泛接受的评判标准是,AUC在0.6以下为低区分度,0.6 – 0.75 是中区分度,0.75以上为高区分度。

    但一个区分度很好的模型,却可能有着较差的校准度(calibration),或称拟合优度(Goodness of fit)。比如它能判断一个人发生某疾病的风险是另一个人的5倍,它判断这两人的风险分别为5%和1%,而实际上两人的风险是50%和10%,那这个模型也挺离谱的,这就是校准度不好。

    模型的校准度可以用Hosmer-Lemeshow检验(H-L检验),若结果得到显著统计学意义,则表明预测值与观测值之间(即模型和真实之间)有差异。

    但H-L检验有其不足。有统计学差异只能提示这个模型整体上跟观测值有差异,却无法展示更多细节。做出校准曲线来有可能会看到这样一种情况:

    这是MAGGIC心衰风险评分量表的校准曲线,其用于评价心衰1年死亡风险。黄色曲线为模型预测值,蓝色带有误差线的点为观测值。可见它们前面一段低风险时吻合得不错,而有轻微高估;但30%开始,模型预测的风险低于实际观察值10%左右,自此拉开差距。

    这个模型在外部验证集中检测的时候,AUC为0.77。像这种情况的模型是否毫无用处呢?

    如果有其他研究表明(或行业内达成共识),风险高于20%的时候就一定要采取某种干预,那么后面的差异其实影响不大,这都是可以在讨论中Argue一下的,深入分析自己的模型的价值和适用范围,也可圈可点。

    区分度和校准度对一个模型来说都是很重要的评价,许多新开发的模型没有得到充分的评价,就只好流散于苍茫文献海,泯然一滴水,后人遇到了还要辛苦甄别。有一项关于心血管系统风险预测模型研究的系统综述发现,只有63%的模型汇报了区分度,而汇报校准度的更少,才36%。

    你的模型要和别人的模型来一场PK

    如果你开发的风险预测模型是为了解决一个全新的问题,展示自己好也就够了。但更多时候是希望能改进现有的解决方案,那么当然还要表明它比现有的好(至少某一方面),才能有发表的机会呀。

    区分度比较两者的AUC是可以的,但没什么细节。校准度的比较则可用赤池信息准则(Akaike Index Criterion, AIC)或贝叶斯信息准则(Bayesian Index Criterion, BIC),其值越低,校准度越好,但同样没什么细节,可能相对较好的那个模型离真实情况还是挺远的。但AIC和BIC见得更少了。

    这里再重点介绍一种近年来应用愈发增多的指标,听说有的小伙伴已经遇到过审稿人要求返修做这个分析了,就是净重新分类指数(Net Reclassification Index, NRI)

    听名字,这意思就是旧模型把一群人分为高风险和低风险,新模型会把其中几个人挪挪窝,有的挪对了有的挪错了,“挪对的 – 挪错的”就是净重分类。指数嘛,再除以总人数的百分比咯。

    但还要分成两拨来看,即观测发生结局事件的和未发生结局事件的,因为它们分别代表假阴性和假阳性的概率。还是在一个情景中说明吧。

    相加NRI(additive NRI)的值可以从200 ~ -200,即新模型完全分类正确(所有低风险的人都未发生结局事件,且所有高风险的人都发生了结局事件)为200,反之完全分类错误为-200。

    它主要的局限性就是没有考虑发生与不发生事件的两拨人在总体中的分布情况。绝对NRI(absolute NRI)以总体为分母,则回避了这个局限。

    相加NRI用得多一点,但其实它们各有意义,应该兼看。再看两个例子来理解它俩的差别吧。

    例1: 样本20000人,观察下来,发生与未发生结局事件的两拨人各有10000。下图绿色表示正确重新分类,粉色表示错误重新分类,灰色表示没有重新分类。

    计算下来,相加NRI为12,是正值;绝对NRI是6%,也是正值,如图下方的表格所示。也就是说,虽然未发生结局事件的有300人被错误重新分类,但总体上来说还是利大于弊的。

    例2:样本是11000人,观察下来,发生与未发生结局事件的人比例不再是1:1了,分别为1000人与10000人。

    如表所示,这回相加NRI和上边一样是12,还是正值。如果光看相加NRI,似乎新模型还是个好模型。但看绝对NRI,原来是个负值。

    再看看细节,新模型对发生了结局事件的人做了更好的重分类,可遗憾的是,这拨人所占比例更小;而对于未发生结局事件的人,其重分类效果并不好,这部分人占的比例又比较大,最终绝对NRI是负的,暴露了新模型的局限性。

    下面是一个研究中的真实案例,情况跟上边的例2差不多。评价术后发生心梗或心源性死亡的风险,原来有一个评分量表(Revised Cardiac Risk Index, RCRI),此为旧模型。研究者想看看加上冠脉造影(CCTA)能不能更好地预测风险,即CCTA + RCRI为新模型。

    观察下来,结局发生与不发生在总体中的分布为7.7% : 92.3%,统计重新分类的情况,计算两个NRI,出现了相加NRI为正值、绝对NRI为负值的情况。

    发生这种情况,又要拋弃新模型咯?粗看或许的是,但其实还有另一个讨论思路,这个思路在许多研究中都适用,就是假阴性与假阳性哪个后果更严重。

    发生结局事件的人,当初被错误地分到低风险组,就是假阴性,让病人和医生都放松警惕,可能错过了及时干预的机会。未发生结局事件的人,当初被错误地分到高风险组,就是假阳性,让人提心吊胆草木皆兵,可能过度干预造成额外的负担。

    如果结局事件挺严重的,比如本例中的心梗或心源性死亡,就算风险低我也想要极力避免,要干预,那么假阳性较多的模型也有其价值。如果结局事件不那么严重,或者即使发生了还有较好的补救方案,那么当初测试时它低估了我的风险我也不是太介意,假阴性多一点的模型也能接受。

    总之,如果你的分析方法能看到更多细节,也就给了你更多更深入分析讨论的机会,为自己的研究成果找到亮点。

    关于假阴性与假阳性的权衡,还有其他指标,比如净受益率,可以做决策曲线来分析。这个我们之前有过介绍,这里就不多说了,自己来复习→_→《ROC曲线老了,快来围观新晋小生DCA曲线!》

    参考文献:Alba, A. C. et al. Discrimination and Calibration of Clinical Prediction Models: Users’ Guides to the Medical Literature. JAMA 318, 1377–1384 (2017).

    展开全文
  • 在用模型进行预测或分类的时候,需要判断得到模型的好坏,就要事先将数据分为训练集合测试集, 在sklearn中直接调用train_test_split来划分数据: from sklearn.model_selection import train_test_split X_train, ...

    1.训练集和测试集
    在用模型进行预测或分类的时候,需要判断得到模型的好坏,就要事先将数据分为训练集合测试集,
    在sklearn中直接调用train_test_split来划分数据:

    from sklearn.model_selection import train_test_split
    
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)
    
    print(X_train.shape)
    print(X_test.shape)
    print(y_train.shape)
    print(y_test.shape)
    

    2.为了验证模型的准确率,就要用相应的指标来判断预测/分类的准确率,比如:分类准确率,召回率等,

    sklearn中的准确度:

    from sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)
    knn_clf = KNeighborsClassifier(n_neighbors=3)
    knn_clf.fit(X_train, y_train)
    y_predict = knn_clf.predict(X_test)
    accuracy_score(y_test, y_predict)
    
    y_predictknn_clf.score(X_test,y_test)
    
    

    3.精准率和召回率
    精准率(查准率):预测值为1,且预测对了的比例,即:我们关注的那个事件,预测的有多准。

    `召回率(查全率):所有真实值为1的数据中,预测对了的个数,即:我们关注的那个事件真实的发生情况下,我们成功预测的比例是多少。

    如果要兼顾精准率和召回率这两个指标可以用
    F1 Score 是精准率和召回率的调和平均值。
    只有二者都非常高,F1才会高,代码如下:

    import numpy as np
    def f1_score(precision, recall):
        try:
            return 2 * precision * recall / (precision + recall)
        except:
            return 0.0
    

    4.ROC曲线
    ROC曲线(Receiver Operation Characteristic Cureve),描述TPR和FPR之间的关系。x轴是FPR,y轴是TPR。
    TPR:预测为1,且预测对了的数量,占真实值为1的数据百分比,就是召回率。
    FPR:预测为1,但预测错了的数量,占真实值不为1的数据百分比。

    可直接调用sklearn中的ROC曲线:

    
    from sklearn.metrics import roc_curve
    
    fprs, tprs, thresholds = roc_curve(y_test, decision_scores)
    plt.plot(fprs, tprs)
    plt.show()
    

    ROC曲线距离左上角越近,证明分类器效果越好;

    5.AUC
    很多时候两个分类器的ROC曲线交叉,无法判断哪个分类器性能更好,这时可以计算曲线下的面积AUC,作为性能度量。
    AUC(Area Under Curve)。这个AUC是横轴范围(0,1 ),纵轴是(0,1);AUC越大,分类器分类效果越好。
    在sklearn中求出AUC值

    from sklearn.metrics import roc_auc_score
    roc_auc_score(y_test, decision_scores)
    
    

    0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。

    参考:https://mp.weixin.qq.com/s?__biz=MzI4MjkzNTUxMw==&mid=2247483795&idx=1&sn=7cd746ea16b5643e720d5554a5811459&chksm=eb932825dce4a133150b2c298c75a4214c252c4975c567eca13e42a1d8ac860eb4aed4217536&token=1473535882&lang=zh_CN#rd
    https://mp.weixin.qq.com/s/vvCM0vWH5kmRfrRWxqXT8Q

    展开全文
  • sklearn.metrics.precision_score()召回率:真的是1的数据中 ,被预测为1的比例 sklearn.metrix.recall_score()F1Score=2*PR/(P+R) 来判断模型的好坏;sklearn.metrix.f1score() 理想状态是预测是1的全部真的是1...

    查准率:预测为1的数据中,真的是1的比例。sklearn.metrics.precision_score()

    召回率:真的是1的数据中 ,被预测为1的比例 sklearn.metrix.recall_score()

    F1Score=2*PR/(P+R) 来判断模型的好坏;sklearn.metrix.f1score() 

    理想状态是预测是1的全部真的是1(即查准率=1)&真的是1的全部被预测是1,(即召回率=1);此时F1Score=1,模型完美;最差的状态是查准率或召回率都趋近于0;F1Score也→0;若P=0.4,R=0.6,F1Score=2*0.4*0.6/(0.4+0.6)=0.48;


    展开全文
  • 如何判断特征工程的好坏

    千次阅读 2018-03-28 12:20:16
    那么,如何判断特征工程的好坏,这里还是有一些方法的:1:在运用特征工程之前找一个基准的模型性能作为对比。 这个基准模型如何来找,基本的思路有这些:使用随机预测的值来进行评价,准确率大约在50%左右。使用较...

    我有段时间不知道如何判断特诊工程的好坏,结果盲目的进行特征工程而收不到结果。

    那么,如何判断特征工程的好坏,这里还是有一些方法的:

    1:在运用特征工程之前找一个基准的模型性能作为对比。

      这个基准模型如何来找,基本的思路有这些:使用随机预测的值来进行评价,准确率大约在50%左右。使用较多的一类标签来作为预测值,准确率为:最多的一类标签/整体数目 

    2:运用特征工程。

    3:观察运用特征工程以后的的模型性能和基准的模型的性能之间的关系。

    4:如果性能的变化超过了某个阈值,那么我们就可以判断出来这个特征工程是好的。

    5:改变的模型性能通常用百分比来衡量。 比如由40%的准确率提高到76%的准确率,那么我们说模型性能提高了90%。

    展开全文
  • 常用时序预测模型的R实现 二

    千次阅读 2018-05-01 18:10:16
    类似,实现预测模型,第一步则是了解常用数据预处理方法以求能让模型跑起来,学会判断模型好坏以保证预测结果是靠谱可用。具体怎样优化模型不在这个系列里详谈。数据预处理在Python世界里,Pandas就自带很...
  • 既然题目中写了是用来评价语言模型的好坏,那么首先来看一下语言模型:忆臻:深入浅出讲解语言模型​zhuanlan.zhihu.com简单地说,语言模型就是用来计算一个句子的概率的模型,也就是判断一句话是否是人话的概率?...
  • 有三个指标判断人工智能训练模型的单方面好坏 正确率(accuracy) = TP+TN/TP+FN+FP+TN 精确率(precision) = TP/TP+FP 召回率(recall) = TP/TP+FN 一、F1值 F值是精确率和召回率的调和平均 F1值...
  • SVM是一种在小样本低维度下比较适用的非线性建模方法,相对比其他常用的算法(比如决策树),模型根据调参的好坏所表现的性能波动非常大。当我们决定使用SVM模型,模型的效果非常差,甚至还不如传统的线性模型的时候...
  • 原标题:网舟科技 | 使用SVM模型进行分类预测时的参数调整技巧SVM是一种在小样本低维度下比较适用的非线性建模方法,相对比其他常用的算法(比如决策树),模型根据调参的好坏所表现的性能波动非常大。当我们决定使用...
  • 空气质量(Air quality)的好坏反映了空气污染程度,它是依据空气中污染物浓度的高低来判断的。空气污染是一个复杂的现象,在特定时间和地点空气污染物浓度受到许多因素影响。来自固定和流动污染源的人为污染物排放...
  • 模型的评估方法-准确率与混淆矩阵

    千次阅读 2019-01-13 19:22:18
    准确率: 准确率有的时候是骗人的,举一个例子来说,如果有100只...但是我们从准确率来看,P(猫)=90/100=90%,预测猫的准确率还挺高的,所以我们说有的时候准确率是骗人的,在很多情况下不能说明一个模型的好坏。所...
  • 在模型创建完成后,我们需要考虑模型的适当性,如模型的拟合优度,预测准确性和模型的检验。1拟合优度评价我们在对模型的拟合...那么可能就有小伙伴会问了,我们要从哪些角度来判断模型的好坏呢?统计分析中有很多方...
  • 我们曾经介绍过vintage分析(参见:《vintage分析,从酿酒到银行信用评分领域》),该方法主要用来判断客户展现好坏本性的时间因素,但是在判断客户的好坏程度方面,则需要引入另一种方法:滚动率分...
  • 如何将LR的预测概率值转化为分数?

    千次阅读 2020-01-02 16:57:31
    ​ 背景:在互联网金融中,一般用LR模型预测一个借贷用户的好坏,但是LR模型得到的结果是逾期的概率值,如何仅仅给出预测概率值,人一般很难判断这个概率值代表的用户质量好坏,但是如果能够给出分数就比较理解了...
  • 在聊精准率、召回率之前,一般我们会看模型预测的准确率,即所有预测正确样本数/样本总数。 但分类准确度不能完全衡量模型好坏。 比如一个癌症预测系统,输入体征信息,判断是否有癌症。如果癌症在人类身上发生...
  • 计算模型的损失用来衡量一个模型的性能好坏。 训练集数据的分离,将原本的训练数据分为训练集和验证集两部分,但其实还应该再分为测试集一部分。将原本根据训练数据得到的机器模型应用于测试集数据来计算测试损失,...
  • 物体检测模型评价

    2020-01-31 13:37:05
    物体检测模型的输出是非结构化的,事先并无法得知输出物体的数量、位置、大小等,因此物体检测的评价算法稍微复杂,对具体的某个物体来讲,我们可以从预测框与真实框的贴合程度来判断检测的质量,通常使用 IOU ...
  • 特征工程与模型调优

    千次阅读 2016-05-28 21:54:09
    一. 数据选择/清洗/采样1. 数据选择 ...该过程会花掉大部分时间,但也会使我们对业务有更为深入的理解,数据的好坏决定一个算法模型的上限 主要操作有去除脏数据,如根据常识判断的不可信数据;补齐缺
  • 然后我们认识一下Loss函数(损失函数),他一般用来判断模型训练的好坏,这里举四个例子:0-1Loss,平方损失Loss,绝对损失Loss,对数损失Loss。 ①0-1 Loss(y是真实结果,f(x)是经过机器学习预测的结果,下同)
  • 3.1 线性模型的基本形式 ...中的各个属性可看作一个重要性的系数,以西瓜为例,我们通过西瓜的色泽,根蒂以及敲声来判断一个西瓜的好坏,那么,我们就可以得到: 其中=(0.2,0.5,0.3),通过色...
  • 如何评价拟合的好坏 证明SST=SSE+SSR “线性函数”的介绍 如何判断线性于参数的函数 计算拟合优度的代码 ###强大的曲线拟合工具箱 拟合工具箱演示 利用拟合工具箱预测美国人口 自己模拟数据进行演示 优秀...
  • 这个拟合的好坏程度可以用一个指标来判断。 适用场景 适用于有物体运动轨迹图像的模型。 导弹运动轨迹问题 建立空间直角坐标系,得到测距仪的位置坐标 依据球半径特点列出轨迹方程 进行插值操作 得到时间轨迹参数...
  • 在回归问题中,我们可能会采用均方误差衡量模型的好坏。但在分类问题中,我们需要判断模型是否被正确分类了,于是有如下的评价标准: True表示预测正确,False表示预测错误,将负例错误预测称为1型错误,将正例错误...
  • 交叉熵损失函数

    2020-12-08 16:37:00
    交叉熵损失函数可以预测真实值和预测值之间的区别,通过loss值来判断预测模型之间的好坏。交叉熵损失函数经常用于分类问题中,特别是在神经网络做分类问题时,也经常使用交叉熵作为损失函数, 此外,由于交叉熵涉及...
  • 评估指标是判断一个模型好坏的概念。 哦,模型又是什么?可以这么认为,我们想预测未知,就要做很多工作,这些工作包括取得数据,分析数据,处理数据等等,形成一整套完整流程下来。也叫建模。建模结果就是模型...
  • 数据发生倾斜时,准确率判断...所以要用另一个参数来衡量模型的好坏。 查准率(Precision)和查全率(Recall) 四类预测 将模型预测结果分为下面四类: 正确肯定(True Positive,TP):预测为真,实际为真 正确否定(...
  • 训练模型,首先需要定义一个指标来评估这个模型的好坏。在本教程中使用交叉熵来表征模型的性能好坏。 使用一些优化算法(如梯度下降法)来最小化目标函数(交叉熵) 评估模型,判断预测值和真实值之间的差值。得到...
  • 过拟合我们在根据数据求解模型的时候,怎么去判断一个模型的好坏呢?是通过代价函数的和来判断的,一般来说代价函数的和越小,证明模型与数据之间的关系越匹配。但是还有一种情况是,当代价函数的和小到一定程度的...
  • 在有监督学习中,往往会用一定的方法判断模型的好坏,比如有一系列的有实际标签的样本: 实际的标签:1 1 1 1 1 0 0 0 0 0 放入某个训练好的分类模型中预测预测的标签:1 1 1 1 0 1 1 0 0 0 一、TP、FP、TN...
  • Regression回归

    2020-12-17 23:36:24
    多元线性模型(多个特征)模型评估收集和查看训练数据判断模型好坏模型优化梯度下降算法在现实世界中面临挑战 Regression回归 回归定义和应用例子 回归定义 ​ Regression 就是找到一个函数 function ,通过输入...

空空如也

空空如也

1 2 3
收藏数 53
精华内容 21
关键字:

判断预测模型的好坏