本文将记录《统计学习方法》中有关逻辑回归的内容
线性回归
对于给定的数据集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 Rxi=(xi1,xi2,...,xid);y∈R,线性回归的目的是找到一个线性函数可以根据输入值预测输出值。即通过对属性的线性组合得到线性函数得到其对应的输出值,计算公式为:
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+bf(x)=w1x2+x2x2+...+wdxd+b
用向量表示为:f ( x ) = w x + b f(x)=wx+bf(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)^2E(w∗,b∗)=min21i=1∑N(f(xi)−yi)2E(w∗,b∗)=min21i=1∑N(yi−wxi−b)2
- 可以使用使用梯度下降的方法计算该参数:
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=1∑N(f(xi)−yi)xi)b=b−α∗i=1∑N(f(xi)−yi)xi) - 可以使用求极值的方法计算参数:
∂ 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))∂w∂E(w,b)=2(wi∑Nxi2−i∑N(yi−b)xi)∂b∂E(w,b)=2(Nb−i∑N(yi−wxi)) - 更一般的采用矩阵计算的方式,将截距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*wy=x∗w(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(y−xw)T(y−xw)
对w求导可得:∂ E ( w ) ∂ w = 2 x T ( x w − y ) {\partial E(w)\over \partial w}=2x^T(xw-y)∂w∂E(w)=2xT(xw−y)
令上式等于0,可得
w ∗ = ( x T x ) − 1 x T y w^* = (x^Tx)^{-1}x^Tyw∗=(xTx)−1xTy
推导如下:
求得w,带入线性回归模型中可得
f ( x i ) = x i ( x T x ) − 1 x T y f(x_i) = x_i (x^Tx)^{-1}x^Tyf(xi)=xi(xTx)−1xTy
如果x T x x^TxxTx不是满秩矩阵,则会求出多个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|\|L2l(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=1∑N(f(xi)−yi)xi+λw)b=b−α∗i=1∑N(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^TYE(w)=min(y−xw)T(y−xw)+λwTw∂w∂E(w)=xT(xw−y)+λw=0XT(XW−Y)+λW=0XTXW−XTY+λW=0(XTX+λI)W=XTYW=(XTX+λI)−1XTY
因为( X T X + λ I ) (X^TX+\lambda I)(XTX+λI)肯定是可逆的,这样还顺便解决了X T X X^TXXTX不可逆的问题
对数线性回归
当预测值和线性函数呈指数关系时,即l n ( y ) = w x + b ln(y) = wx+bln(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=g−1(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+bln1−yy=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+bln(p(y=0∣x)p(y=1∣x))=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=1∣x)=1+ewx+bewx+bp(y=0∣x)=1+ewx+b1
和以上一样,令w = ( w , b ) ; x = ( x , 1 ) , 则 w x + b → w x w=(w,b);x=(x,1),则wx+b \to wxw=(w,b);x=(x,1),则wx+b→wx,令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=1∣x,w)p0(x,w)=p(y=0∣x,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(yi∣xi,w)=p1yip0(1−yi)
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_1yi=0时p(0∣xi,w)=p10p01=p0yi=1时p(1∣xi,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(1−p(xi))1−yi)
将其对数化
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=1∑Nlnp(yi∣xi;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=1∑N{yiln(p1)+(1−yi)ln(p0)}l(w)=i=1∑N{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)=i∑N(yiwx−ln(1+iewx))
利用如梯度下降和牛顿法等求得最佳解,得到最优的w:
w ^ = a r g    m i n    l ( w ) \hat{w} =arg\;min\;l(w)w^=argminl(w)
逻辑回归算法总结
- 有关sklearn的内容已经有大佬整理好了,这里搬运一下sklearn调参1 sklearn调参2
- 在处理数据不平衡时,可以采用的方法有过采样、欠采样和再放缩
因为逻辑回归中正例与负例的比例是y / 1 − y y/1-yy/1−y,只需令:
y ′ 1 − y ′ = y 1 − y ∗ m + m − {y'\over 1-y'}={y\over1-y}*{m^+\over m^-}1−y′y′=1−yy∗m−m+
即实现了阈值移动,即再放缩 - 逻辑回归中的多分类问题,不失一般的,考虑共有N个类别,拆分为两两二分类问题,拆分策略有:OVO(即一对一,两两类别之间均建立一个分类器,共有N(N-1)/2个);OvR(即一与其他,对每一个类别与其余所有类别建立分类器,共有N个);MvM(将样本集做M次划分,将其中一个作为正例,另一个作为负例,这样可以构建M个分类器实现编码,解码时对M个分类器构建一个编码,与每个分类器的编码进行比较,找出距离最近的一个分类器作为输出类别)