逻辑回归笔记

Logistic Regression

1 前言

怎么将n维向量 x = [ x 1 , x 2 , . . . , x n ] x=[x_1,x_2,...,x_n] x=[x1,x2,...,xn]映射成一个点y呢?很容易想到就是将向量 x x x与另一个向量做内积。这个向量我们称为参数 θ \theta θ,即 θ = [ θ 0 , θ 1 , . . . , θ n ] \theta=[\theta_0, \theta_1, ...,\theta_n] θ=[θ0,θ1,...,θn]。所以做内积就是 x ⋅ θ x\cdot\theta xθ【即行向量X乘以(行向量 θ \theta θ的转置)】得到一个数。

上面就是我们熟知的线性回归,这时的值域是 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+),但是我们要得到的是0或者1,所以要把值域限制一下,将值域正负无穷改为(0, 1),于是用到了sigmoid函数

2 二元逻辑回归模型

对线性回归的结果做一个在函数g上的转换,可以变化为逻辑回归。这个函数g在逻辑回归中我们一般取为sigmoid函数,形式如下:

g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1

函数图像如下:

sigmoid函数图像

它有一个非常好的性质,即当z趋于正无穷时, g ( z ) g(z) g(z)趋向于1,当z趋于负无穷时, g ( z ) g(z) g(z)趋向于0,这非常适合于我们的分类概率模型。另外,它还有一个很好的导数性质:

g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) g^{'}(z)=g(z)(1-g(z)) g(z)=g(z)(1g(z))

如果我们另 g ( z ) g(z) g(z)函数中的z为: x θ x \theta xθ,这样就得到了二元逻辑回归模型的一般形式:

h θ ( x ) = 1 1 + e − x θ h_{\theta}(x) = \frac{1}{1+e^{-x\theta}} hθ(x)=1+exθ1

其中,x是样本数据输入, h θ ( x ) h_\theta(x) hθ(x)是模型输出,可以理解为某一分类的概率大小, θ \theta θ为模型参数,需要样本数据训练更新得最优。对于模型输出 h θ ( x ) h_\theta(x) hθ(x),我们将它与y联系起来为,当 x θ > 0 x\theta>0 xθ>0时, h θ ( x ) > 0.5 h_\theta(x)>0.5 hθ(x)>0.5,则y为1;当 x θ < 0 x\theta<0 xθ<0时, h θ ( x ) < 0.5 h_\theta(x)<0.5 hθ(x)<0.5,则y为0;当 x θ = 0 x\theta=0 xθ=0时, h θ ( x ) = 0.5 h_\theta(x)=0.5 hθ(x)=0.5,逻辑回归模型本身无法确定分类。

h θ ( x ) h_\theta(x) hθ(x)的值越小,而分类为0的的概率越高,反之,值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。

将模型写成矩阵模式如下:

h θ ( X ) = 1 1 + e − X θ h_\theta(X) = \frac{1}{1+e^{-X\theta}} hθ(X)=1+eXθ1

其中X为样本特征矩阵,维度为m*n, θ \theta θ为模型参数矩阵,维度为n*1, h θ ( X ) h_\theta(X) hθ(X)为模型输出,维度为m*1。

理解了二元分类回归的模型,接着我们就要看模型的损失函数了,我们的目标是极小化损失函数来得到对应的模型系数 θ \theta θ

3 损失函数

对于解决分类问题的逻辑回归,如果使用均方误差,当函数输出值远离目标值和靠近目标值时,其偏导值都接近于0,导致距离目标值很远时,loss也很小,更新的速度慢,如果增大学习率的话,也无法确定输出值到底是远离目标值还是接近目标值。

不过我们可以用最大似然法来推导出我们的损失函数。

假设我们的样本输出是0或者1两类。那么我们有:

P ( y = 1 ∣ x , θ ) = h θ ( x ) P(y=1|x,\theta) = h_{\theta}(x) P(y=1x,θ)=hθ(x)

P ( y = 0 ∣ x , θ ) = 1 − h θ ( x ) P(y=0|x,\theta) = 1 - h_{\theta}(x) P(y=0x,θ)=1hθ(x)

把这两个式子写成一个式子,就是:

P ( y ∣ x , θ ) = ( h θ ( x ) ) y ( 1 − h θ ( x ) ) ( 1 − y ) P(y|x,\theta) = (h_{\theta}(x))^y(1 - h_{\theta}(x))^{(1-y)} P(yx,θ)=(hθ(x))y(1hθ(x))(1y)

其中y的取值只能是0或者1。

得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数θ。

为了方便求解,这里我们用对数似然函数最大化,对数似然函数取反即为我们的损失函数J(θ)。其中:

似然函数的代数表达式为:

L ( θ ) = ∏ i = 1 m ( h θ ( x ( i ) ) ) y ( i ) ( 1 − h θ ( x ( i ) ) ) 1 − y ( i ) L(\theta)=\prod_{i=1}^{m}\left(h_{\theta}\left(x^{(i)}\right)\right)^{y^{(i)}}\left(1-h_{\theta}\left(x^{(i)}\right)\right)^{1-y^{(i)}} L(θ)=i=1m(hθ(x(i)))y(i)(1hθ(x(i)))1y(i)

其中m为样本的个数。

对似然函数对数化取反的表达式,即损失函数表达式为:

J ( θ ) = − ln ⁡ L ( θ ) = − ∑ i = 1 m ( y ( i ) log ⁡ ( h θ ( x ( i ) ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ) J(\theta)=-\ln L(\theta)=-\sum_{i=1}^{m}\left(y^{(i)} \log \left(h_{\theta}\left(x^{(i)}\right)\right)+\left(1-y^{(i)}\right) \log \left(1-h_{\theta}\left(x^{(i)}\right)\right)\right) J(θ)=lnL(θ)=i=1m(y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i))))

