sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)

想必大家都记得的逻辑回归中我们最大化的对数似然函数(可以看作损失函数的负函数)的样子大概长成下面两种形式:
1.sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)
2. sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)
其中各符号用的比较乱具体的含义这里不再详述,大家看过逻辑回归应该都知道。
但是在 sklearn 官网给出的损失函数确实这样:
3.sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)
网址如下http://scikit-learn.org/stable/modules/linear_model.html#logistic-regression,忽略第一项正则项,第二项和我们以前的认知怎么不一样!!如果 y=0 的话,那这项的损失函数就是常数跟参数w完全没有关系了,也就是说损失函数不受标签为 0 的样本的影响,这很不合理啊!让我一度感觉非常郁闷。


最终经过多方查找,找到了答案。因为在 sklearn 上标签 y 的取值为{-1,1}(官网完全没有提),就是这么简单就问你怕不怕。这样我们可以推导出两者其实是一会事。
首先,明显的一点是1式和2式中 y=0 的值和3式 y=-1的损失是差一个负号的;
其次 ,1式和2式中 y=1 的值和3式 y=1的损失也是差一个负号的。推导如下:
sklearn(scikit-learn) logistic regression loss(cost) function(sklearn中逻辑回归的损失函数)
因为需要最大化的对数似然和此处的损失函数正好相反,所以最终两者的损失是一致的。