逻辑回归的原理推导

LR用于解决二分类问题。可以认为LR模型拟合的是z=w*x+b 这条直线(分类边界),使得尽可能地将数据中的两个类别正确的分开。
预测函数:

   h ω ( x ) = g ( ω T x ) = 1 1 + e − ω T x h_{\omega}(x) = g(\omega^{T}x) = \frac{1}{1+e^{-\omega^{T}x}} hω(x)=g(ωTx)=1+eωTx1
   0 ≤ h ω ( x ) ≤ 1 0\le h_{\omega}(x)\le 1 0hω(x)1

输出值不表示预测结果,而是数据被预测为1(正例)的概率: P ( y = 1 ∣ x ; ω ) = h ω ( x ) P(y=1|x;\omega) = h_{\omega}(x) P(y=1x;ω)=hω(x)
那么预测为负例的概率就是 1 − h ω ( x ) = P ( y = 0 ∣ x ; ω ) 1-h_{\omega}(x) = P(y=0|x;\omega) 1hω(x)=P(y=0x;ω)

损失函数:
   L ( ω ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) L(\omega) = -ylog\hat{y} -(1-y)log(1-\hat{y}) L(ω)=ylogy^(1y)log(1y^)
用极大似然估计的方法得出。

逻辑回归如果用误差平方和作为损失函数的话,
   L ( ω ) = 1 n ∑ i = 1 n ( ϕ ( z ( i ) ) − y ( i ) ) 2 L(\omega) = \dfrac{1}{n} \sum\limits_{i=1}^{n}(\phi(z^{(i)}) - y^{(i)})^2 L(ω)=n1i=1n(ϕ(z(i))y(i))2
其中,i表示第i个样本点, y ( i ) y^{(i)} y(i)表示第i个样本的真实值, ϕ ( z ( i ) ) \phi(z^{(i)}) ϕ(z(i))表示第i个样本的预测值,
    ϕ ( z ) = 1 1 + e − z , z ( i ) = w T x ( i ) + b \phi(z)=\frac{1}{1+e^{-z}}, z^{(i)} = w^Tx^{(i)} + b ϕ(z)=1+ez1,z(i)=wTx(i)+b ;
此时,将 ϕ ( z ( i ) ) = 1 1 + e − z \phi(z^{(i)})=\frac{1}{1+e^{-z}} ϕ(z(i))=1+ez1 代入的话,会发现这是一个非凸函数,
这就意味着代价函数有着许多的局部最小值,不利于我们的求解。
解决方法就是用极大似然估计。

为什么用负对数似然作为损失函数呢?

极大似然估计:

h ω ( x ) h_{\omega}(x) hω(x)视为Y=1的后验估计,假设因变量y服从伯努利分布,取值为0和1,那么
     p ( y = 1 ∣ x ) = h ω ( x ) p(y=1|x) = h_{\omega}(x) p(y=1x)=hω(x)
     p ( y = 0 ∣ x ) = 1 − h ω ( x ) p(y=0|x) = 1-h_{\omega}(x) p(y=0x)=1hω(x)
两式合并: p ( y ∣ x ) = h ω ( x ) y ( 1 − h ω ( x ) ) 1 − y p(y | x) = h_{\omega} (x)^y (1-h_{\omega} (x))^{1-y} p(yx)=hω(x)y(1hω(x))1y

对n个数据 {(x1,y1),   (x2,y2),   (x3,y3), … (Xn,Yn)},看作一组事件发生的总概率:
  P总 = p(y1|x1)p(y2|x2)p(y3|x3)…p(yn|xn)
     = ∏ n = 1 N p y n ( 1 − p ) 1 − y n \prod\limits_{n=1}^{N} p^{y_{n}}(1-p)^{1-y_{n}} n=1Npyn(1p)1yn
这里, p ( y ∣ x ) = h ω p(y|x)=h_{\omega} p(yx)=hω是一个关于w的函数,x,y是已知数据,所以
P总是一个关于w的函数,未知变量只有一个w。

用极大似然估计来根据给定的训练集估计出参数w:

