在 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 的逻辑回归中设置类权重的数学原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章