机器学习—逻辑回归

本文将记录《统计学习方法》中有关逻辑回归的内容

线性回归

对于给定的数据集 D = { x 1 , y 1 . . . x N , y N } D=\{x_1,y_1...x_N,y_N\} D={x1,y1...xN,yN},其中 x i = ( x i 1 , x i 2 , . . . , x i d )    ; y ∈ R x_i=(x_{i1},x_{i2},...,x_{id})\;;y \in R xi=(xi1,xi2,...,xid);yR,线性回归的目的是找到一个线性函数可以根据输入值预测输出值。即通过对属性的线性组合得到线性函数得到其对应的输出值,计算公式为:
f ( x ) = w 1 x 2 + x 2 x 2 + . . . + w d x d + b f(x)=w_1x_2+x_2x_2+...+w_dx_d+b f(x)=w1x2+x2x2+...+wdxd+b
用向量表示为: f ( x ) = w x + b f(x)=wx+b f(x)=wx+b
在参数计算时,误差函数采用均方差的方法,即最小二乘法,试图找到一条直线使得所有样本到直线的距离和最短。计算公式为:
E ( w ∗ , b ∗ ) = m i n    1 2 ∑ i = 1 N ( f ( x i ) − y i ) 2 E ( w ∗ , b ∗ ) = m i n    1 2 ∑ i = 1 N ( y i − w x i − b ) 2 E(w^*,b^*) = min \; {1\over2}\sum_{i=1}^N(f(x_i) - y_i)^2\\ E(w^*,b^*) = min \;{1\over2}\sum_{i=1}^N (y_i-wx_i-b)^2 E(w,b)=min21i=1N(f(xi)yi)2E(w,b)=min21i=1N(yiwxib)2

  1. 可以使用使用梯度下降的方法计算该参数:
    w = w − α ∗ ∑ i = 1 N ( f ( x i ) − y i ) x i ) b = b − α ∗ ∑ i = 1 N ( f ( x i ) − y i ) x i ) w = w-\alpha*\sum_{i=1}^N (f(x_i) - y_i)x_i)\\ b = b-\alpha*\sum_{i=1}^N (f(x_i) - y_i)x_i) w=wαi=1N(f(xi)yi)xi)b=bαi=1N(f(xi)yi)xi)
  2. 可以使用求极值的方法计算参数:
    ∂ E ( w , b ) ∂ w = 2 ( w ∑ i N x i 2 − ∑ i N ( y i − b ) x i ) ∂ E ( w , b ) ∂ b = 2 ( N b − ∑ i N ( y i − w x i ) ) {\partial E(w,b)\over \partial w}=2(w \sum_i^Nx_i^2 - \sum_i^N(y_i-b)x_i)\\ {\partial E(w,b)\over \partial b}=2(Nb-\sum_i^N(y_i-wx_i)) wE(w,b)=2(wiNxi2iN(yib)xi)bE(w,b)=2(NbiN(yiwxi))
  3. 更一般的采用矩阵计算的方式,将截距b加入参数向量中, w = ( w , b ) w =(w,b) w=(w,b),是一个N+1*1的列向量,在X中将截距对应的位置设置为1,即 w i = ( x i , 1 ) w_i=(x_i,1) wi=(xi,1)是一个N+1*1的横向量。则所对应的线性表达可以写成 y = x ∗ w y=x*w y=xw(1*N+1乘N+1*1)
    对应的损失函数就变成了 E ( w ) = m i n ( y − x w ) T ( y − x w ) E(w) = min (y-xw)^T(y-xw) E(w)=min(yxw)T(yxw)
    对w求导可得: ∂ E ( w ) ∂ w = 2 x T ( x w − y ) {\partial E(w)\over \partial w}=2x^T(xw-y) wE(w)=2xT(xwy)
    令上式等于0,可得
    w ∗ = ( x T x ) − 1 x T y w^* = (x^Tx)^{-1}x^Ty w=(xTx)1xTy

推导如下:
在这里插入图片描述

