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
参数竞争 .
任何澄清这些想法的想法都将受到高度赞赏 .