逻辑回归:损失和正则化

逻辑回归模型的训练过程与线性回归模型相同,但有以下两个主要区别:

以下部分将更深入地讨论这两个考虑因素。

对数损失

线性回归模块中,您使用了平方损失(也称为 L2 损失)作为损失函数。对于输出值的变化率恒定的线性模型,平方损失效果很好。例如,对于线性模型 $y' = b + 3x_1$,每次将输入值 $x_1$ 增加 1 时,输出值 $y'$ 就会增加 3。

不过,逻辑回归模型的变化率是恒定不变的。 正如您在计算概率中所看到的,sigmoid 曲线呈 S 形,而不是线性。当对数几率 ($z$) 值接近 0 时,$z$ 的小幅增加会导致 $y$ 的变化远大于 $z$ 为较大的正数或负数时的情况。下表显示了输入值为 5 到 10 时 S 型函数的输出,以及捕获结果差异所需的相应精度。

输入 logistic 输出 所需的精确度位数
5 0.993 3
6 0.997 3
7 0.999 3
8 0.9997 4
9 0.9999 4
10 0.99998 5

如果您使用平方损失来计算 sigmoid 函数的误差,那么随着输出越来越接近 01,您需要更多内存来保持跟踪这些值所需的精度。

相反,逻辑回归的损失函数是对数损失。对数损失等式返回的是变化幅度的对数,而不仅仅是数据与预测之间的距离。对数损失的计算方式如下:

$\text{对数损失} = -\frac{1}{N}\sum_{i=1}^{N} y_i\log(y_i') + (1 - y_i)\log(1 - y_i')$

其中:

  • \(N\) 是数据集中的已标记示例数量
  • \(i\) 是数据集中某个示例的索引(例如, \((x_3, y_3)\) 是数据集中的第三个示例)
  • \(y_i\) 是第 \(i\)个示例的标签。由于这是逻辑回归,因此 \(y_i\) 必须是 0 或 1。
  • \(y_i'\) 是模型对第 \(i\)个示例的预测值(介于 0 和 1 之间),由 \(x_i\)中的一组特征得出。

逻辑回归中的正则化

正则化是一种在训练期间惩罚模型复杂性的机制,在逻辑回归建模中非常重要。如果不进行正则化,在模型具有大量特征的情况下,逻辑回归的渐近性质会使损失不断趋近于 0。因此,大多数逻辑回归模型会使用以下两种策略之一来降低模型复杂性: