我正在使用 XGBoost(通过 sklearn API)并且我正在尝试进行二进制分类。
False Positives对我来说比False Negatives更糟糕,我该如何考虑这一点?
API 让我有点困惑,我发现了两个可能与此相关的论点:
objective
&eval_metric
哪一个?以及如何使用它?
我正在使用 XGBoost(通过 sklearn API)并且我正在尝试进行二进制分类。
False Positives对我来说比False Negatives更糟糕,我该如何考虑这一点?
API 让我有点困惑,我发现了两个可能与此相关的论点:
objective
&eval_metric
哪一个?以及如何使用它?
在预测错误的后果不等价的情况下,您通常仍然有兴趣训练模型以根据数据集进行准确预测,并且不会更改监督学习中的目标函数。
通常,当 FP 和 FN 的后果不同时,您会:
使用模型给出的预测的置信度。在 XGBoost 中,即objective: "binary:logistic"
使用ROC 下的面积作为确定最佳调整模型的基本指标(这是eval_metric: "auc"
用于 XGBoost)。该指标衡量您的类排序的好坏 - 值越高,稍后调整置信水平就越容易和更有效。
确定成本 FP 和 FN 的权重 - 这完全取决于您,您说 FP 比 FN 差,但为了做出最佳决策,您必须将其转化为数字陈述。如果您可以为每种错误分配一个企业的相对财务成本,那么这将是一个好的开始。
使用最佳调整模型,在分配您希望以某种方式采取行动的正面类别之前,使用权重计算不同类别置信度截止值的成本。针对测试集进行预测以获得类概率。然后对正类使用不同的截止点,计算您的 FP 和 FN 给定的截止值,然后将总数乘以您稍后选择的成本。得分最低的截止点应该是在生产中使用的截止点。如果 FP 的成本高于 FN,那么您可能会发现需要 > 0.5 的置信水平。
您还可以研究考虑动作后果的机器学习方法 - 例如强化学习 - 以便在单个学习框架内获得类似的结果。但是,这不是您可以仅在 XGBoost 中完成的事情,只要您的问题在单步预测中保持 FP 和 FN 之间的平衡,那么上述方法应该是可以的。