我正在尝试对患有糖尿病和非糖尿病的人进行二元分类问题。
为了标记我的数据集,我遵循了一个简单的规则。如果一个人T2DM的医疗记录中有,我们将他标记为阳性病例 ( diabetes),如果他没有 T2DM,我们将他标记为Non-T2DM。
由于每个受试者都有很多数据点,这意味着他有很多实验室测量结果、服用了很多药物、记录了很多诊断等,我最终为每个患者得到了 1370 个特征。
在我的训练中,我有 2475 名患者,在我的测试中,我有 2475 名患者。(我已经尝试了 70:30。现在尝试 50:50 仍然是相同的结果(如 70:30))
我的结果好得令人难以置信,如下所示
我应该减少功能的数量吗?是否过拟合?我应该只保留前 20 个功能、前 10 个功能等顶级功能吗?可以帮助我理解为什么会这样吗?
详细更新
我们通过一组诊断代码(如 T2DM 及其并发症的 icd9、10 代码等)检查是否存在 T2DM。例如:假设一个患者的诊断记录中的 icd9 代码为 250,我们知道他被诊断出患有 2 型糖尿病。在这一点上,我们不必担心这种标记方法的准确性。同样,我们将所有其他患者标记为T2DM和Non-T2DM。
但是当我们提取特征时,他的所有病历都被视为特征。药物/状况/实验室测试的频率将用作特征值。所以,基本上,相同的诊断代码(250) 也将是一个输入特征。这是否意味着我应该删除用于标记数据集的诊断代码,以免用作特征?但这些确实是非常好的功能,可以帮助我确定患者是否被诊断为 T2DM(当我将我的模型应用于完全不同的数据集时)。我的目标不是找出患者将来是否会患糖尿病,而我的目标只是找出患者是否患有糖尿病(从他的记录中)。因此,我如上所述用不完美的启发式方法标记我的数据集并构建模型。一旦我建立了这个模型,我想在另一个站点验证这个模型,并找出使用这种不完善的启发式方法构建的模型在识别患者是否患有糖尿病方面的效果如何。希望这可以帮助

