逻辑回归损失函数为什么使用最大似然估计而不用最小二乘法

最小二乘法的误差符合正态分布,而逻辑回归的误差符合的是二项分布,所以不能用最小二乘法来作为损失函数,那么能够用最大似然预计来做。

从求最优解的角度来解释:

如果用最小二乘法,目标函数就是 E_{w,b}=\sum_{i=1}^{m}\left ( y_{i}-\frac{1}{1+e^{-\left ( w^{T}x_{i}+b \right )}}\right )^2 ,是非凸的,不容易求解,会得到局部最优。

如果用最大似然估计,目标函数就是对数似然函数: l_{w,b}=\sum_{i=1}^{m}\left ( -y_{i}\left ( w^{T}x_{i}+b \right )+ln\left ( 1+e^{w^{T}x_{i}+b} \right ) \right ) ,是关于 (w,b) 的高阶连续可导凸函数,可以方便通过一些凸优化算法求解,比如梯度下降法、牛顿法等。

最小二乘作为损失函数的函数曲线:

图1 最小二乘作为逻辑回归模型的损失函数,theta为待优化参数

 

以及最大似然作为损失函数的函数曲线(最大似然损失函数后面给出):

图2 最大似然作为逻辑回归模型的损失函数,theta为待优化参数

 

很显然了,图2比图1展现的函数要简单多了,很容易求到参数的最优解(凸函数),而图1很容易陷入局部最优解(非凸函数)。这就是前面说的选取的标准要容易测量,这就是逻辑回归损失函数为什么使用最大似然而不用最小二乘的原因了。

既然是最大似然,我们的目标当然是要最大化似然概率了:

max \prod_{i=1}^{m}p(y_{i}|x_{i},\theta)

对于二分类问题有:

p_{1}=p(y=1|x,\theta)=\frac{e^{x\theta}}{1+e^{x\theta}},y=1

p_{0}=p(y=0|x,\theta)=\frac{1}{1+e^{x\theta}},y=0

用一个式子表示上面这个分段的函数为:(记得写成相乘的形式)

p=p(y|x,\theta)=p_{1}^{y_{i}}\ast p_{0}^{1-y_{i}}

代入目标函数中,再对目标函数取对数,则目标函数变为:

max \sum_{i=1}^{m}({y_{i}\log{p_{1}}+(1-y_{i})\log{p_{0})}}

如果用 h_{\theta}(x_{i}) 来表示 p_{1} ,则可用 1-h_{\theta}(x_{i}) 来表示 p_{0} ,再将目标函数max换成min,则目标函数变为:

min -\frac{1}{m}\sum_{i=1}^{m}({y_{i}\log{h_{\theta}(x_{i})}+(1-y_{i})\log({1-h_{\theta}(x_{i})}))}

这样就得到最终的形式了!

 

参考文献

https://www.zhihu.com/question/65350200

### 逻辑回归损失函数的数学推导过程 #### 背景介绍 逻辑回归是一种用于分类问题的统计学习方法,属于广义线性模型的一种。它通过引入 Sigmoid 函数将线性组合 \( w^T x + b \) 映射到概率空间,从而实现二分类任务。 #### 模型表示 设输入特征向量为 \( x \),权重向量为 \( w \),偏置项为 \( b \),则逻辑回归的预测输出可表示为: \[ h_\theta(x) = \sigma(w^T x + b) \] 其中,\( \sigma(z) \) 是 Sigmoid 函数,定义为: \[ \sigma(z) = \frac{1}{1 + e^{-z}} \] #### 极大似然估计 为了找到最佳参数 \( w \) 和 \( b \),我们基于训练数据集最大化似然函数。对于给定的数据样本 \( (x_i, y_i) \),其中 \( y_i \in \{0, 1\} \),单个样本的条件概率可以写成: \[ P(y_i | x_i; w, b) = \begin{cases} h_\theta(x_i), & \text{if } y_i = 1 \\ 1 - h_\theta(x_i), & \text{if } y_i = 0 \end{cases} \] 综合所有样本的联合分布(假设独立同分布),得到总体似然函数: \[ L(w, b) = \prod_{i=1}^m P(y_i | x_i; w, b) \] 取对数后转化为对数似然函数: \[ l(w, b) = \sum_{i=1}^m \left[ y_i \log(h_\theta(x_i)) + (1 - y_i) \log(1 - h_\theta(x_i)) \right] \tag{1}[^1] \] #### 定义损失函数 为了让优化目标更直观,我们将对数似然函数乘以负一,转换为最小化问题。此时,损失函数 \( J(w, b) \) 表达式为: \[ J(w, b) = -\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] \tag{2}[^5] \] #### 数学展开与简化 进一步代入 \( h_\theta(x_i) = \sigma(w^T x_i + b) \),并利用 Sigmoid 的性质 \( 1 - \sigma(z) = \sigma(-z) \),可以重新整理损失函数的形式。具体计算如下: 令 \( z = w^T x_i + b \),则有: \[ h_\theta(x_i) = \sigma(z) = \frac{1}{1 + e^{-z}}, \quad 1 - h_\theta(x_i) = \sigma(-z) = \frac{e^{-z}}{1 + e^{-z}} \] 因此,单个样本的贡献部分变为: \[ -\left[ y_i \log(\sigma(z)) + (1 - y_i) \log(\sigma(-z)) \right] \] 继续展开并对数项进行处理,最终得到每条记录上的损失函数表达式为: \[ J(w, b) = -\frac{1}{m} \sum_{i=1}^m \left[ y_i (w^T x_i + b) - \log(1 + e^{w^T x_i + b}) \right] \tag{3}[^4] \] #### 防止数值不稳定性的改进 由于指数运算可能导致数值溢出或下溢,在实际应用中常采用一种稳定化的技巧。例如,当 \( z = w^T x_i + b \geq 0 \) 时,直接使用原始公式;而当 \( z < 0 \) 时,改用等价形式避免过大值的影响。这种变换后的通用公式为: \[ \max(z, 0) - y_i z + \log(1 + e^{-|z|}) \] 这一步骤有效缓解了极端情况下的计算误差问题[^3]。 --- ### Python 实现代码示例 以下是逻辑回归损失函数的一个简单实现: ```python import numpy as np def logistic_loss(w, X, y): """ 计算逻辑回归损失函数值 参数: w: 权重向量 (包括b作为最后一维) X: 输入矩阵 (n_samples, n_features) y: 标签向量 (n_samples,) 返回: loss: 平均损失值 """ n_samples = X.shape[0] z = np.dot(X, w[:-1]) + w[-1] # 加权和加上bias predictions = 1 / (1 + np.exp(-z)) loss = -(np.sum(y * np.log(predictions) + (1 - y) * np.log(1 - predictions))) / n_samples return loss # 测试例子 X_test = np.array([[1, 2], [3, 4]]) y_test = np.array([0, 1]) w_test = np.array([0.5, -0.5, 0.1]) print(logistic_loss(w_test, X_test, y_test)) ``` ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值