逻辑回归解密:原理、公式和优化全解析

文章目录


一、 前言

在机器学习领域,逻辑回归是一个基础且极其重要的算法,尤其适用于处理二分类问题。它通过将特征的线性组合通过Sigmoid函数映射到概率值,用以预测事件的发生概率。本文将深入探讨逻辑回归的核心原理,从Sigmoid函数的基础开始,详细解析最大似然估计法的求导过程。通过逐步展开的数学推导,我们希望使读者能够全面理解并应用逻辑回归于实际的数据分析和机器学习项目中。


二、逻辑回归的原理和基本公式

1. 逻辑回归的原理

逻辑回归模型假设目标变量 Y Y Y取值为0或1,它通过一个概率分布链接函数(Sigmoid函数)将特征的线性组合映射到(0, 1)区间,这样的输出可以解释为事件发生的概率。

核心函数:Sigmoid函数

Sigmoid函数是逻辑回归中使用的链接函数,定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1

其中 z z z是输入特征的线性组合:
z = β 0 + β 1 x 1 + β 2 x 2 + ... + β n x n z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_n x_n z=β0+β1x1+β2x2+...+βnxn

2. 逻辑回归模型

逻辑回归模型预测给定输入特征 X X X下,目标事件 Y = 1 Y=1 Y=1的概率:
P ( Y = 1 ∣ X ) = σ ( β T X ) P(Y = 1 | X) = \sigma(\beta^T X) P(Y=1∣X)=σ(βTX)

这里, β T X \beta^T X βTX表示参数向量 β \beta β和特征向量 X X X的点积。

3. 梯度上升法参数估计:最大似然估计

为了找到最佳的参数 β \beta β,逻辑回归使用最大似然估计方法,即选择能够使得观测到的样本数据最有可能出现的参数值。

对数似然函数

