交叉验证和bootstrap在internal validation 中的应用

Posted SPSS学堂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交叉验证和bootstrap在internal validation 中的应用相关的知识,希望对你有一定的参考价值。


背景:internal validation external validation是预测模型评价中两个重要的问题。其中internal validationexternal validation的前提。仅利用构建模型的数据来评价internal validation常常会高估模型。故介绍两种用于评价internal validation的模拟方法,使得模型评价的结果更加可靠。


目的: 通过比较评价指标可信区间覆盖率来评价两种模拟方法的优劣。CI覆盖率越高,方法越好。即如果CI包含真值的次数越多,说明方法越好。


说明:我们用AUC或者AP作为模型评价的指标。


模拟方法1:交叉验证


交叉验证主要有:10-fold 交叉验证、10×10 交叉验证和Many times’ 交叉验证三种。


A.    10-fold 交叉验证

1)      首先,我们利用交叉验证来得到AUC/AP的点估计。将样本分为多份。例如分为10份。

2)      划分训练集和测试集:每次任取其中的9份作为训练集,剩余1份作为测试集。用训练集来得到对应模型,然后应用模型得到训练集的预测值。

3)      重复步骤2,得到每一个样本的预测值。基于观察值和预测值可以计算出此模型的AUC/AP

4)      最后,利用步骤三得到的点估计和R中的APtool包可以得到AUVC/AP的区间估计。


B.    10×10 交叉验证

10-fold 交叉验证拓展到 10×10 交叉验证。

1)      重复10-fold 交叉验证中的步骤1-3 多次. 例如,重复步骤1-3十次,那么我们可以得到10个AUC/AP。

2)      计算这10个AUC/AP的平均值,并将其作为点估计。

3)      最后,利用点估计值和APtool来得到区间估计。


C.    Many times’ 交叉验证

10-fold 交叉验证拓展到a thousand times’交叉验证。

1)     重复10-fold 交叉验证中的步骤1-3 多次. 例如,重复10000次,那么我们可以得到10000个AUC/AP。

2)     10000个AUC/AP即可以得到AUC/AP的分布

3)     最后,取百分位数来作为CI (percentile method)例如,取2.5%-97.5%的值作为95%CI。


模拟方法2:Bootstrap


Bootstrap方法主要有:regular法, 632法和632+法。


首先计算apparent 模型:基于所有样本数据得到我们的预测模型,同时将所有样本数据作为测试集计算预测值。可以看到,此模型的训练集和测试集均为所有样本数据,这样的模型叫做apparent模型。


2.1   Regular

1)      划分训练集和测试集:将bootstrap抽样作为训练集,测试集为所有样本数据。Bootstrap抽样为:在样本中重复抽样n次,n为样本容量。取n次抽样结果中被抽中的所有观测值作为训练集。

2)      用训练集构造模型,然后应用模型分别计算训练集和测试集的预测值。通过观测值和预测值可以计算出训练集和测试集的AUC/AP

3)      重复步骤2多次,例如10000次,那么我们可以得到10000个训练集和测试集的预测值,由此可以得出10000个训练集和测试集的AUC/AP

4)      利用公式Apparent - average(bootstrap-test)来得到AUC/AP的估计值

5)      利用APtool计算可信区间。


2.2 632

1)      划分训练集和测试集:将bootstrap抽样作为训练集,未被抽中的样本作为测试集。

2)      用训练集构造模型,然后应用模型分别计算训练集和测试集的预测值。通过观测值和预测值可以计算出训练集和测试集的AUC/AP。

3)      重复步骤2多次,例如10000次,那么我们可以得到10000个训练集和测试集的预测值,由此可以得出10000个训练集和测试集的AUC/AP

4)      利用 0.368*Apparent +0.632*average(test) 得到点估计。

5)      利用APtool计算可信区间。


2.3 632+

1)      重复632法中的步骤1-3

2)      利用 (1-w)*Apparent +w*average(test)来得到AUC/AP的点估计值。为权重w= .632 / (1-.368* R), 其中R (test-apparent) /(“no information” -apparent )

3)      ‘no information’ AUC值通过取apparent的平均值来近似。

4)      利用 APtool计算可信区间


总结:

1.     交叉验证和bootstrap的不同之处在于划分训练集,测试集的方法以及计算评价指标点估计的方法。

2.     0.632法的取名是因为bootstrap在所有样本中重复抽样n次后,大约可以取到样本中63.2%的观测。

3.     Bootstrap的regular法中用所有样本数据作为测试集,而其余两法则是用bootstrap未选中的样本作为测试集。

4.     模拟的目的是通过多次改变训练集和测试集来得到AUC/AP。避免仅仅通过评价一次训练集和测试集导致对模型的高估。

5.     得到可信区间后可以多次重复以上方法,最后得到多个可信区间,并与真实AUC/AP值比较,得到CI覆盖率,由此可以得到表现更佳的模拟方法。


参考文献:

Internal validation of predictive models: Efficiency of some procedures for logistic regression analysis


(点击获知详情),购买方式如下:

方式一:在京东/淘宝/当当搜索 “菜鸟学SPSS数据分析”

方式二:扫描下方二维码,即可购买~

 

学堂君的历史合辑:









欢迎添加:

【数据分析服务】请点击

【社群服务助手】请点击

【加入团队】请点击


以上是关于交叉验证和bootstrap在internal validation 中的应用的主要内容,如果未能解决你的问题,请参考以下文章

libsvm java中的交叉验证准确性

如何在 LibSVM 中实现十折交叉验证

如何使用 GridSearchCV 测试回归交叉验证中的过度拟合?

如何在 R 中使用 LibSVM 执行 10 折交叉验证?

交叉验证

交叉验证