逻辑回归 Logistic Regression


逻辑回归是机器学习中广泛应用的一种分类算法,在介绍逻辑回归之前,我们先从线性回归说起。

线性回归(Linear Regression)

给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , x i ∈ R n , y i ∈ R D=\{(x^1,y^1),(x^2,y^2),...,(x^m,y^m)\}, x^i \in R^n,y^i \in R D={(x1,y1),(x2,y2),...,(xm,ym)},xiRn,yiR,线性回归的目的是学习一个线性模型,通过输入 x x x尽可能精确的预测真实值 y y y, 线性回归模型表达式为:
h ( x ; θ ) = θ 0 + θ 1 x 1 + θ 2 x 2 + . . . + θ n x n h({\bf x;\theta})=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n h(x;θ)=θ0+θ1x1+θ2x2+...+θnxn
其中 h ( x ; θ ) h({\bf x;\theta}) h(x;θ)为预测值,如果令 x 0 = 1 x_0=1 x0=1,我们可以写为向量形式: h ( x , θ ) = θ T x h(x,\theta)=\bf \theta^Tx h(x,θ)=θTx
线性回归的目标是构造最优的参数 θ \theta θ, 使得预测值 h ( x ; θ ) h({\bf x;\theta}) h(x;θ)与真实值 y y y之间的差距尽可能小,通过最小二乘法,我们构造损失函数:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 J(\theta)=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2 J(θ)=2m1i=1m(h(xi;θ)yi)2
要求得 θ = a r g   min ⁡ J ( θ ) \theta = arg\,\min J(\theta) θ=argminJ(θ), 可以通过梯度下降法:
θ j : = θ j − λ ∂ J ( θ ) ∂ θ j = θ j − λ m ∑ i = 1 m ( h ( x i ; θ ) − y i ) x j i \theta_{j}:=\theta_j-\lambda \frac{\partial J(\theta)}{\partial \theta_j}=\theta_j-\frac{\lambda}{m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)x_j^i θj:=θjλθjJ(θ)=θjmλi=1m(h(xi;θ)yi)xji

逻辑回归(Logistic Regression)

线性回归的的值域是 ( − ∞ , + ∞ ) (-\infty,+\infty) (,+), 而逻辑回归是在线性回归的基础上加上一个非线性映射,映射到值域 ( 0 , 1 ) (0,1) (0,1):
h ( x ; θ ) = g ( θ T x ) = 1 1 + e − θ T x h(x;\theta)=g({\bf \theta^Tx})=\frac{1}{1+e^{-{\bf \theta^Tx}}} h(x;θ)=g(θTx)=1+eθTx1
因此逻辑回归是广义的线性回归模型,其中, g ( z ) = 1 1 + e − z g(z)=\frac{1}{1+e^{-z}} g(z)=1+ez1被称为sigmoid函数, 该函数有一个特性是 g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) g^{\prime}(z)=g(z)(1-g(z)) g(z)=g(z)(1g(z))

逻辑回归的函数值还可以表示 y = 1 y=1 y=1的概率,即: P ( y = 1 ) = h ( x ; θ ) P(y=1)=h(x;\theta) P(y=1)=h(x;θ),同样 y = 0 y=0 y=0的概率表示为: P ( y = 0 ) = 1 − h ( x ; θ ) P(y=0)=1-h(x;\theta) P(y=0)=1h(x;θ), 因此逻辑回归常用于解决分类问题,当概率 P > 0.5 P>0.5 P>0.5时, 即 θ T x > 0 {\bf \theta^Tx}>0 θTx>0 时,分为正类,否则分为负类。

下面我们来构造逻辑回归的损失函数,因为逻辑回归是广义的线性回归模型,那么可否与线性回归一样用最小二乘法?我们知道sigmoid函数是非线性的,如果用最小二乘法,那么得到的损失函数 J ( θ ) J(\theta) J(θ)是非凸函数,那么用梯度下降法求解极值时,很容易得到局部最优解,而无法得到全局最优解,因此我们应该从另一个角度构造损失函数。

