将 sample_weights 用于平衡数据集是不是有意义?

Posted

技术标签:

【中文标题】将 sample_weights 用于平衡数据集是不是有意义?【英文标题】:Does it make sense to use sample_weights for balanced datasets?将 sample_weights 用于平衡数据集是否有意义? 【发布时间】:2020-05-06 01:27:56 【问题描述】:

我对 sklearn 库中的 sample_weights 了解有限,但据我所知,它通常用于在训练期间帮助平衡不平衡的数据集。我想知道的是,如果我已经有一个完美平衡的二进制分类数据集(即标签/Y/类列中的 1 和 0 的数量相等),是否可以在 0 中添加一个样本权重以提高重要性关于正确预测 1?

例如,假设我真的希望我的模型能够很好地预测 1,即使结果是 1,也可以预测 0。将 0 的 sample_weight 设置为 2,将 1 设置为 1 是正确的做法,以便更加重视正确预测 1 吗?或者那有关系吗?然后我猜在训练期间,f1 评分函数是否被普遍接受为最佳指标?

感谢您的意见!

【问题讨论】:

【参考方案1】:

回答

经过几轮测试和更多研究,我发现是的,如果您的目标是减少过度预测的机会,那么使用平衡的二进制分类数据集为 0 增加更多权重确实有意义1的。我使用 2 代表 0 和 1 代表 1 的权重运行了两个单独的训练课程,反之亦然,我发现当权重应用于 0 时,我的模型预测的 1 更少,这是我的最终目标。

以防万一对任何人有帮助。

此外,我正在为这些测试使用 SKLearn 的 Balanced Accuracy 评分功能,该功能取每个单独班级的准确性的平均值。

【讨论】:

以上是关于将 sample_weights 用于平衡数据集是不是有意义?的主要内容,如果未能解决你的问题,请参考以下文章

在 Keras 中使用 sample_weight 进行序列标记

如何纠正 sklearn.naive_bayes 中的 sample_weight?

关于如何平衡不平衡的数据

sample_weight 与 scikit-learn 中的 class_weight 相比如何?

scikit-learn:随机森林 class_weight 和 sample_weight 参数

使用多层感知器对不平衡数据集进行分类