scikit-learn LogisticRegression 的损失函数

机器算法验证 物流 scikit-学习
2022-03-27 10:04:33

我无法理解 scikit-learn 用于拟合逻辑回归的损失函数,可以在此处找到。

具体来说,我对第二个学期有疑问。它似乎与通常的 MLE 标准非常不同。有人可以给我一些暗示这是从哪里来的吗?

minw,c12wTw+Ci=1nlog(exp(yi(XiTw+c))+1)

我认为通常逻辑回归的对数似然如下所示。显然,scikit-learn 目标函数中缺少以下第一项。

LLH=i=1n[yi(XiTw+c)ln{1+exp(XiTw+c)}]

3个回答

由于逻辑函数的以下属性,这两者实际上(几乎)是等价的:

σ(x)=11+exp(x)=exp(x)exp(x)+1

i=1nlog(1+exp(yi(XiTw+c)))=i=1nlog[(exp(yi(XiTw+c))+1)exp(yi(XiTw+c))]=i=1n[yi(XiTw+c)log(exp(yi(XiTw+c))+1)]

但是请注意,您的公式在“日志部分”中没有yi,而这个有。(我想这是一个错字)

我不认为缺少是一个错字:yi

通常的对数损失(交叉熵损失)是: 其中,而是逻辑函数。

i[yilog(pi)+(1yi)log(1pi)],
pi=σ(XiTω+c)σ(x)=1/(1+ex)

从那里, 这与原始帖子中给出的 LLH 表达式相匹配,而指数中没有因子。

i[yilog(pi)+(1yi)log(1pi)]=i[yilog(pi1pi)+log(1pi)]=i[yi(XiTω+c)+log(1pi)]=i[yi(XiTω+c)log(1+exp(XiTω+c))].
yi

这只是定义的问题。定义使得 ( ),并使用,你得到yiyiy~iyi{0,1}y~i{1,1}y~i=2yi1pi=σ(XiTω+c)1σ(x)=σ(x)

i[yilog(pi)+(1yi)log(1pi)]=ilog(1+exp(y~i(XiTω+c))).