前面我们讲过 h ( x ; θ ) h(x;\theta) h(x;θ) y = 1 y=1 y=1的概率, 1 − h ( x ; θ ) 1-h(x;\theta) 1h(x;θ) y = 0 y=0 y=0的概率,我们可以构造概率函数:
P ( y ∣ x ; θ ) = h ( x ; θ ) y ( 1 − h ( x ; θ ) ) 1 − y P(y|x;\theta)=h(x;\theta)^y(1-h(x;\theta))^{1-y} P(yx;θ)=h(x;θ)y(1h(x;θ))1y
我们需要最大化概率函数,若给定数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } D=\{(x^1,y^1),(x^2,y^2),...,(x^m,y^m)\} D={(x1,y1),(x2,y2),...,(xm,ym)}, 则似然函数为:
L ( θ ) = ∏ i = 1 m h ( x i ; θ ) y i ( 1 − h ( x i ; θ ) ) 1 − y i L(\theta)=\prod_{i=1}^{m}h(x^i;\theta)^{y^i}(1-h(x^i;\theta))^{1-y^i} L(θ)=i=1mh(xi;θ)yi(1h(xi;θ))1yi
取对数:
l ( θ ) = L o g L ( θ ) = ∑ i = 1 m ( y i L o g h ( x i ; θ ) + ( 1 − y i ) L o g ( 1 − h ( x i ; θ ) ) l(\theta)=LogL(\theta)=\sum_{i=1}^{m}(y^iLogh(x^i;\theta)+(1-y^i)Log(1-h(x^i;\theta)) l(θ)=LogL(θ)=i=1m(yiLogh(xi;θ)+(1yi)Log(1h(xi;θ))
需要最大化 l ( θ ) l(\theta) l(θ)来得到最优的 θ \theta θ, 但是一般的我们求极值问题需要转化为最小化问题,因此我们构造损失函数:
J ( θ ) = − 1 m l ( θ ) J(\theta)=-\frac{1}{m}l(\theta) J(θ)=m1l(θ)
因此只需要 min ⁡ J ( θ ) \min J(\theta) minJ(θ), 还是通过梯度下降法:
θ j : = θ j − λ ∂ J ( θ ) ∂ θ j \theta_j:=\theta_j-\lambda \frac{\partial J(\theta)}{\partial \theta_j} θj:=θjλθjJ(θ)
其中,
∂ J ( θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i h ( x i ; θ ) ∂ h ( x i ; θ ) ∂ θ j − 1 − y i 1 − h ( x i ; θ ) ∂ h ( x i ; θ ) ∂ θ j ) = − 1 m ∑ i = 1 m ( y i h ( x i ; θ ) − 1 − y i 1 − h ( x i ; θ ) ) ∂ h ( x i ; θ ) ∂ θ j = − 1 m ∑ i = 1 m ( y i g ( θ T x i ) − 1 − y i 1 − g ( θ T x i ) ) ∂ g ( θ T x i ) ∂ θ j = − 1 m ∑ i = 1 m ( y i g ( θ T x i ) − 1 − y i 1 − g ( θ T x i ) ) g ( θ T x i ) ( 1 − g ( θ T x i ) ) ∂ ( θ T x i ) ∂ θ j = − 1 m ∑ i = 1 m ( y i ( 1 − g ( θ T x i ) ) − ( 1 − y i ) g ( θ T x i ) ) ∂ ( θ T x i ) ∂ θ j = − 1 m ∑ i = 1 m ( y i − g ( θ T x i ) ) x j i = 1 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) x j i \begin{aligned} \frac{\partial J(\theta)}{\partial \theta_j}&=-\frac{1}{m}\sum_{i=1}^{m}(\frac{y^i}{h(x^i;\theta)}\frac{\partial h(x^i;\theta)}{\partial \theta_j}-\frac{1-y^i}{1-h(x^i;\theta)}\frac{\partial h(x^i;\theta)}{\partial \theta_j})\\ &=-\frac{1}{m}\sum_{i=1}^{m}(\frac{y^i}{h(x^i;\theta)}-\frac{1-y^i}{1-h(x^i;\theta)})\frac{\partial h(x^i;\theta)}{\partial \theta_j}\\ &=-\frac{1}{m}\sum_{i=1}^{m}(\frac{y^i}{g({\theta^Tx^i})}-\frac{1-y^i}{1-g({\theta^Tx^i})})\frac{\partial g({\theta^Tx^i})}{\partial \theta_j}\\ &=-\frac{1}{m}\sum_{i=1}^{m}(\frac{y^i}{g({\theta^Tx^i})}-\frac{1-y^i}{1-g({\theta^Tx^i})})g({\theta^Tx^i})(1-g({\theta^Tx^i}))\frac{\partial (\theta^Tx^i)}{\partial \theta_j}\\ &=-\frac{1}{m}\sum_{i=1}^{m}({y^i}(1-g({\theta^Tx^i))}-(1-y^i){g({\theta^Tx^i})})\frac{\partial (\theta^Tx^i)}{\partial \theta_j}\\ &=-\frac{1}{m}\sum_{i=1}^{m}({y^i}-g({\theta^Tx^i))}x_j^i\\ &=\frac{1}{m}\sum_{i=1}^{m}(h(x^i;\theta)-y^i)x_j^i \end {aligned} θjJ(θ)=m1i=1m(h(xi;θ)yiθjh(xi;θ)1h(xi;θ)1yiθjh(xi;θ))=m1i=1m(h(xi;θ)yi1h(xi;θ)1yi)θjh(xi;θ)=m1i=1m(g(θTxi)yi1g(θTxi)1yi)θjg(θTxi)=m1i=1m(g(θTxi)yi1g(θTxi)1yi)g(θTxi)(1g(θTxi))θj(θTxi)=m1i=1m(yi(1g(θTxi))(1yi)g(θTxi))θj(θTxi)=m1i=1m(yig(θTxi))xji=m1i=1m(h(xi;θ)yi)xji
因此 θ \theta θ的迭代更新为: θ j : = θ j − λ m ∑ i = 1 m ( h ( x i ; θ ) − y i ) x j i \theta_j:=\theta_j-\frac{\lambda}{m}\sum_{i=1}^{m}(h(x^i;\theta)-y^i)x_j^i θj:=θjmλi=1m(h(xi;θ)yi)xji
可见与线性回归的迭代更新完全一致。

正则化(regularization)

在讲正则化之前,我们先讲一下过拟合(over fitting)和欠拟合(under fitting)问题。

欠拟合:模型过于简单,不能捕捉到数据特征,无法很好的拟合数据,表现在训练误差和测试误差都很大。
过拟合:模型过于复杂,不仅捕捉到数据的特征,而且还拟合了数据噪音,表现在模型在训练数据上表现的非常好,但是在测试数据表现很糟糕,泛化能力差。

解决欠拟合问题我们需要增加特征维度,将模型做的更加复杂。相反,对于过拟合问题我们需要减少特征,将模型简单化,增强泛化能力。除此之外,我们也可以通过正则化的方法,在不减少特征的情况下,达到抑制过拟合的目的。

因为我们训练模型的结果是得到参数 θ \theta θ, 我们不希望 θ \theta θ的某些分量过大导致对某些特征过于敏感,因此我们在损失函数上加上一个惩罚因子,不同的惩罚因子构成不同的正则化方法。

L2正则

以线性回归为例,加了L2正则项的损失函数变为:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 + λ ∣ ∣ θ ∣ ∣ 2 2 = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 + λ ∑ j = 1 n θ j 2 \begin{aligned} J(\theta)&=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2+\lambda||\theta||_2^2\\ &=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2+\lambda\sum_{j=1}^n\theta_j^2 \end{aligned} J(θ)=2m1i=1m(h(xi;θ)yi)2+λθ22=2m1i=1m(h(xi;θ)yi)2+λj=1nθj2
加了L2正则项的线性回归又叫岭回归(ridge regression).

L1正则

加了L1正则项的损失函数变为:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 + λ ∣ ∣ θ ∣ ∣ 1 = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 + λ ∑ j = 1 n ∣ θ j ∣ \begin{aligned} J(\theta)&=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2+\lambda||\theta||_1\\ &=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2+\lambda\sum_{j=1}^n|\theta_j| \end{aligned} J(θ)=2m1i=1m(h(xi;θ)yi)2+λθ1=2m1i=1m(h(xi;θ)yi)2+λj=1nθj
加了L1正则项的线性回归又叫 Lasso regression. L1正则希望 θ \theta θ的分量尽可能多的为0,因此学出的参数是稀疏的,可以用于特征选择和降维。

Elastic Net

结合了L1和L2正则,损失函数为:
J ( θ ) = 1 2 m ∑ i = 1 m ( h ( x i ; θ ) − y i ) 2 + λ ( ρ ∑ j = 1 n ∣ θ j ∣ + ( 1 − ρ ) ∑ j = 1 n θ j 2 ) \begin{aligned} J(\theta)&=\frac{1}{2m}\sum_{i=1}^m(h({\bf x}^i;\theta)-y^i)^2+\lambda(\rho\sum_{j=1}^n|\theta_j|+(1-\rho)\sum_{j=1}^n\theta_j^2) \end{aligned} J(θ)=2m1i=1m(h(xi;θ)yi)2+λ(ρj=1nθj+(1ρ)j=1nθj2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值