基于mlr3验证集优化模型的p值求解与差异显著性分析
针对mlr3中模型对比与特征选择验证的解决方案
一、计算模型相对无特征随机预测的p值
由于你的数据是患者-病灶结构化数据,手动划分了训练/验证/测试集,常规重采样受限,可采用以下两种适配性方法:
- 配对t检验(单模型对比):
- 生成与测试集样本类别分布一致的无特征随机预测结果,重复生成200-500次,得到一组随机baseline的balanced accuracy。
- 将调优后模型的测试集balanced accuracy与这组baseline做配对t检验,计算p值。注意随机预测需按患者分层生成,避免病灶间相关性干扰统计结果。
- 在mlr3中可自定义一个极简
Learner,实现按样本类别比例输出随机预测的逻辑。
- 置换检验(适配结构化数据):
- 按患者分层打乱特征与标签的对应关系(保证同一患者的病灶特征/标签同步打乱),生成置换后的任务。
- 用调优后的模型在置换任务上重复预测1000次,记录每次的balanced accuracy。
- 统计原模型测试集结果优于置换结果的次数占比,即为p值。
二、验证模型与特征选择方法差异的显著性
针对task_importance过拟合问题,要区分差异是否由偶然因素导致,可尝试:
- 分层置换检验:固定所有模型/特征选择方法的结果,仅置换分组标签(即随机打乱“模型A/模型B/特征方法X”的标注),重复1000次后,统计原差异出现的概率,得到p值。这种方法能控制患者-病灶结构带来的相关性干扰。
- 训练集内部分层嵌套验证:在手动划分的训练集内部,按患者分层做交叉验证,分别评估不同模型和特征选择方法的指标分布,用Kruskal-Wallis检验对比分布差异。这种方法既能避免数据泄露,又能验证结果的稳定性。
- 聚类校正的统计检验:考虑患者水平的聚类效应,用混合效应模型将患者作为随机因子,模型/特征选择方法作为固定因子,检验固定因子的显著性,避免病灶间相关性导致统计结果失真。
实现提示
- mlr3生态中的
mlr3stats包提供了t_test()、kruskal_test()等基础统计函数,可直接输入分层采样后的指标数据。 - 自定义随机预测学习器时,可基于
LearnerClassif继承实现,核心逻辑是在predict()方法中输出符合样本类别比例的随机预测。
内容的提问来源于stack exchange,提问作者NDe
相关产品推荐
相关产品推荐

