假设您要建模(预测)一种罕见疾病,并且您使用参数“pos scale weight”作为 XG boost 中的超参数。例如,我有 20 倍以上的阳性病例,然后我可以使用 pos scale weight = 0.05,即使例如现实世界中的比率不是 1/20 而是 1/2000?
使用 XG 提升处理不平衡数据集
数据挖掘
xgboost
2021-09-30 13:15:53
1个回答
这是一个棘手的问题,因为它取决于您的目标。
如果您的目标是在两个类别上具有可比的性能(即可比的敏感性和特异性),并且您的训练数据的不平衡是,那么是的,赋予少数类示例的权重是多数类示例的 20 倍是有意义的。
然而,在大多数应用中,这并不是目标。您应该使用错误分类的实际成本或其估计值。理想情况下,您应该量化假阴性和假阳性的成本(尽管这说起来容易做起来难,尤其是在将疾病成本与医疗专业人员浪费时间的成本进行比较时)。
然后,如果您的训练集具有与真实数据相同的类先验(类出现的频率),您将直接使用这些成本作为正类和负类的权重。
在您的情况下,它更复杂,因为您的训练数据中的先验与实际数据中的先验不同。您不能将错误分类成本直接用作权重,您必须针对实际分布进行调整。
使用具有不平衡而不是,你实际上已经给负类赋予了比它自然拥有的权重大约 100 倍的权重。就好像那里已经隐藏了一个重量。为了将错误分类成本用作权重,您必须取消该因素。
认为是误报的成本(错误分类负例)和是假阴性的成本(错误分类一个正例)。如果阳性数据率是在训练数据和在您的域的实际分布中,您将使用:
作为负类错误的权重和
作为正类错误的权重。