【机器学习笔记】——逻辑回归 & 交叉熵

本文详细介绍了逻辑回归模型,包括模型的推导、梯度下降公式、正则化以及交叉熵的概念。通过实例展示了模型的训练过程,包括代价函数的构建、梯度下降法的运用,以及正则化在防止过拟合中的作用。此外,还探讨了多分类问题,并提供了编程练习,涵盖了逻辑回归模型的实现和优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目 录

1.逻辑回归模型

1.1 逻辑回归模型

  我们将因变量(dependant variable)可能属于的两个类分别称为负向类(negative class)和 正向类(positive class),因变量 Y ∈ { 0 ,   + 1 } Y \in \{0, \ +1\} Y{ 0, +1},其中0表示负向类,1表示正向类。 为了使模型的输出在0和1之间,需要引进一个新的模型,即逻辑回归模型。

  模型假设:
h θ ( x ) = g ( θ T x ) h_\theta (x) = g(\theta^T x) hθ(x)=g(θTx)

  其中 x ∈ R n x \in \mathbf{R}^n xRn是输入, g ( z ) = 1 1 + e − z g(z) = \frac{1}{1 + e^{-z}} g(z)=1+ez1 是Sigmoid函数,逻辑函数的一种,函数图像如下:
在这里插入图片描述
  因此模型可以表示为
h θ ( x ) = 1 1 + e − θ T x h_\theta (x) = \frac{1}{1 + e^{-\theta^T x}} hθ(x)=1+eθTx1

   h θ ( X ) h_\theta (X) hθ(X)给出了给定输入 x x x时,结果为1的概率, h θ ( x ) = P ( Y = 1 ∣ x , θ ) h_\theta (x) = P(Y = 1 | x, \theta) hθ(x)=P(Y=1x,θ),即当 h θ ( x ) ≥ 0.5 h_\theta (x) \ge 0.5 hθ(x)0.5时预测 Y = 1 Y = 1 Y=1,当 h θ ( x ) &lt; 0.5 h_\theta (x) \lt 0.5 hθ(x)<0.5时预测 Y = 0 Y = 0 Y=0,参照Sigmoid函数,即当 θ T x ≥ 0 \theta^T x \ge 0 θTx0时预测 Y = 1 Y = 1 Y=1,当 θ T x &lt; 0 \theta^T x \lt 0 θTx<0时预测 Y = 0 Y = 0 Y=0

  这时逻辑回归模型为:
P ( Y = 1 ∣ x ) = 1 1 + e − θ T x P(Y = 1 | x) = \frac{1}{1 + e^{-\theta^T x}} P(Y=1x)=1+eθTx1

P ( Y = 0 ∣ x ) = e − θ T x 1 + e − θ T x P(Y = 0 | x) = \frac{e^{-\theta^T x}}{1 + e^{-\theta^T x}} P(Y=0x)=1+eθTxeθTx

  于是我们只需要得到参数 θ \theta θ就可以确定我们的模型。

1.2 模型的推导1——直接使用极大似然

  对于给定的训练集 T = { ( x 1 , y 1 ) , ( x 1 , y 1 ) , ⋯ &ThinSpace; , ( x N , y N ) } T = \{ (x_1, y_1),(x_1, y_1),\cdots ,(x_N, y_N) \} T={ (x1,y1),(x1,y1),,(xN,yN)},其中 x i = ( 0 , x i ( 1 ) , x i ( 2 ) , ⋯ &ThinSpace; , x i ( n ) ) ∈ R n + 1 x_i = (0, x_i^{(1)}, x_i^{(2)}, \cdots , x_i^{(n)}) \in \mathbf{R}^{n + 1} xi=(0,xi(1),xi(2),,xi(n))Rn+1 y i ∈ { 0 ,   + 1 } y_i \in \{0, \ +1\} yi{ 0, +1},可以使用极大似然估计法估计参数模型(从最优化的观点看,似然函数是光滑的凸函数,因此多种最优化的方法都适用,能保证找到全局最优解),从而得到逻辑回归模型。

  设:
P ( Y = 1 ∣ x , θ ) = h θ ( x ) , P ( Y = 0 ∣ x , θ ) = 1 − h θ ( x ) P(Y = 1 | x, \theta) = h_{\theta} (x), \quad P(Y = 0 | x, \theta) = 1 - h_{\theta} (x) P(Y=1x,θ)=hθ(x),P(Y=0x,θ)=1hθ(x)

其中 θ = ( θ 0 , θ 1 , θ 2 , ⋯ &ThinSpace; , θ n ) \theta = (\theta_0, \theta_1, \theta_2, \cdots, \theta_n) θ=(θ0,θ1,θ2,,θn)

  似然函数为:
