哪个损失函数对逻辑回归是正确的?


31

我读到了两个用于逻辑回归的损失函数版本,其中哪个是正确的,为什么?

  1. 来自机器学习的 Zhou ZH(中文),其中:β=(w,b) and βTx=wTx+b

    (1)l(β)=∑i=1m(−yiβTxi+ln⁡(1+eβTxi))

  2. 从我的大学课程中,:zi=yif(xi)=yi(wTxi+b)

    (2)L(zi)=log⁡(1+e−zi)


我知道第一个是所有样本的累加,第二个是单个样本的累加,但是我对两个损失函数形式的差异感到更加好奇。不知何故,我觉得它们是等效的。

Answers:


31

关系如下:l(β)=∑iL(zi)。

将逻辑函数定义为f(z)=ez1+ez=11+e−z。它们具有f(−z)=1−f(z)。换句话说:

11+ez=e−z1+e−z.

如果您采取双方的对立,则以您得到的日志为准:

ln⁡(1+ez)=ln⁡(1+e−z)+z.

从两侧减去z,您应该看到:

−yiβTxi+ln(1+eyiβTxi)=L(zi).

编辑:

目前,我正在重新阅读此答案,并对如何使等于。最初的问题也许有错别字。- Ÿ 我β Ť X 我 + 升Ñ (1 + Ë ÿ 我β Ť X 我)−yiβTxi+ln(1+eβTxi)−yiβTxi+ln(1+eyiβTxi)

编辑2:

在原始问题中没有错字的情况下,@ ManelMorales似乎是正确的,以引起人们注意以下事实:当 -1,1,概率质量函数可以写为由于的特性,。我在这里用另一种方式重写它,因为他在符号上引入了新的模棱两可。其余的方法是对每个编码取负对数似然率。有关更多详细信息,请参见下面的答案。P (ÿ 我 = Ŷ 我)= ˚F (ÿ 我β Ť X 我)˚F (- Ž )= 1 - ˚F (ż )ž 我 ÿy∈{−1,1}P(Yi=yi)=f(yiβTxi)f(−z)=1−f(z)ziy


42

OP错误地认为这两个函数之间的关系是由于样本数(即单个样本与全部样本)引起的。但是,实际的区别只是我们选择培训标签的方式。

在二进制分类的情况下,我们可以分配标签或。y=±1y=0,1

如前所述,逻辑函数具有概率形式,即和为。如果我们选择标签我们可以分配 σ(z)σ(−z)=1−σ(z)σ(z)∈(0,1)z→±∞y=0,1

P(y=1|z)=σ(z)=11+e−zP(y=0|z)=1−σ(z)=11+ez

可以更紧凑地写为。P(y|z)=σ(z)y(1−σ(z))1−y

最大化对数似然率比较容易。最大化对数可能性与最小化负对数可能性相同。对于样本,在采用自然对数并进行了一些简化之后,我们将得出:m{xi,yi}

l(z)=−log⁡(∏imP(yi|zi))=−∑imlog⁡(P(yi|zi))=∑im−yizi+log⁡(1+ezi)

可以在此jupyter笔记本上找到完整的推导和其他信息。另一方面,我们可能改为使用标签。显然,我们可以分配y=±1

P(y|z)=σ(yz).

也很明显。遵循与之前相同的步骤,在这种情况下,我们将损失函数最小化P(y=0|z)=P(y=−1|z)=σ(−z)

L(z)=−log⁡(∏jmP(yj|zj))=−∑jmlog⁡(P(yj|zj))=∑jmlog⁡(1+e−yzj)

在我们采取由负号引起的倒数之后的最后一步。虽然我们不应该将这两种形式等同起来,但是鉴于每种形式具有不同的值,但是这两种是等效的:y

−yizi+log⁡(1+ezi)≡log⁡(1+e−yzj)

的情况很容易显示。如果,则左侧的,右侧的。yi=1yi≠1yi=0yi=−1

虽然可能有一些基本原因可以说明为什么我们有两种不同的形式(请参阅为什么有两种不同的逻辑损失公式/符号?),但选择前者的一个原因是出于实际考虑。在前者中,我们可以使用属性来计算和,这两项都是收敛分析所必需的(即,通过计算Hessian确定损失函数的凸性)。∂σ(z)/∂z=σ(z)(1−σ(z))∇l(z)∇2l(z)


