在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?

Posted

技术标签:

【中文标题】在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?【英文标题】:What is the mathematical principal of setting class weight in logestic regression in scikit-learn?在 scikit-learn 的逻辑回归中设置类权重的数学原理是什么? 【发布时间】:2019-09-11 15:19:14 【问题描述】:

在python的scikit-learn库的逻辑回归算法中,有一个“class_weight”参数。我想知道在模型拟合期间实现设置 class_weight 的数学原理是什么。是否与修改目标函数有关:

https://drive.google.com/open?id=16TKZFCwkMXRKx_fMnn3d1rvBWwsLbgAU

具体的修改是什么?

提前感谢您! 我会感谢你的任何帮助!

【问题讨论】:

【参考方案1】:

是的,它会影响损失函数,并且在您的标签不平衡时非常常用。在数学上,损失函数只是成为每个样本损失的加权平均值,其中权重取决于给定样本的类别。如果没有使用class_weight,那么所有样本的权重都是一致的(如您所附的图片所示)。

这个想法是惩罚对代表不足的类别的预测错误,而不是对代表过多的类别的错误。

查看更详细的讨论here。

【讨论】:

谢谢Jan K。你能直接给出修改后的损失函数和指定的class_weight吗?在 scikit-learn 的逻辑回归代码中,它是这样写的: # Logistic loss 是逻辑函数对数的负数。 out = -np.sum(sample_weight * log_logistic(yz)) + .5 * alpha * np.dot(w, w)。它似乎与我在上述问题中给出的公式不同。这个公式怎么理解?

以上是关于在 scikit-learn 的逻辑回归中设置类权重的数学原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-learn 逻辑回归的性能比 Python 中自己编写的逻辑回归差

scikit-learn 逻辑回归类库使用小结

在 Angular 模板中设置类值

如何在 scikit-learn 中实现多项式逻辑回归?

逻辑回归-5. scikit-learn中的逻辑回归

idea中设置类添加删除线条