- 更新时间:2019-05-21
概述
逻辑回归(Logistic Regression,LR),西瓜书中叫做对数几率回归,虽然叫回归,但实际上是一种分类算法,主要处理二分类问题,LR模型简单,但应用非常广,很多公司都是应用LR解决工业界问题,因为简单,模型生成后,处理速度快,可以满足工业需求。
逻辑回归的主要用途:
(1)解决二分类以及多分类问题
二分类问题比较好理解,例如电信运营商客户是否流失、是否采取某项决策等,LR通过训练数据给定的label值,反复迭代,最终生成样本的分布函数,将位置样本进行分类,如果样本类别多,可以通过多个LR组合解决。
(2)判别预测
LR不仅可以输出类别,还可以输出类别所占概率,在进行预测时更具解释性,并且在模型融合时很有优势。
算法介绍
引用Andrew Ng机器学习课程中的例子来说明:
下图所示,一个二分类问题,label为1或0,红色的叉叉为样本点,在图中样本点分布均匀的情况下,使用线性回归也可以解决这个问题,当 $ x>0.5$ 时,输出为1,反之为0,当样本点为多维向量时,这个一元线性回归函数就可以写成:
h
θ
(
x
)
=
θ
T
x
+
b
(1)
h_\theta(x) = \theta^Tx+b \tag{1}
hθ(x)=θTx+b(1)
当样本点分布为下图所示情况时,使用一元线性回归就不是很合适了,因为没办法确定样本点的分界阈值,整个线性回归模型会因为这一个样本点作出很大的改变,导致模型的输出值超出了[0, 1]这个区间。
最理想的判断输出预测值的是“单位阶跃函数“(unit-step function),即若预测值大于零就判为正例,小于零就判为反例,等于零则可以任意判别,如下图所示,但这个单位阶跃函数不连续,因此使用sigmoid函数做替代。
于是,引入了逻辑函数来优化回归模型,我们的目标是:
0
≤
h
θ
(
x
)
≤
1
(2)
0 \leq {h_\theta(x)} \leq{1} \tag{2}
0≤hθ(x)≤1(2) , 给出如下公式:
h
θ
(
x
)
=
g
(
θ
T
x
)
(3)
h_\theta(x) = g(\theta^Tx) \tag{3}
hθ(x)=g(θTx)(3) 其中,
g
(
z
)
=
1
1
+
e
−
z
g(z) = \frac{1}{1+e^{-z}}
g(z)=1+e−z1 称为逻辑函数,于是逻辑回归的公式为:
h
θ
(
x
)
=
1
1
+
e
−
(
θ
T
x
+
b
)
(4)
h_\theta(x) = \frac{1}{1+e^{-(\theta^Tx+b)}} \tag{4}
hθ(x)=1+e−(θTx+b)1(4)
对公式(4)取“对数几率"可得:
ln
y
1
−
y
=
θ
T
x
+
b
(5)
\ln \frac{y}{1-y}=\theta ^Tx+b \tag{5}
ln1−yy=θTx+b(5)
参数的求解
设y为后验概率估计
p
(
y
=
1
∣
x
)
p(y=1|x)
p(y=1∣x),则式(4)变为:
ln
P
(
y
=
1
∣
x
)
P
(
y
=
0
∣
x
)
=
θ
T
x
+
b
(6)
\ln \frac{P(y=1|x)}{P(y=0|x)}=\theta ^Tx+b \tag{6}
lnP(y=0∣x)P(y=1∣x)=θTx+b(6)
于是,样本为正例:
P
(
y
=
1
∣
x
)
=
e
θ
T
x
+
b
1
+
e
θ
T
x
+
b
(7)
P(y=1|x)=\frac{e^{\theta ^Tx+b}}{1+e^{\theta ^Tx+b}} \tag{7}
P(y=1∣x)=1+eθTx+beθTx+b(7) 样本为反例:
P
(
y
=
0
∣
x
)
=
1
1
+
e
θ
T
x
+
b
(8)
P(y=0|x)=\frac{1}{1+e^{\theta ^Tx+b}} \tag{8}
P(y=0∣x)=1+eθTx+b1(8) 通过“极大似然法"对
θ
\theta
θ 和
b
b
b 进行估计,给定一个样本,估计对的概率为:
P
(
y
i
∣
x
i
;
θ
,
b
)
=
y
i
P
(
y
=
1
∣
x
i
;
θ
,
b
)
+
(
1
−
y
i
)
P
(
y
=
0
∣
x
i
;
θ
,
b
)
(9)
P(y_i|x_i;\theta,b) = y_iP(y=1|x_i;\theta,b)+(1-y_i)P(y=0|x_i;\theta,b) \tag{9}
P(yi∣xi;θ,b)=yiP(y=1∣xi;θ,b)+(1−yi)P(y=0∣xi;θ,b)(9)
最大化似然函数:
l
(
θ
,
b
)
=
∑
i
=
1
m
ln
P
(
y
i
∣
x
i
;
θ
,
b
)
(10)
l(\theta,b) = \sum^m_{i=1}\ln P(y_i|x_i;\theta,b) \tag{10}
l(θ,b)=i=1∑mlnP(yi∣xi;θ,b)(10)
由式(7)(8)(9)可知,最大化式(10)相当于最小化:
l
(
θ
,
b
)
=
∑
i
=
1
m
−
y
i
(
θ
T
x
+
b
)
+
ln
(
1
+
e
θ
T
x
+
b
)
(11)
l(\theta,b)=\sum^m_{i=1}{-y_i(\theta ^Tx+b)+\ln(1+e^{\theta ^Tx+b})} \tag{11}
l(θ,b)=i=1∑m−yi(θTx+b)+ln(1+eθTx+b)(11) 可根据牛顿法、梯度下降法等求解参数最优解。
参考资源:
吴恩达《machine learning》公开课
周志华《机器学习》
李航《统计学习方法》