Preamble: 我有一个 balancer 的二进制数据集,目的是 Build 一个基于决策树的分类模型(选择这种方法有一个特殊的原因) . 我有兴趣找到分裂阈值,使得 maximise 精度(正预测值,正类为1) . 这可以通过调整相对类权重(在 scikit-learn 中)到 class_weight = {0:p} 来实现,其中 p>1 . 一旦训练模型,我就可以轻松估计相关指标(敏感度,特异性,PPV,NPV,AUC ......)

该模型在 balancer 数据上进行训练(并且对这些数据估计相应的度量Se,Sp,PPV,NPV) .

However ,在实际情况下,人口是4:1(零的频率是4倍) .

QUESTION 1: 如何使用经过训练的 balancer 数据模型估算不 balancer 数据(更多零而不是取决于流行度)的指标,尤其是正预测值?

Confusion 1: 我对 class_weight 的影响感到有点困惑 . 例如,设置 class_weight={0:4} 将有效地复制零级中的每个点4次 . 因此,决策边界将对应于在不 balancer 数据集上训练的模型,其频率比 1 s高四倍 . 这是正确的陈述吗?

Confusion 2: 我需要通过在最大化PPV的 balancer 数据集上学习分类器,在0级比1(实际总体)更频繁的情况下估计精度(PPV) . 为了最大化PPV,我使用 class_weight{0:p}, p>1 ,但同时它改变了类的相对分布 . 这是一种非常混乱的循环 .

更令人困惑的是如何在不 balancer 数据上最大化NPV的反问题,其中类不 balancer (相对分布)与 class_weight 参数竞争 .

任何澄清这些想法的想法都将受到高度赞赏 .