对数似然函数基于所有观测数据,可以写为:
ℓ ( β ) = ∑ i = 1 n [ y ( i ) log ⁡ σ ( z ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \ell(\beta) = \sum_{i=1}^n \left[ y^{(i)} \log \sigma(z^{(i)}) + (1 - y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] ℓ(β)=i=1∑n[y(i)logσ(z(i))+(1−y(i))log(1−σ(z(i)))]

其中 z ( i ) = β T x ( i ) z^{(i)} = \beta^T x^{(i)} z(i)=βTx(i)。

求导过程

要最大化对数似然函数,需要对其进行求导,找到梯度为零的点。首先,我们利用链式法则和Sigmoid函数的导数,对 β j \beta_j βj的偏导数展开:

  1. Sigmoid函数的导数:
    d σ d z = σ ( z ) ( 1 − σ ( z ) ) \frac{d\sigma}{dz} = \sigma(z)(1 - \sigma(z)) dzdσ=σ(z)(1−σ(z))

  2. 链式法则的应用:
    ∂ ℓ ( β ) ∂ β j = ∑ i = 1 n [ y ( i ) 1 σ ( z ( i ) ) − ( 1 − y ( i ) ) 1 1 − σ ( z ( i ) ) ] σ ( z ( i ) ) ( 1 − σ ( z ( i ) ) ) x j ( i ) \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left[ y^{(i)} \frac{1}{\sigma(z^{(i)})} - (1 - y^{(i)}) \frac{1}{1 - \sigma(z^{(i)})} \right] \sigma(z^{(i)})(1 - \sigma(z^{(i)})) x_j^{(i)} ∂βj∂ℓ(β)=i=1∑n[y(i)σ(z(i))1−(1−y(i))1−σ(z(i))1]σ(z(i))(1−σ(z(i)))xj(i)

    这可以简化为:
    ∂ ℓ ( β ) ∂ β j = ∑ i = 1 n ( y ( i ) − σ ( z ( i ) ) ) x j ( i ) \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left( y^{(i)} - \sigma(z^{(i)}) \right) x_j^{(i)} ∂βj∂ℓ(β)=i=1∑n(y(i)−σ(z(i)))xj(i)

参数更新

使用梯度上升法来更新参数 β \beta β:
β j : = β j + α ∑ i = 1 n ( y ( i ) − σ ( z ( i ) ) ) x j ( i ) \beta_j := \beta_j + \alpha \sum_{i=1}^n \left( y^{(i)} - \sigma(z^{(i)}) \right) x_j^{(i)} βj:=βj+αi=1∑n(y(i)−σ(z(i)))xj(i)

其中, α \alpha α是学习率。

4. 梯度下降法参数估计:最小化损失函数

逻辑回归的负对数似然函数

首先,定义负对数似然函数(即损失函数)为:
J ( β ) = − ℓ ( β ) = − ∑ i = 1 n [ y ( i ) log ⁡ σ ( z ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] J(\beta) = -\ell(\beta) = -\sum_{i=1}^n \left[ y^{(i)} \log \sigma(z^{(i)}) + (1 - y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] J(β)=−ℓ(β)=−i=1∑n[y(i)logσ(z(i))+(1−y(i))log(1−σ(z(i)))]

其中 z ( i ) = β T x ( i ) z^{(i)} = \beta^T x^{(i)} z(i)=βTx(i),与之前相同。

梯度下降法求导过程

为了使用梯度下降法,我们需要求出负对数似然函数的梯度。求导步骤相似,但注意梯度的符号会反转。

我们已知:
∂ ℓ ( β ) ∂ β j = ∑ i = 1 n ( y ( i ) − σ ( z ( i ) ) ) x j ( i ) \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left( y^{(i)} - \sigma(z^{(i)}) \right) x_j^{(i)} ∂βj∂ℓ(β)=i=1∑n(y(i)−σ(z(i)))xj(i)

因此,负对数似然函数的梯度(负梯度)为:
∂ J ( β ) ∂ β j = − ∂ ℓ ( β ) ∂ β j = ∑ i = 1 n ( σ ( z ( i ) ) − y ( i ) ) x j ( i ) \frac{\partial J(\beta)}{\partial \beta_j} = -\frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left( \sigma(z^{(i)}) - y^{(i)} \right) x_j^{(i)} ∂βj∂J(β)=−∂βj∂ℓ(β)=i=1∑n(σ(z(i))−y(i))xj(i)

参数更新规则

在梯度下降法中,参数的更新规则为:
β j : = β j − α ∑ i = 1 n ( σ ( z ( i ) ) − y ( i ) ) x j ( i ) \beta_j := \beta_j - \alpha \sum_{i=1}^n \left( \sigma(z^{(i)}) - y^{(i)} \right) x_j^{(i)} βj:=βj−αi=1∑n(σ(z(i))−y(i))xj(i)

这里 α \alpha α是学习率,它控制参数更新的步长。

5. 迭代更新

通过迭代更新参数直至收敛(例如,当参数的改变量非常小或达到了预定的迭代次数),我们可以得到使对数似然函数最大化或损失函数最小化的参数 β \beta β。


三、逻辑回归的求导过程详解

逻辑回归模型中,我们需要最大化对数似然函数来找到最优参数。首先,我们定义对数似然函数,并详细展示对其求导的过程。

对数似然函数

逻辑回归的对数似然函数是:
ℓ ( β ) = ∑ i = 1 n [ y ( i ) log ⁡ σ ( z ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − σ ( z ( i ) ) ) ] \ell(\beta) = \sum_{i=1}^n \left[ y^{(i)} \log \sigma(z^{(i)}) + (1 - y^{(i)}) \log (1 - \sigma(z^{(i)})) \right] ℓ(β)=i=1∑n[y(i)logσ(z(i))+(1−y(i))log(1−σ(z(i)))]

其中 z ( i ) = β T x ( i ) z^{(i)} = \beta^T x^{(i)} z(i)=βTx(i)。

Sigmoid函数及其导数

Sigmoid函数定义为:
σ ( z ) = 1 1 + e − z \sigma(z) = \frac{1}{1 + e^{-z}} σ(z)=1+e−z1

其导数,通过对函数求导得到:
d σ d z = σ ( z ) ( 1 − σ ( z ) ) \frac{d\sigma}{dz} = \sigma(z)(1 - \sigma(z)) dzdσ=σ(z)(1−σ(z))

求导步骤

对于每个参数 β j \beta_j βj,我们应用链式法则:

  1. 链式法则的第一部分 :对 log ⁡ σ ( z ( i ) ) \log \sigma(z^{(i)}) logσ(z(i))和 log ⁡ ( 1 − σ ( z ( i ) ) ) \log (1 - \sigma(z^{(i)})) log(1−σ(z(i)))的导数。

    • 对 log ⁡ σ ( z ( i ) ) \log \sigma(z^{(i)}) logσ(z(i))的导数:
      ∂ ∂ z ( i ) log ⁡ σ ( z ( i ) ) = 1 σ ( z ( i ) ) ⋅ σ ( z ( i ) ) ( 1 − σ ( z ( i ) ) ) = 1 − σ ( z ( i ) ) \frac{\partial}{\partial z^{(i)}} \log \sigma(z^{(i)}) = \frac{1}{\sigma(z^{(i)})} \cdot \sigma(z^{(i)})(1 - \sigma(z^{(i)})) = 1 - \sigma(z^{(i)}) ∂z(i)∂logσ(z(i))=σ(z(i))1⋅σ(z(i))(1−σ(z(i)))=1−σ(z(i))

    • 对 log ⁡ ( 1 − σ ( z ( i ) ) ) \log (1 - \sigma(z^{(i)})) log(1−σ(z(i)))的导数:
      ∂ ∂ z ( i ) log ⁡ ( 1 − σ ( z ( i ) ) ) = 1 1 − σ ( z ( i ) ) ⋅ ( − σ ( z ( i ) ) ( 1 − σ ( z ( i ) ) ) ) = − σ ( z ( i ) ) \frac{\partial}{\partial z^{(i)}} \log (1 - \sigma(z^{(i)})) = \frac{1}{1 - \sigma(z^{(i)})} \cdot (-\sigma(z^{(i)})(1 - \sigma(z^{(i)}))) = -\sigma(z^{(i)}) ∂z(i)∂log(1−σ(z(i)))=1−σ(z(i))1⋅(−σ(z(i))(1−σ(z(i))))=−σ(z(i))

  2. 链式法则的第二部分 :对 z ( i ) = β T x ( i ) z^{(i)} = \beta^T x^{(i)} z(i)=βTx(i)的导数,即参数 β j \beta_j βj的影响。
    ∂ z ( i ) ∂ β j = x j ( i ) \frac{\partial z^{(i)}}{\partial \beta_j} = x_j^{(i)} ∂βj∂z(i)=xj(i)

  3. 整合

    将以上导数结果组合,得到对数似然函数关于 β j \beta_j βj的导数:
    ∂ ℓ ( β ) ∂ β j = ∑ i = 1 n [ y ( i ) ( 1 − σ ( z ( i ) ) ) − ( 1 − y ( i ) ) σ ( z ( i ) ) ] x j ( i ) \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left[ y^{(i)} (1 - \sigma(z^{(i)})) - (1 - y^{(i)}) \sigma(z^{(i)}) \right] x_j^{(i)} ∂βj∂ℓ(β)=i=1∑n[y(i)(1−σ(z(i)))−(1−y(i))σ(z(i))]xj(i)

    这可以简化为:
    ∂ ℓ ( β ) ∂ β j = ∑ i = 1 n ( y ( i ) − σ ( z ( i ) ) ) x j ( i ) \frac{\partial \ell(\beta)}{\partial \beta_j} = \sum_{i=1}^n \left( y^{(i)} - \sigma(z^{(i)}) \right) x_j^{(i)} ∂βj∂ℓ(β)=i=1∑n(y(i)−σ(z(i)))xj(i)

参数更新规则

根据上述导数,我们可以使用梯度上升法来更新每个参数 β j \beta_j βj:
β j : = β j + α ∑ i = 1 n ( y ( i ) − σ ( z ( i ) ) ) x j ( i ) \beta_j := \beta_j + \alpha \sum_{i=1}^n \left( y^{(i)} - \sigma(z^{(i)}) \right) x_j^{(i)} βj:=βj+αi=1∑n(y(i)−σ(z(i)))xj(i)

这里 α \alpha α是学习率,控制参数更新的步幅。

这个详细的求导过程不仅展示了如何从数学原理出发逐步求解,还清楚地阐释了每一步的逻辑,有助于深入理解逻辑回归模型的参数估计方式。


四、总结

逻辑回归虽然概念上简单,但其背后的数学原理和参数估计过程却包含丰富的统计学知识和优化技巧。通过本文的深入分析,我们不仅解释了如何构建逻辑回归模型,还详细讨论了参数如何通过最大似然估计进行优化。理解这些基础概念不仅有助于更好地运用逻辑回归,也为学习更复杂的机器学习算法打下坚实的基础。

相关推荐
此生只爱蛋12 分钟前
【手撕排序2】快速排序
c语言·c++·算法·排序算法
Chef_Chen42 分钟前
从0开始学习机器学习--Day13--神经网络如何处理复杂非线性函数
神经网络·学习·机器学习
咕咕吖43 分钟前
对称二叉树(力扣101)
算法·leetcode·职场和发展
Troc_wangpeng43 分钟前
R language 关于二维平面直角坐标系的制作
开发语言·机器学习
-Nemophilist-1 小时前
机器学习与深度学习-1-线性回归从零开始实现
深度学习·机器学习·线性回归
九圣残炎1 小时前
【从零开始的LeetCode-算法】1456. 定长子串中元音的最大数目
java·算法·leetcode
lulu_gh_yu1 小时前
数据结构之排序补充
c语言·开发语言·数据结构·c++·学习·算法·排序算法
丫头,冲鸭!!!2 小时前
B树(B-Tree)和B+树(B+ Tree)
笔记·算法
Re.不晚2 小时前
Java入门15——抽象类
java·开发语言·学习·算法·intellij-idea
艾派森2 小时前
大数据分析案例-基于随机森林算法的智能手机价格预测模型
人工智能·python·随机森林·机器学习·数据挖掘