L ( θ ) = ∏ i = 1 N h θ ( x ) y i ( 1 − h θ ( x ) ) 1 − y i L(\theta) = \prod_{i = 1}^N h_{\theta} (x)^{y_i}(1 - h_{\theta} (x))^{1 - y_i} L(θ)=i=1Nhθ(x)yi(1hθ(x))1yi

  对数似然函数为:
l ( θ ) = ∑ i = 1 N y i log ⁡ h θ ( x ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x ) ) = ∑ i = 1 N y i log ⁡ 1 1 + e − θ T x + ( 1 − y i ) log ⁡ e − θ T x 1 + e − θ T x = ∑ i = 1 N ( y i − 1 ) θ T x − log ⁡ ( 1 + e − θ T x ) \begin{aligned} l(\theta) &amp; = \sum_{i = 1}^N y_i\log h_{\theta} (x) + (1 - y_i) \log (1 - h_{\theta} (x)) \\ &amp; = \sum_{i = 1}^N y_i\log \frac{1}{1 + e^{-\theta^T x}} + (1 - y_i) \log \frac{e^{-\theta^T x}}{1 + e^{-\theta^T x}} \\ &amp; = \sum_{i = 1}^N (y_i - 1) \theta^T x - \log (1 + e^{-\theta^T x}) \end{aligned} l(θ)=i=1Nyiloghθ(x)+(1yi)log(1hθ(x))=i=1Nyilog1+eθTx1+(1yi)log1+eθTxeθTx=i=1N(yi1)θTxlog(1+eθTx)
  对似然函数求极大值,得到 θ \theta θ的估计,对 θ \theta θ求导:
∂ l ( θ ) ∂ θ j = ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \frac{\partial l(\theta)}{\partial \theta_j} = \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} θjl(θ)=i=1N(yi1+eθTx1)xi(j)

  假设得到的 θ \theta θ的极大似然估计值为 θ ^ \hat{\theta} θ^,那么学到的逻辑回归模型就是:
P ( Y = 1 ∣ x ) = 1 1 + e − θ ^ T x P(Y = 1 | x) = \frac{1}{1 + e^{-\hat{\theta}^T x}} P(Y=1x)=1+eθ^Tx1

P ( Y = 0 ∣ x ) = e − θ ^ T x 1 + e − θ ^ T x P(Y = 0 | x) = \frac{e^{-\hat{\theta}^T x}}{1 + e^{-\hat{\theta}^T x}} P(Y=0x)=1+eθ^Txeθ^Tx

  求似然函数的最大值,我们可以梯度上升(梯度的解释见第2节)的方法:
θ j = θ j + α ∂ l ( θ ) ∂ θ j = θ j + α ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \theta_j = \theta_j + \alpha \frac{\partial l(\theta)}{\partial \theta_j} = \theta_j + \alpha \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} θj=θj+αθjl(θ)=θj+αi=1N(yi1+eθTx1)xi(j)

其中 α \alpha α为学习率,我们也可以用梯度下降的方法,但是需要对似然函数进行适当处理,令 J ( θ ) = − 1 N l ( θ ) J(\theta) = - \frac{1}{N}l(\theta) J(θ)=N1l(θ),于是有:
J ( θ ) = − 1 N ∑ i = 1 N [ y i log ⁡ h θ ( x ) + ( 1 − y i ) log ⁡ ( 1 − h θ ( x ) ) ] J(\theta) = -\frac{1}{N} \sum_{i = 1}^N [y_i\log h_{\theta} (x) + (1 - y_i) \log (1 - h_{\theta} (x))] J(θ)=N1i=1N[yiloghθ(x)+(1yi)log(1hθ(x))]

该式即为交叉熵损失函数或者交叉熵公式。

  对 θ j \theta_j θj求偏导:

∂ J ( θ ) ∂ θ j = 1 N ∑ i = 1 N ( h θ ( x i ) − y i ) x i ( j ) = − 1 N ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j} &amp; = \frac{1}{N} \sum_{i = 1}^{N} (h_{\theta}(x_i) - y_i)x_i^{(j)} \\ &amp; = - \frac{1}{N} \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} \end{aligned} θjJ(θ)=N1i=1N(hθ(xi)yi)xi(j)=N1i=1N(yi1+eθTx1)xi(j)

  这样就可以用梯度下降发逼近参数 θ \theta θ
θ j = θ j − α ∂ J ( θ ) ∂ θ j = θ j − α 1 N ∑ i = 1 N ( y i − 1 1 + e − θ T x ) x i ( j ) \theta_j = \theta_j - \alpha \frac{\partial J(\theta)}{\partial \theta_j} = \theta_j - \alpha \frac{1}{N} \sum_{i = 1}^N (y_i - \frac{1}{1 + e^{-\theta^T x}}) x_i^{(j)} θj=θj

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值