我们评估模型时是否需要设置sample_weight?现在,我已经训练了一个有关分类的模型,但是数据集是不平衡的。当我用compute_sample_weight('balanced')设置sample_weight时,分数非常好。精度:0.88,召回率:0.86(1级)。
但是,如果我不设置sample_weight,分数将很糟糕。精度:0.85,召回率:0.21
sample_weight会破坏原始数据分布吗?

最佳答案

样本权重参数仅在训练期间使用。

假设您有一个数据集,其中有16个点属于类“ 0”,而有4个点属于类“ 1”。

如果没有此参数,则在优化期间,它们的权重为1,以进行损耗计算:它们对模型最小化的损耗的贡献相同。这意味着80%的损失归因于“​​ 0”类点,而20%的损失归因于“​​ 1”类点。

通过将其设置为“ balanced”,scikit-learn将自动计算权重以分配给类别“ 0”和类别“ 1”,这样损失的50%来自类别“ 0”,而50%来自类别“ 1”。

此参数会影响您需要使用“最佳阈值”来将类别“ 0”的预测与类别“ 1”分开,并且还会影响模型的性能。

关于machine-learning - 如何了解sklearn.metrics中的sample_weight?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54093185/

10-12 17:39