线性模型
首先,我们回顾一下线性模型的概念,周志华《机器学习》中是这样定义线性模型的:
给定由d个属性描述的示例 x = ( x 1 ; x 2 ; . . . ; x d ) \bm{x}=(x_1;x_2;...;x_d) x=(x1;x2;...;xd),其中 x i x_i xi是 x \bm{x} x在第i个属性上的取值,线性模型(linear model)试图学得一个通过属性的线性组合来进行预测的函数,即:
f ( x ) = w 1 x 1 + w 2 x 2 + . . . + w d x d + b (1) f(x)=w_1x_1+w_2x_2+...+w_dx_d+b \tag{1} f(x)=w1x1+w2x2+...+wdxd+b(1)
一般可以写作向量形式:
f ( x ) = w T x + b (2) f(\bm{x}) = \bm{w}^T \bm{x} + b \tag{2} f(x)=wTx+b(2)
因此我们只需要学习得到 w \bm{w} w和 b b b就能确定模型。
Logistics函数是怎么来的?
首先需要确立关于广义线性模型的几个概念:
- 给定特征属性x和参数
θ
\theta
θ,y的条件概率
P
(
y
∣
x
;
θ
)
P(y|x;\theta)
P(y∣x;θ)服从指数分布族
P ( y ; η ) = b ( y ) exp ( η T T ( y ) − a ( η ) ) (3) P(y;\eta) = b(y)\exp(\eta^TT(y)-a(\eta)) \tag{3} P(y;η)=b(y)exp(ηTT(y)−a(η))(3) - 预测T(y)的期望,即计算 E [ T ( y ) ∣ x ] E[T(y)|x] E[T(y)∣x]
- η \eta η与 x x x之间是线性的,即 η = θ T x \eta=\theta^Tx η=θTx
一般来说,逻辑回归二分类问题遵循伯努利分布,因此预测概率可以写成:
P ( y ; ϕ ) = ϕ y ( 1 − ϕ ) 1 − y = exp ( ln ( ϕ y ( 1 − ϕ ) 1 − y ) ) = exp ( y ln ϕ + ( 1 − y ) ln ( 1 − ϕ ) ) = exp ( y ln ϕ 1 − ϕ + ln ( 1 − ϕ ) ) (4) \begin{aligned} P(y;\phi) & = \phi^y(1-\phi)^{1-y} \\ & =\exp(\ln(\phi^y(1-\phi)^{1-y})) \\ & =\exp(y\ln\phi+(1-y)\ln(1-\phi)) \\ &= \exp(y\ln\frac{\phi}{1-\phi}+\ln(1-\phi)) \end{aligned} \tag{4} P(y;ϕ)=ϕy(1−ϕ)1−y=exp(ln(ϕy(1−ϕ)1−y))=exp(ylnϕ+(1−y)ln(1−ϕ))=exp(yln1−ϕϕ+ln(1−ϕ))(4)
对照指数分布族的式子,我们可以得到对应关系:
{ b ( y ) = 1 η = ln ( ϕ 1 − ϕ ) T ( y ) = y a ( η ) = − ln ( 1 − ϕ ) (5) \begin{cases} b(y)=1 \\ \eta=\ln(\frac{\phi}{1-\phi}) \\ T(y) = y \\ a(\eta) = -\ln(1-\phi) \end{cases} \tag{5} ⎩⎪⎪⎪⎨⎪⎪⎪⎧b(y)=1η=ln(1−ϕϕ)T(y)=ya(η)=−ln(1−ϕ)(5)
因此,我们可以得到
η
\eta
η和
ϕ
\phi
ϕ之间的关系式:
ϕ
=
1
1
+
e
−
η
=
1
1
+
e
−
θ
T
x
(6)
\phi = \frac{1}{1+e^{-\eta}}=\frac{1}{1+e^{-\theta^Tx}} \tag{6}
ϕ=1+e−η1=1+e−θTx1(6)
到这里,是否对这条式子有一些熟悉了,如果对逻辑回归熟悉的同学,可能已经发现,以上这个式子,就是逻辑回归中所使用的Sigmoid函数。因此,逻辑回归中使用Sigmoid函数是具有理论依据的。
逻辑回归的理论推导
首先,我们知道线性回归可以写成公式(2)中
f
(
x
)
=
w
T
x
+
b
f(\bm{x}) = \bm{w}^T \bm{x} + b
f(x)=wTx+b的形式,并且使用Sigmoid函数将线性回归的预测值压缩到
(
0
,
1
)
(0,1)
(0,1)的区间中,Sigmoid函数可以写成:
y
=
1
1
+
e
−
z
=
1
1
+
e
−
(
w
T
x
+
b
)
(7)
y=\frac{1}{1+e^{-z}} = \frac{1}{1+e^{-(\bm{w}^T\bm{x}+b)}} \tag{7}
y=1+e−z1=1+e−(wTx+b)1(7)
Sigmoid函数及其导数的图像,如图1图2所示。根据图像我们可以发现,当 z > 0 z>0 z>0时, y > 0.5 y>0.5 y>0.5,当 z ≤ 0 z\le0 z≤0时, y ≤ 0.5 y\le0.5 y≤0.5,由此我们可以通过计算y的值从而判断是哪一类。
接下来我们正式开始数学推导过程,大家拿好纸笔跟着一起来推 😃
这里引入正反例的概念,由于逻辑回归中遵循伯努利分布,因此
y
∈
{
0
,
1
}
y\in\{0, 1\}
y∈{0,1},我们可以假设1代表正例,0代表反例,那么我们可以写出y分别为正例和反例的概率:
f
w
,
b
(
x
)
=
p
(
y
=
1
∣
x
)
=
e
−
(
w
T
x
+
b
)
1
+
e
−
(
w
T
x
+
b
)
(8)
f_{w,b}(x)=p(y=1|x)=\frac{e^{-(\bm{w}^T\bm{x}+b)}}{1+e^{-(\bm{w}^T\bm{x}+b)}} \tag{8}
fw,b(x)=p(y=1∣x)=1+e−(wTx+b)e−(wTx+b)(8)
1 − f w , b ( x ) = p ( y = 0 ∣ x ) = 1 1 + e − ( w T x + b ) (9) 1-f_{w,b}(x)=p(y=0|x)=\frac{1}{1+e^{-(\bm{w}^T\bm{x}+b)}} \tag{9} 1−fw,b(x)=p(y=0∣x)=1+e−(wTx+b)1(9)
其中 f w , b ( x ) f_{w,b}(x) fw,b(x)为当给定一组 ( w , b ) (w,b) (w,b)时,对特征向量x预测出为正例的概率。
因此,我们可以通过极大似然估计去估计 ( w , b ) (w,b) (w,b),我们可以写出下面一条式子:
L ( w , b ) = ∏ i = 1 m p ( y i ∣ x i ; w , b ) (10) L(w,b) = \prod_{i=1}^m p(y_i|x_i;w,b) \tag{10} L(w,b)=i=1∏mp(yi∣xi;w,b)(10)
即令每个样本属于其真实标记的概率越大越好,为了方便计算,我们可以将上述式子改写成对数形式:
L ( w , b ) = ∑ i = 1 m ln p ( y i ∣ x i ; w , b ) = ∑ i = 1 m [ y i ln f w , b ( x i ) + ( 1 − y i ) ln ( 1 − f w , b ( x i ) ) ] (11) \begin{aligned} L(w,b) & = \sum_{i=1}^m \ln p(y_i|x_i;w,b) \\ & = \sum_{i=1}^m [y_i\ln f_{w,b}(x_i) + (1-y_i)\ln (1-f_{w,b}(x_i))] \end{aligned} \tag{11} L(w,b)=i=1∑mlnp(yi∣xi;w,b)=i=1∑m[yilnfw,b(xi)+(1−yi)ln(1−fw,b(xi))](11)
我们的目标函数是使得 L ( w , b ) L(w,b) L(w,b)最大化,那么也可以改写为令 − L ( w , b ) -L(w,b) −L(w,b)最小化,因此有:
O b j = − L ( w , b ) = − ∑ i = 1 m [ y i ln f w , b ( x i ) + ( 1 − y i ) ln ( 1 − f w , b ( x i ) ) ] (12) Obj=-L(w,b) = -\sum_{i=1}^m [y_i\ln f_{w,b}(x_i) + (1-y_i)\ln (1-f_{w,b}(x_i))] \tag{12} Obj=−L(w,b)=−i=1∑m[yilnfw,b(xi)+(1−yi)ln(1−fw,b(xi))](12)
推到这里,我们可以发现,上式实际上是 y y y与 f w , b ( x ) f_{w,b}(x) fw,b(x)两个伯努利分布的交叉熵。
那么,接下来我们可以用梯度下降法来求得最优解。
对
w
w
w求导有:
∂
(
−
L
(
w
,
b
)
)
∂
w
=
−
∑
i
=
1
m
y
i
(
1
−
f
(
x
i
)
)
x
−
(
1
−
y
i
)
f
(
x
i
)
x
=
−
∑
i
=
1
m
(
y
i
−
f
(
x
i
)
)
x
(13)
\begin{aligned} \frac{\partial (-L(w,b))}{\partial w} & =-\sum_{i=1}^m y_i(1-f(x_i))x-(1-y_i)f(x_i)x \\ & =-\sum_{i=1}^m (y_i-f(x_i))x \end{aligned} \tag{13}
∂w∂(−L(w,b))=−i=1∑myi(1−f(xi))x−(1−yi)f(xi)x=−i=1∑m(yi−f(xi))x(13)
因此梯度下降法的迭代过程为: w ← w − η ∑ i = 1 m − ( y i − f ( x i ) ) x i w \leftarrow w - \eta \sum_{i=1}^m-(y_i-f(x_i))x_i w←w−η∑i=1m−(yi−f(xi))xi
|
|
逻辑回归的优缺点
优点:
- 使用的是频率学派的思想,使用极大似然估计方法建模,因此无需事先假设数据的分布,能避免假设分布不准确带来的问题
- 能预测概率而不只是类别
- 目标函数是凸函数
缺点:
- 本质上是线性分类器,处理不好特征之间相关的情况,对多重共线性数据比较敏感
- 很难处理数据不平衡的问题
- 特征空间很大时性能欠佳
- 容易欠拟合
关于逻辑回归的一些值得注意的点
为什么用交叉熵而不用均方误差作为损失函数?
- 面对分类问题的场景,如果使用均方误差作为损失函数,那么在用梯度下降法对w求微分时,当目标很远或很近时,计算出的偏微分均为0,也就是说不管目前离目标远还是近,下降速度都会非常缓慢。
- 使用均方误差时,MSE的导数中包含了Sigmoid函数的导数形式,Sigmoid导数最大为0.25,因此更新非常缓慢。
Bias的意义是什么?
偏差Bias的意义是一定程度上反映正反例判定的偏好性,当Bias为0,则两个类别是均匀分布的,不存在任何的偏差,当Bia大于0时,那么模型更容易判定为正例,反之亦然。
LR与其他常用模型的对比
1、LR vs 线性回归
- LR使用的是极大似然估计法,线性回归使用的是最小二乘法
- LR用于分类,线性回归用于回归
- 两者对于非线性问题的处理效果都欠佳
2、LR vs 最大熵模型
- 本质没有区别
- 后者在解决二分类问题时就是逻辑回归
- 后者在解决多分类问题时就是多项逻辑回归
3、LR vs SVM
- LR使用交叉熵作为损失函数,SVM使用Hinge Loss作为损失函数
- LR使用全量数据进行训练,SVM使用支持向量进行训练
- LR的参数有前提假设(高斯分布),SVM不需要
- LR使用极大似然估计法,SVM则是使用距离最大的思想
4、LR vs NB
- LR是判别模型,NB是生成模型
- NB需要有属性条件独立假设,LR则不需要。
LR为什么需要对数据进行归一化或取对数?
- 工程角度:加速收敛,提高计算效率
- 理论角度:使梯度下降过程更加稳定,使数据更加服从高斯分布以满足假设前提
参考资料
本文的撰写参考自以下文章、视频、网页及书籍,非常感谢这些文章给予我的启发,本人也强烈推荐读者能移步至如下链接以进一步的了解。
[1] 李宏毅《机器学习》笔记
[2] 李宏毅《机器学习》
[3] 广义线性模型
[4] 周志华《机器学习》