逻辑损失函数是凸的吗?
— user85361

2
Log reg是凸的,但不是 -convex。因此,我们无法限制梯度下降收敛所需的时间。我们可以通过添加正则项来调整的形式以使其强凸:使用正常数 将我们的新函数定义为 st是强凸的,我们现在可以证明的收敛边界。不幸的是,我们现在正在最小化其他功能!幸运的是,我们可以证明正则化函数的最优值接近于原始函数的最优值。α 升λ 升'(ż )= 升(ż )+ λ ‖ Ž ‖ 2 升'(ż )λ 升'l(z)αlλl′(z)=l(z)+λ‖z‖2l′(z)λl′
— Manuel Morales

您所指的笔记本已经走了,我得到了另一个证明:statlect.com/fundamentals-of-statistics / ...
— Domi.Zhang

2
我发现这是最有用的答案。
— mohit6up

@ManuelMorales您是否链接到正则化函数的最佳值接近原始值?
— 马克

19

我学习了逻辑回归的损失函数,如下所示。

逻辑回归执行二进制分类,因此标签输出为二进制,0或1。令为给定输入特征向量二进制输出为1 的概率。系数是算法尝试学习的权重。y x wP(y=1|x)yxw

P(y=1|x)=11+e−wTx

因为逻辑回归是二元回归的,所以概率只是1减去上述项。P(y=0|x)

P(y=0|x)=1−11+e−wTx

损失函数是一个训练示例的(A)输出乘以和(B)输出乘以的总和超过训练示例。y = 1 P (y = 1 )y = 0 P (y = 0J(w)y=1P(y=1)y=0mP(y=0)m

J(w)=∑i=1my(i)log⁡P(y=1)+(1−y(i))log⁡P(y=0)

其中表示训练数据中的标签。如果训练实例的标签为,则,将左求和保留在原位置,而将右求和的变为。另一方面,如果训练实例的,则保留带有项的右加数,而左加数变为。对数概率用于简化计算。 i t h 1 y (i ) = 1 1 - y (i )y(i)ith1y(i)=11−y(i)y = 0 1 - y (i ) 00y=01−y(i)0

如果然后用较早的表达式替换和,则得到:P (P(y=1)P(y=0)

J(w)=∑一世=1个米ÿ(一世)日志⁡(1个1个+Ë-wŤX)+(1个-ÿ(一世))日志⁡(1个-1个1个+Ë-wŤX)

您可以在这些斯坦福大学的讲义中阅读有关此表格的更多信息。


这个答案在这里也提供了一些相关的观点。
— GeoMatt22

6
您拥有的表达式不是损失(要最小化),而是对数似然(要最大化)。
— xenocyon

2
@xenocyon true-相同的公式通常在负的总和上加上负号。
— Alex Klibisz

1

代替均方误差,我们使用称为交叉熵的成本函数,也称为对数损失。交叉熵损失可分为两个独立的成本函数:一个用于y = 1,一个用于y = 0。

j(θ)=1个米∑一世=1个米CØsŤ(Hθ(X(一世)),ÿ(一世))CØsŤ(Hθ(X),ÿ)=-日志⁡(Hθ(X))一世F ÿ=1个CØsŤ(Hθ(X),ÿ)=-日志⁡(1个-Hθ(X))一世F ÿ=0

当我们将它们放在一起时,我们有:

Ĵ(θ)=1个米∑一世=1个米[ÿ(一世)日志⁡(Hθ(X(一世)))+(1个-ÿ(一世))日志⁡(1个-Hθ(X)(一世))]

上式中的和乘以一个狡猾的把戏,让我们使用相同的方程式来求解和情况。如果,则第一侧抵消。如果,则第二侧抵消。在这两种情况下,我们仅执行需要执行的操作。ÿ(1−y)y=1y=0y=0y=1

如果您不想使用for循环,可以尝试上述方程式的矢量化形式

h=g(Xθ)J(θ)=1m⋅(−yTlog⁡(h)−(1−y)Tlog⁡(1−h))

整个解释可以在Machine Learning Cheatsheet上查看。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.