(1) 写出极大似然函数(Likehood)如下:
L ( ω ) = ∏ i = 1 m p ( y i ∣ x i ; ω ) = ∏ i = 1 m h ω ( x i ) y i ( 1 − h ω ( x i ) 1 − y i \begin{aligned} L(\omega)&= \prod_{i=1}^{m} p(y_i | x_i; \omega) \\ &= \prod_{i=1}^{m} h_{\omega}(x_i)^{y_i} (1-h_{\omega}(x_i)^{1-y_i} \\ \end{aligned} L(ω)=i=1mp(yixi;ω)=i=1mhω(xi)yi(1hω(xi)1yi
可见,似然函数L(w)和上面的 P 总 P_{总} P是一样的。

(2) 两边取对数:
l ( w ) = l n L ( w ) = ∑ i = 1 m [ y i l n ( h ω ( x i ) ) + ( 1 − y i ) l n ( 1 − h ω ( x i ) ) ] l(w)=lnL(w)=\sum\limits_{i = 1}^m [ y_{i}ln(h_{\omega}(x_{i})) + (1 - y_{i})ln(1-h_{\omega}(x_{i})) ] l(w)=lnL(w)=i=1m[yiln(hω(xi))+(1yi)ln(1hω(xi))]
取对数后l(w)与 P 总 P_{总} P的单调性是一样的。

参数估计的意思就是,通过改变w的值,使得 P 总 P_{总} P有不同的取值,
选取使 P 总 P_{总} P最大的那个 ω ∗ \omega^{*} ω,就认为是我们要求得的w。写成公式:
   ω ∗ = arg ⁡ max ⁡ ω   l ( ω ) \omega^{*} = \mathop{\arg\max}\limits_{\omega}\, l(\omega) ω=ωargmaxl(ω)

(2.5) 取负号
为了让最大似然值和最小损失相对应,
在l(w)前面加个负号,就从最大似然变为最小化负对数似然函数,作为LR的损失函数。
LR的损失函数是这么来的!

J ( ω ) = − 1 m l ( ω ) = − 1 m ∑ i = 1 m [ y i l n ( h ω ( x i ) ) + ( 1 − y i ) l n ( 1 − h ω ( x i ) ) ] \begin{aligned} J(\omega) &= - \frac{1}{m} l(\omega) \\ &= - \frac{1}{m} \sum_{i = 1}^m [ y_{i}ln(h_{\omega}(x_{i})) + (1 - y_{i})ln(1-h_{\omega}(x_{i})) ] \\ \end{aligned} J(ω)=m1l(ω)=m1i=1m[yiln(hω(xi))+(1yi)ln(1hω(xi))]     {损失函数}
简记为:
   L o s s ( ω ) = − y l o g y ^ − ( 1 − y ) l o g ( 1 − y ^ ) Loss(\omega) = -ylog\hat{y} -(1-y)log(1-\hat{y}) Loss(ω)=ylogy^(1y)log(1y^)

(3) 将对数似然函数对各参数求偏导数 并令其为0,得到对数似然方程组。
(4) 从方程组中解出各个参数。
既然要求J(w)的极小值,这里就换用梯度下降法求w
w j : = w j + Δ w j ,   Δ w j = − η ∂ J ( w ) ∂ w j w_j := w_j + \Delta w_j,\ \Delta w_j = -\eta \dfrac{\partial J(w)}{\partial w_j} wj:=wj+Δwj, Δwj=ηwjJ(w)

先求偏导:
∂ J ( ω ) ∂ ω j = − 1 m ∑ [ y i 1 h ω ( x i ) ∂ h ω ( x i ) ∂ ω + ( 1 − y i ) − 1 1 − h w ( x i ) ∂ h ω ( x i ) ∂ ω ] = − 1 m ∑ i m [ y i − h ω ( x i ) h ω ( x i ) ( 1 − h ω ( x i ) ) ] ∂ h ω ( x i ) ∂ ω \begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j} &= -\frac{1}{m} \sum [ y_{i} \frac{1}{h_{\omega}(x_i)} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} +(1-y_i) \frac{-1}{1-h_{w}(x_i)} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega}] \\ &= -\frac{1}{m} \sum_{i}^{m} [ \dfrac {y_i - h_{\omega}(x_i)} { h_{\omega}(x_i)(1-h_{\omega}(x_i)) } ] \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} \\ \end{aligned} ωjJ(ω)=m1[yihω(xi)1ωhω(xi)+(1yi)1hw(xi)1ωhω(xi)]=m1im[hω(xi)(1hω(xi))yihω(xi)]ωhω(xi)
h ω ( x ) h_{\omega}(x) hω(x) 首先是个sigmoid函数,其导数 g’(x) = g(x)(1 - g(x)) ,于是
把下面h(x)对w的偏导数代入上式:

∂ h ω ( x i ) ∂ ω = h w ( x i ) ( 1 − h ω ( x i ) ) ∂ ( − ω T x ) ∂ ω j = − x i , j h ω ( x i ) ( 1 − h ω ( x i ) ) \begin{aligned} \dfrac{\partial h_{\omega}(x_i)}{\partial \omega} &= h_{w}(x_i)(1-h_{\omega}(x_i))\dfrac{\partial (-\omega^Tx)}{\partial \omega_j} \\ &= -x_{i,j} h_{\omega}(x_i)(1-h_{\omega}(x_i)) \end{aligned} ωhω(xi)=hw(xi)(1hω(xi))ωj(ωTx)=xi,jhω(xi)(1hω(xi))
继续得到:
∂ J ( ω ) ∂ ω j = − 1 m ∑ i m ( y i − h ω ( x i ) ) ( − x i , j ) = − 1 m ∑ i m ( − y i ⋅ x i , j + h ω ( x i ) ⋅ x i , j ) = − 1 m ∑ i m ( h ω ( x i ) − y i ) x i , j \begin{aligned} \frac{ \partial J(\omega)} {\partial \omega_j} &= - \frac{1}{m} \sum_{i}^{m} (y_i - h_{\omega}(x_i)) (-x_{i,j}) \\ &= - \frac{1}{m} \sum_{i}^{m} (-y_i \cdot x_{i,j} + h_{\omega}(x_i) \cdot x_{i,j}) \\ & = -\frac{1}{m} \sum_{i}^{m} (h_{\omega}(x_i) - y_i) x_{i,j} \end{aligned} ωjJ(ω)=m1im(yihω(xi))(xi,j)=m1im(yixi,j+hω(xi)xi,j)=m1im(hω(xi)yi)xi,j
上述中 x i , j x_{i,j} xi,j表示第i个样本的第j个属性的取值。

于是, ω \omega ω的更新方式:
   ω j + 1 = ω j − α ∑ i = 1 m ( h ω ( x i ) − y i ) x i , j \omega_{j+1} = \omega_j - \alpha \sum\limits_{i=1}^{m} (h_{\omega}(x_i) - y_i) x_{i,j} ωj+1=ωjαi=1m(hω(xi)yi)xi,j

对于随机梯度下降,每次只取一个样本,则ω的更新方式为:
   ω j + 1 = ω j − α ( h ω ( x ) − y ) x j \omega_{j+1} = \omega_j - \alpha (h_{\omega}(x) - y) x_{j} ωj+1=ωjα(hω(x)y)xj
xj 为这个样本第j个属性的值。

写成矩阵的形式:
   W ← W − α X T ( Y ^ − Y ) W \leftarrow W - \alpha X^T(\hat{Y} - Y) WWαXT(Y^Y)

用梯度下降估计出似然函数的ω,就可以代入预测函数使用了,
Tips: 似然最大就是损失最小。




参考:
逻辑回归的本质–极大似然估计
逻辑回归
公式推导

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
逻辑回归是一种二分类模型,它的目的是预测一个样本属于某一类的概率。逻辑回归模型的原理公式推导如下: 假设我们有一个训练集$D=\{(x_1,y_1),(x_2,y_2),...,(x_n,y_n)\}$,其中$x_i=(x_{i1},x_{i2},...,x_{id})^T$是第$i$个样本的$d$维特征向量,$y_i\in\{0,1\}$是第$i$个样本的标记。我们的目标是学习一个分类器$f(x)$,使其能够将任意一个样本$x$正确地分类为0或1。 假设我们使用sigmoid函数$g(z)=\frac{1}{1+e^{-z}}$作为分类器的激活函数,其中$z=w^Tx$,$w=(w_1,w_2,...,w_d)^T$是模型的参数向量。我们可以将$g(z)$理解为样本$x$属于类1的概率。为了训练模型,我们需要定义一个损失函数$L(w)$,它能够反映模型预测结果与实际标记之间的差距。 一种常见的损失函数是交叉熵损失函数,它的定义如下: $$L(w)=-\sum_{i=1}^n[y_ilog(g(z_i))+(1-y_i)log(1-g(z_i))]$$ 其中$z_i=w^Tx_i$,$g(z_i)$表示样本$x_i$属于类1的概率,$y_i$是样本$x_i$的实际标记。交叉熵损失函数的含义是模型预测结果与实际标记之间的距离,距离越小,损失函数的值越小,模型的性能越好。 为了最小化损失函数,我们需要使用梯度下降算法求解模型参数$w$。具体来说,我们需要不断地对损失函数求导,并更新参数$w$,使得损失函数不断减小,最终收敛到最优解。 损失函数对参数$w$的导数为: $$\frac{\partial L(w)}{\partial w_j}=\sum_{i=1}^n(g(z_i)-y_i)x_{ij}$$ 根据梯度下降算法的更新公式,我们可以得到: $$w_j=w_j-\alpha\frac{\partial L(w)}{\partial w_j}$$ 其中$\alpha$是学习率,控制着参数更新的步长。 利用这个公式,我们可以不断地迭代更新参数$w$,直到损失函数收敛到最小值。最终得到的模型就可以用来预测新样本的分类结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值