求得w,带入线性回归模型中可得
f ( x i ) = x i ( x T x ) − 1 x T y f(x_i) = x_i (x^Tx)^{-1}x^Ty f(xi)=xi(xTx)1xTy
如果 x T x x^Tx xTx不是满秩矩阵,则会求出多个W的解是最优解,常用的做法是引入正则化项,损失函数发生了变化:
l ( w ) = m i n    ∑ ( f ( x i ) − y i ) 2 + λ L 1 \ L 2 l(w) = min\; \sum(f(x_i) -y_i)^2 +\lambda L1\verb|\|L2 l(w)=min(f(xi)yi)2+λL1\L2
其中 λ \lambda λ用来平均经验损失和正则化之间的关系,正则化为L1\L2,其中L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征的权重系数都会接近于0,在图像中可以很好的看出在这里插入图片描述
由于L1的图像为正方形,很多情况都是在坐标轴上取得,则另外一个参数就是0,这样就完成了参数稀疏化实现了降维的目的;由于L2是圆形,则每个参数不会是0,但是都很小趋向于0,这样就取消了过拟合。

在添加了正则化项L2之后的参数推导:
在L2正则化时只对特征权重W进行正则化,对偏置b不进行正则化
1.采用梯度下降的做法
w = w − α ∗ ∑ i = 1 N ( f ( x i ) − y i ) x i + λ w ) b = b − α ∗ ∑ i = 1 N ( f ( x i ) − y i ) x i ) w = w-\alpha*\sum_{i=1}^N (f(x_i) - y_i)x_i+\lambda w)\\ b = b-\alpha*\sum_{i=1}^N (f(x_i) - y_i)x_i) w=wαi=1N(f(xi)yi)xi+λw)b=bαi=1N(f(xi)yi)xi)
2.采用正规矩阵的做法
E ( w ) = m i n ( y − x w ) T ( y − x w ) + λ w T w ∂ E ( w ) ∂ w = x T ( x w − y ) + λ w = 0 X T ( X W − Y ) + λ W = 0 X T X W − X T Y + λ W = 0 ( X T X + λ I ) W = X T Y W = ( X T X + λ I ) − 1 X T Y E(w) = min (y-xw)^T (y-xw) +\lambda w^Tw\\ {\partial E(w)\over \partial w}=x^T(xw-y)+\lambda w = 0\\ X^T(XW-Y)+\lambda W=0 \\ X^TXW-X^TY+\lambda W =0\\ (X^TX+\lambda I)W = X^TY\\ W=(X^TX+\lambda I)^{-1}X^TY E(w)=min(yxw)T(yxw)+λwTwwE(w)=xT(xwy)+λw=0XT(XWY)+λW=0XTXWXTY+λW=0(XTX+λI)W=XTYW=(XTX+λI)1XTY
因为 ( X T X + λ I ) (X^TX+\lambda I) (XTX+λI)肯定是可逆的,这样还顺便解决了 X T X X^TX XTX不可逆的问题

对数线性回归

当预测值和线性函数呈指数关系时,即 l n ( y ) = w x + b ln(y) = wx+b ln(y)=wx+b,实际上是将 e w x + b e^{wx+b} ewx+b逼近y,但实际上是求从输入空间到输出空间的非线性映射,更一般的,都可微函数g(x),令 y = g − 1 ( w x + b ) y = g^{-1}(wx+b) y=g1(wx+b)称为广义的线性回归。

对数几率回归

以上的线性回归模型都是回归模型,逻辑回归模型是分类模型。
当输出是二分类时,将线性回归模型产生的连续预测值转化为{0,1}类别的两值型,采用对数几率函数,将连续值转化为0到1之间的数值,得到的是具体分类的概率值,以多大的概率被分为哪个类别并且在0附近变化较陡,在其他位置变化较缓,具体公式为:
f ( x ) = 1 1 + e − ( w x + b ) f(x) = {1 \over {1+e^{-(wx+b)}}} f(x)=1+e(wx+b)1
可以将该公式转化为:
l n y 1 − y = w x + b {ln{y \over 1-y}} = wx+b ln1yy=wx+b
将y认为是正例的可能性,则1-y表示了为负例的可能性,则将其认为是后验概率的话,该公式可重写为:
l n ( p ( y = 1 ∣ x ) p ( y = 0 ∣ x ) ) = w x + b ln({p(y=1|x) \over p(y=0|x)}) = wx+b ln(p(y=0x)p(y=1x))=wx+b
则拆开之后分别有:
p ( y = 1 ∣ x ) = e w x + b 1 + e w x + b p ( y = 0 ∣ x ) = 1 1 + e w x + b p(y=1|x) ={e^{wx+b}\over{1+e^{wx+b}}} \\ p(y=0|x) ={1\over{1+e^{wx+b}}} p(y=1x)=1+ewx+bewx+bp(y=0x)=1+ewx+b1
和以上一样,令 w = ( w , b ) ; x = ( x , 1 ) , 则 w x + b → w x w=(w,b);x=(x,1),则wx+b \to wx w=(w,b);x=(x,1),wx+bwx,令 p 1 ( x , w ) = p ( y = 1 ∣ x , w ) p 0 ( x , w ) = p ( y = 0 ∣ x , w ) p_1(x,w)=p(y=1|x,w)\\p_0(x,w)=p(y=0|x,w) p1(x,w)=p(y=1x,w)p0(x,w)=p(y=0x,w)
则每个样本的后验概率就可以被重写为:
p ( y i ∣ x i , w ) = p 1 y i p 0 ( 1 − y i ) p(y_i|x_i,w)=p_1^{y_i}p_0^{(1-y_i)} p(yixi,w)=p1yip0(1yi)