损失函数用矩阵法表达更加简洁:

J ( θ ) = − Y T l o g ( h θ ( X ) ) − ( E − Y ) T l o g ( E − h θ ( X ) ) J(\theta) = - Y^T log(h_{\theta}(X)) - (E-Y)^Tlog(E-h_{\theta}(X)) J(θ)=YTlog(hθ(X))(EY)Tlog(Ehθ(X))

其中E为全1向量。

4 二元逻辑回归的损失函数的优化方法

最常见的优化方法有梯度下降法,坐标轴下降法,等牛顿法等。这里推导出梯度下降法中θ每次迭代的公式。由于代数法推导比较的繁琐,这里给出矩阵法推导二元逻辑回归梯度的过程。

对于 J ( θ ) = − Y T l o g ( h θ ( X ) ) − ( E − Y ) T l o g ( E − h θ ( X ) ) J(\theta) = - Y^T log(h_{\theta}(X)) - (E-Y)^Tlog(E-h_{\theta}(X)) J(θ)=YTlog(hθ(X))(EY)Tlog(Ehθ(X)),我们用 J ( θ ) J(\theta) J(θ) θ \theta θ向量求导可得:

∂ ∂ θ J ( θ ) = X T [ 1 h θ ( X ) ⊙ h θ ( X ) ⊙ ( E − h θ ( X ) ) ⊙ ( − Y ) ] + X T [ 1 E − h θ ( X ) ⊙ h θ ( X ) ⊙ ( E − h θ ( X ) ) ⊙ ( E − Y ) ] \frac{\partial}{\partial \theta} J(\theta)=X^{T}\left[\frac{1}{h_{\theta}(X)} \odot h_{\theta}(X) \odot\left(E-h_{\theta}(X)\right) \odot(-Y)\right]+X^{T}\left[\frac{1}{E-h_{\theta}(X)} \odot h_{\theta}(X) \odot\left(E-h_{\theta}(X)\right) \odot(E-Y)\right] θJ(θ)=XT[hθ(X)1hθ(X)(Ehθ(X))(Y)]+XT[Ehθ(X)1hθ(X)(Ehθ(X))(EY)]

上式虽然很长,但只用了向量求导的链式法则,和下面三个基础求导公式的矩阵形式:

∂ ∂ x l o g x = 1 x \frac{\partial}{\partial x}logx = \frac{1}{x} xlogx=x1
∂ ∂ z g ( z ) = g ( z ) ( 1 − g ( z ) ) \frac{\partial}{\partial z}g(z) = g(z)(1-g(z)) zg(z)=g(z)(1g(z))
∂ x θ ∂ θ = x \frac{\partial x\theta}{\partial \theta} = x θxθ=x

对于刚才的求导公式我们进行消解化简可得:

∂ ∂ θ J ( θ ) = X T ( h θ ( X ) − Y ) \frac{\partial}{\partial \theta} J(\theta)=X^{T}(h_\theta(X)-Y) θJ(θ)=XT(hθ(X)Y)

从而在梯度下降法中每一步向量 θ \theta θ的迭代公式如下:

θ = θ − η X T ( h θ ( X ) − Y ) \theta = \theta - \eta X^{T}(h_\theta(X)-Y) θ=θηXT(hθ(X)Y)

其中, η \eta η为参数更新的学习率。

5 二元逻辑回归的正则化

逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。

逻辑回归的L1正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了L1的范数做作为惩罚,超参数 λ \lambda λ作为惩罚系数,调节惩罚项的大小。

二元逻辑回归的L1正则化损失函数表达式如下:

J ( θ ) = − Y T l o g ( h θ ( X ) ) − ( E − Y ) T l o g ( E − h θ ( X ) ) + λ ∣ ∣ θ ∣ ∣ 1 J(\theta) = - Y^T log(h_{\theta}(X)) - (E-Y)^Tlog(E-h_{\theta}(X)) + \lambda ||\theta||_1 J(θ)=YTlog(hθ(X))(EY)Tlog(Ehθ(X))+λθ1

∣ ∣ θ ∣ ∣ 1 ||\theta||_1 θ1 θ \theta θ的L1范数。逻辑回归的L1正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。

二元逻辑回归的L2正则化损失函数表达式如下:

J ( θ ) = − Y T l o g ( h θ ( X ) ) − ( E − Y ) T l o g ( E − h θ ( X ) ) + 1 2 λ ∣ ∣ θ ∣ ∣ 2 2 J(\theta) = - Y^T log(h_{\theta}(X)) - (E-Y)^Tlog(E-h_{\theta}(X)) + \frac{1}{2}\lambda ||\theta||^2_2 J(θ)=YTlog(hθ(X))(EY)Tlog(Ehθ(X))+21λθ22

∣ ∣ θ ∣ ∣ 2 ||\theta||_2 θ2 θ \theta θ的L2范数。逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归类似。

参考:刘建平的博客

夕小瑶的文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值