本文将记录《统计学习方法》中有关逻辑回归的内容
线性回归
对于给定的数据集
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);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+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=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*w
y=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^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=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^TY E(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^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=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+b
ln1−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+b
ln(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 wx
w=(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_1 yi=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-y y/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个分类器构建一个编码,与每个分类器的编码进行比较,找出距离最近的一个分类器作为输出类别)