y i = 0 时 p ( 0 ∣ x i , w ) = p 1 0 p 0 1 = p 0 y i = 1 时 p ( 1 ∣ x i , w ) = p 1 1 p 0 0 = p 1 y_i=0时p(0|x_i,w)=p_1^0p_0^1=p_0\\ y_i=1时p(1|x_i,w)=p_1^1p_0^0=p_1 yi=0p(0xi,w)=p10p01=p0yi=1p(1xi,w)=p11p00=p1

则通过最大似然法来估计w和b,
l ( w ) = ∏ ( p ( x i ) y i ( 1 − p ( x i ) ) 1 − y i ) l(w)=\prod(p(x_i)^{y_i}(1-p(x_i))^{1-y_i}) l(w)=(p(xi)yi(1p(xi))1yi)
将其对数化
l ( w ) = ∑ i = 1 N l n p ( y i ∣ x i ; w , b ) l(w) = \sum_{i=1}^Nln p(y_i|x_i;w,b) l(w)=i=1Nlnp(yixi;w,b)

将重写之后的后验概率带入到最大似然函数中,可得
l ( w ) = ∑ i = 1 N { y i l n ( p 1 ) + ( 1 − y i ) l n ( p 0 ) } l ( w ) = ∑ i = 1 N { y i l n ( p 1 p 0 ) + l n ( p 0 ) } l(w) =\sum_{i=1}^N\{y_iln(p_1)+(1-y_i)ln(p_0)\}\\ l(w) = \sum_{i=1}^N\{y_iln({p_1\over{p_0}})+ln(p_0)\} l(w)=i=1N{yiln(p1)+(1yi)ln(p0)}l(w)=i=1N{yiln(p0p1)+ln(p0)}
则最大似然函数等价于最大化:
l ( w ) = ∑ i N ( y i w x − l n ( 1 + i e w x ) ) l(w) = \sum_i^N(y_iwx-ln({1+ie^{wx}})) l(w)=iN(yiwxln(1+iewx))
利用如梯度下降和牛顿法等求得最佳解,得到最优的w:
w ^ = a r g    m i n    l ( w ) \hat{w} =arg\;min\;l(w) w^=argminl(w)

逻辑回归算法总结

  1. 有关sklearn的内容已经有大佬整理好了,这里搬运一下sklearn调参1 sklearn调参2
  2. 在处理数据不平衡时,可以采用的方法有过采样、欠采样和再放缩
    因为逻辑回归中正例与负例的比例是 y / 1 − y y/1-y y/1y,只需令:
    y ′ 1 − y ′ = y 1 − y ∗ m + m − {y'\over 1-y'}={y\over1-y}*{m^+\over m^-} 1yy=1yymm+
    即实现了阈值移动,即再放缩
  3. 逻辑回归中的多分类问题,不失一般的,考虑共有N个类别,拆分为两两二分类问题,拆分策略有:OVO(即一对一,两两类别之间均建立一个分类器,共有N(N-1)/2个);OvR(即一与其他,对每一个类别与其余所有类别建立分类器,共有N个);MvM(将样本集做M次划分,将其中一个作为正例,另一个作为负例,这样可以构建M个分类器实现编码,解码时对M个分类器构建一个编码,与每个分类器的编码进行比较,找出距离最近的一个分类器作为输出类别)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值