逻辑回归算法的原理与损失函数推导
题目描述
逻辑回归是一种用于解决二分类问题的经典机器学习算法。给定一个包含特征向量 \(x\) 和二元标签 \(y \in \{0, 1\}\) 的数据集,逻辑回归的目标是构建一个模型,预测 \(P(y=1 \mid x)\)(即样本属于类别1的概率)。需要推导逻辑回归的假设函数、损失函数(对数损失),并解释如何使用梯度下降法优化参数。
解题过程
1. 假设函数的设计
逻辑回归的核心是将线性回归的连续输出映射到概率值(0到1之间)。线性回归的假设函数为 \(h_\theta(x) = \theta^T x\),但其输出范围是全体实数,无法直接表示概率。因此引入 Sigmoid 函数(又称逻辑函数):
\[\sigma(z) = \frac{1}{1 + e^{-z}} \]
该函数将任意实数 \(z\) 映射到 \((0, 1)\) 区间。将线性部分代入 Sigmoid 函数,得到逻辑回归的假设函数:
\[h_\theta(x) = \sigma(\theta^T x) = \frac{1}{1 + e^{-\theta^T x}} \]
其中 \(\theta\) 为模型参数,\(h_\theta(x)\) 表示 \(P(y=1 \mid x)\)。
2. 损失函数的推导
由于假设函数是非线性的,均方误差(MSE)会导致损失函数非凸,难以优化。逻辑回归使用 对数损失函数(Log Loss),其思想来源于最大似然估计。
- 对于单个样本 \((x, y)\),其概率可表示为:
\[ P(y \mid x) = \begin{cases} h_\theta(x) & \text{if } y=1 \\ 1 - h_\theta(x) & \text{if } y=0 \end{cases} \]
- 将两者合并为一个表达式:
\[ P(y \mid x) = [h_\theta(x)]^y [1 - h_\theta(x)]^{1-y} \]
- 对于整个数据集,似然函数为所有样本概率的乘积:
\[ L(\theta) = \prod_{i=1}^m P(y^{(i)} \mid x^{(i)}) \]
- 为方便计算,取对数似然函数:
\[ \ell(\theta) = \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)}) \log (1 - h_\theta(x^{(i)})) \right] \]
- 损失函数通常需要最小化,因此将对数似然取负号,得到 对数损失函数:
\[ J(\theta) = -\frac{1}{m} \sum_{i=1}^m \left[ y^{(i)} \log h_\theta(x^{(i)}) + (1-y^{(i)}) \log (1 - h_\theta(x^{(i)})) \right] \]
其中 \(m\) 是样本数,除以 \(m\) 是为了归一化。
3. 梯度下降优化
要最小化 \(J(\theta)\),需计算其梯度(偏导数)。关键步骤包括:
- 计算 Sigmoid 函数的导数:
\[ \sigma'(z) = \sigma(z)(1 - \sigma(z)) \]
- 对损失函数求关于参数 \(\theta_j\) 的偏导(以单个样本为例):
\[ \frac{\partial J(\theta)}{\partial \theta_j} = -\left[ y \cdot \frac{1}{h_\theta(x)} - (1-y) \cdot \frac{1}{1-h_\theta(x)} \right] \cdot \frac{\partial h_\theta(x)}{\partial \theta_j} \]
代入 \(h_\theta(x) = \sigma(\theta^T x)\) 和 Sigmoid 的导数,化简后可得:
\[ \frac{\partial J(\theta)}{\partial \theta_j} = (h_\theta(x) - y) \cdot x_j \]
- 对于所有样本,梯度下降的更新规则为:
\[ \theta_j := \theta_j - \alpha \cdot \frac{1}{m} \sum_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \]
其中 \(\alpha\) 是学习率。
4. 总结
- 逻辑回归通过 Sigmoid 函数将线性输出映射为概率。
- 损失函数基于最大似然估计推导,保证凸性便于优化。
- 梯度下降更新规则与线性回归形式相似,但假设函数不同。