我读到了两个用于逻辑回归的损失函数版本,其中哪个是正确的,为什么?
来自机器学习的 Zhou ZH(中文),其中:
从我的大学课程中,:
我知道第一个是所有样本的累加,第二个是单个样本的累加,但是我对两个损失函数形式的差异感到更加好奇。不知何故,我觉得它们是等效的。
我读到了两个用于逻辑回归的损失函数版本,其中哪个是正确的,为什么?
来自机器学习的 Zhou ZH(中文),其中:
从我的大学课程中,:
我知道第一个是所有样本的累加,第二个是单个样本的累加,但是我对两个损失函数形式的差异感到更加好奇。不知何故,我觉得它们是等效的。
Answers:
关系如下:。
将逻辑函数定义为。它们具有。换句话说:
如果您采取双方的对立,则以您得到的日志为准:
从两侧减去,您应该看到:
目前,我正在重新阅读此答案,并对如何使等于。最初的问题也许有错别字。- Ÿ 我β Ť X 我 + 升Ñ (1 + Ë ÿ 我β Ť X 我)
在原始问题中没有错字的情况下,@ ManelMorales似乎是正确的,以引起人们注意以下事实:当 -1,1,概率质量函数可以写为由于的特性,。我在这里用另一种方式重写它,因为他在符号上引入了新的模棱两可。其余的方法是对每个编码取负对数似然率。有关更多详细信息,请参见下面的答案。P (ÿ 我 = Ŷ 我)= ˚F (ÿ 我β Ť X 我)˚F (- Ž )= 1 - ˚F (ż )ž 我 ÿ
OP错误地认为这两个函数之间的关系是由于样本数(即单个样本与全部样本)引起的。但是,实际的区别只是我们选择培训标签的方式。
在二进制分类的情况下,我们可以分配标签或。
如前所述,逻辑函数具有概率形式,即和为。如果我们选择标签我们可以分配
可以更紧凑地写为。
最大化对数似然率比较容易。最大化对数可能性与最小化负对数可能性相同。对于样本,在采用自然对数并进行了一些简化之后,我们将得出:
可以在此jupyter笔记本上找到完整的推导和其他信息。另一方面,我们可能改为使用标签。显然,我们可以分配
也很明显。遵循与之前相同的步骤,在这种情况下,我们将损失函数最小化
在我们采取由负号引起的倒数之后的最后一步。虽然我们不应该将这两种形式等同起来,但是鉴于每种形式具有不同的值,但是这两种是等效的:
的情况很容易显示。如果,则左侧的,右侧的。
虽然可能有一些基本原因可以说明为什么我们有两种不同的形式(请参阅为什么有两种不同的逻辑损失公式/符号?),但选择前者的一个原因是出于实际考虑。在前者中,我们可以使用属性来计算和,这两项都是收敛分析所必需的(即,通过计算Hessian确定损失函数的凸性)。
我学习了逻辑回归的损失函数,如下所示。
逻辑回归执行二进制分类,因此标签输出为二进制,0或1。令为给定输入特征向量二进制输出为1 的概率。系数是算法尝试学习的权重。y x w
因为逻辑回归是二元回归的,所以概率只是1减去上述项。
损失函数是一个训练示例的(A)输出乘以和(B)输出乘以的总和超过训练示例。y = 1 P (y = 1 )y = 0 P (y = 0m
其中表示训练数据中的标签。如果训练实例的标签为,则,将左求和保留在原位置,而将右求和的变为。另一方面,如果训练实例的,则保留带有项的右加数,而左加数变为。对数概率用于简化计算。 i t h 1 y (i ) = 1 1 - y (i )y = 0 1 - y (i ) 0
如果然后用较早的表达式替换和,则得到:P (
您可以在这些斯坦福大学的讲义中阅读有关此表格的更多信息。
代替均方误差,我们使用称为交叉熵的成本函数,也称为对数损失。交叉熵损失可分为两个独立的成本函数:一个用于y = 1,一个用于y = 0。
当我们将它们放在一起时,我们有:
上式中的和乘以一个狡猾的把戏,让我们使用相同的方程式来求解和情况。如果,则第一侧抵消。如果,则第二侧抵消。在这两种情况下,我们仅执行需要执行的操作。
如果您不想使用for
循环,可以尝试上述方程式的矢量化形式
整个解释可以在Machine Learning Cheatsheet上查看。