概述
Logistic regression is a method for classifying data into discrete outcomes.
逻辑回归将数据归类为离散的结果并输出。
逻辑回归虽然名为“回归”,但它解决的其实是分类问题。以二分类问题为例,习惯上把我们关注的某一现象的存在归为y=1(如垃圾邮件、恶性肿瘤细胞),反之则为y=0。
为什么不用线性回归
.利用线性回归解决分类问题通常不是好的方法,主要有两个原因:
1. 如图1所示,线性回归的参数很容易受到极端值的影响,容易得到不好的假设函数。
2. 比如进行2分类(binary classifying)问题,假设y的值ϵ{0,1},但是线性回归模型的假设函数计算出来的函数值会远大于1或远小于0。
假设函数(Hypothesis Funciton)
针对一个分类问题
想要:
0
≤
h
θ
(
x
)
≤
1
0≤h_θ (x)≤1
0≤hθ(x)≤1
对假设函数h_θ (x)输出结果的解释:y=1的概率。
若计算出
h
θ
(
x
)
h_θ (x)
hθ(x)=0.7,则表示对输入x,输出y=1的概率为0.7。
logistic函数
logistic函数可以很好避免线性回归的第2点不足。
逻辑回归(Logistic Regression)的函数值在区间[0,1]中。
Sigmoid函数和Logistic函数通常是指同一个函数:g(z)= 1/(1+
e
−
z
e^{-z}
e−z ) ,
进一步地,常用的Logistic函数的形式:
h
θ
(
x
)
{h_θ (x)}
hθ(x)=
g
(
θ
T
x
)
{g(θ^T x)}
g(θTx)= 1/(1+
e
−
θ
T
x
e ^{-θ^T x}
e−θTx)
该函数具有如下较好性质:
g
′
(
z
)
=
g
(
z
)
(
1
−
g
(
z
)
)
{g'(z) = g(z)(1-g(z)) }
g′(z)=g(z)(1−g(z))
lim
x
→
−
∞
1
1
+
e
−
z
=
0
{\lim_{x \to -\infty}} \frac{1}{1+e^{-z}}= 0
x→−∞lim1+e−z1=0
lim
x
→
+
∞
1
1
+
e
−
z
=
1
{\lim_{x\to +\infty} }\frac{1}{1+e^{-z}}= 1
x→+∞lim1+e−z1=1
g
(
0
)
=
0.5
{g(0)= 0.5}
g(0)=0.5
决策边界(Decision Boundary)
类似于高中学的线性规划或者非线性规划的边界,根据函数不等式反解出来。
h
θ
(
x
)
=
g
(
θ
T
x
)
h_θ (x)= g(θ^T x)
hθ(x)=g(θTx)(两个x是不同的),由于函数是单调递增的,
0.5
≤
h
θ
(
x
)
<
1
⇔
x
≥
0
0.5≤h_θ (x)<1⇔ x≥0
0.5≤hθ(x)<1⇔x≥0
0
<
h
θ
(
x
)
<
0.5
⇔
x
<
0
0<h_θ (x)<0.5⇔ x<0
0<hθ(x)<0.5⇔x<0
所以当进行二分类时,容易想到利用0作为阈值(threshold)。
根据假设函数(hypothesis function)的设想以及概率的意义(假设函数计算的可以不严谨地理解为概率)
当
h
θ
(
x
)
≥
0.5
⇔
x
≥
0
⇒
预
测
y
=
1
当h_θ (x)≥0.5⇔ x≥0⇒预测y=1
当hθ(x)≥0.5⇔x≥0⇒预测y=1
当
h
θ
(
x
)
<
0.5
⇔
x
<
0
⇒
预
测
y
=
0
当h_θ (x)<0.5⇔ x<0⇒预测y=0
当hθ(x)<0.5⇔x<0⇒预测y=0当要确定h_θ (x)≥0.5的范围,只要确定x≥0的范围即可。
eg1:线性决策边界
h
θ
(
x
)
=
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
h_θ (x)=g(θ_0+θ_1 x_1+θ_2 x_2)
hθ(x)=g(θ0+θ1x1+θ2x2)假设
[
θ
0
,
θ
1
,
θ
2
]
[θ_0,θ_1,θ_2]
[θ0,θ1,θ2]=[-3,1,1]。想要预测y=1
只需要
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
)
=
g
(
−
3
+
x
1
+
x
2
)
≥
0.5
g({θ_0+θ_1 x_1+θ_2 x_2} )=g(-3+x_1+x_2 )≥0.5
g(θ0+θ1x1+θ2x2)=g(−3+x1+x2)≥0.5只需要
−
3
+
x
1
+
x
2
≥
0
-3+x_1+x_2≥0
−3+x1+x2≥0则直线
l
:
−
3
+
x
1
+
x
2
l:-3+x_1+x_2
l:−3+x1+x2是决策边界,当-3+x_1+x_2≥0时,y预测为1。
eg2:非线性决策边界
h
θ
(
x
)
=
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
3
2
+
θ
4
x
4
2
)
h_θ (x)=g(θ_0+θ_1 x_1+θ_2 x_2+θ_3 x_3^2+θ_4 x_4^2)
hθ(x)=g(θ0+θ1x1+θ2x2+θ3x32+θ4x42)
[
θ
0
,
θ
1
,
θ
2
,
θ
3
,
θ
4
]
=
[
−
1
,
0
,
0
,
1
,
1
]
[θ_0,θ_1,θ_2,θ_3,θ_4]=[-1,0,0,1,1]
[θ0,θ1,θ2,θ3,θ4]=[−1,0,0,1,1]
想要预测y=1,只需要
g
(
θ
0
+
θ
1
x
1
+
θ
2
x
2
+
θ
3
x
3
2
+
θ
4
x
4
2
)
=
g
(
−
1
+
x
3
2
+
x
4
2
)
≥
0.5
g(θ_0+θ_1 x_1+θ_2 x_2+θ_3 x_3^2+θ_4 x_4^2)=g(-1+x_3^2+x_4^2 )≥0.5
g(θ0+θ1x1+θ2x2+θ3x32+θ4x42)=g(−1+x32+x42)≥0.5只需要
−
1
+
x
3
2
+
x
4
2
≥
0
-1+x_3^2+x_4^2≥0
−1+x32+x42≥0则
−
1
+
x
3
2
+
x
4
2
=
0
-1+x_3^2+x_4^2=0
−1+x32+x42=0是决策边界,当
−
1
+
x
3
2
+
x
4
2
≥
0
-1+x_3^2+x_4^2≥0
−1+x32+x42≥0时,y预测为1。
代价函数(Cost Function)
如果采用之前的均方误差(Mean Squared Error)公式:
J
(
θ
)
=
1
m
∑
i
=
1
m
1
2
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
J(θ)=\frac1m \sum_{i=1}^m\frac12 (h_θ (x^{(i)} )-y^{(i)})^2
J(θ)=m1i=1∑m21(hθ(x(i))−y(i))2把
J
(
θ
)
J(\theta)
J(θ)改写成更一般的形式
J
(
θ
)
=
1
m
∑
i
=
1
m
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
{ J(θ)=\frac1m \sum_{i=1}^mCost(h_θ (x^{(i)} ),y^{(i)})}
J(θ)=m1i=1∑mCost(hθ(x(i)),y(i))
C
o
s
t
(
h
θ
(
x
(
i
)
)
,
y
(
i
)
)
=
1
2
(
h
θ
(
x
(
i
)
)
−
y
(
i
)
)
2
{ Cost(h_θ (x^{(i)} ),y^{(i)})=}\frac12 (h_θ (x^{(i)} )-y^{(i)})^2
Cost(hθ(x(i)),y(i))=21(hθ(x(i))−y(i))2
J
(
θ
)
{J(\theta)}
J(θ)是非凸函数,拥有多个局部最小值,使用梯度下降法不一定能收敛到全局最小。
下面介绍一个能使
J
(
θ
)
{J(θ)}
J(θ)为凸函数的Cost函数。
C
o
s
t
(
h
θ
(
x
)
,
y
)
=
{
−
l
o
g
(
h
θ
(
x
)
)
,
y
=
1
−
l
o
g
(
1
−
h
θ
(
x
)
)
,
y
=
0
Cost(h_θ (x),y)=\begin{cases}-log(h_θ (x)), &y= 1 \cr-log(1-h_θ (x)) , &y=0\end{cases}
Cost(hθ(x),y)={−log(hθ(x)),−log(1−hθ(x)),y=1y=0
当y=1时,从Cost函数的图像中不难看出,当y=1时,Cost = 0,说明当实际值为1,预测值为1时,付出的代价为0;当y从右边趋于0时,Cost趋于正无穷,说明当实际值为1,预测值为0,付出的代价非常大。这符合Cost函数的性质。
当y=0时,做类似解释。
由于原来的Cost函数为分段函数,不好处理,构造出等价的Cost函数,即
C
o
s
t
=
y
(
i
)
l
o
g
(
h
θ
(
x
(
i
)
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
(
y
只
取
0
,
1
)
{Cost= y^{(i)} log(h_θ (x^{(i)}))+(1-y^{(i)} )log(1-h_θ (x^{(i)} )) (y只取0,1) }
Cost=y(i)log(hθ(x(i)))+(1−y(i))log(1−hθ(x(i)))(y只取0,1)
梯度下降及优化算法
θ j ← θ j − α ∂ ∂ θ j J ( θ ) θ_j←θ_j-α\frac ∂{∂θ_j } J(θ) θj←θj−α∂θj∂J(θ)i.e. θ j ← θ j − α 1 m ∑ i = 1 m ( h θ ( x ( i ) ) − y ( i ) ) x j ( i ) ( 同 时 更 新 所 有 θ j ) θ_j←θ_j-α \frac1m \sum_{i=1}^m(h_θ (x^{(i) })-y^{(i)}) x^{(i)}_j (同时更新所有θ_j) θj←θj−αm1i=1∑m(hθ(x(i))−y(i))xj(i)(同时更新所有θj) h θ ( x ) = 1 1 + e − θ T x h_θ (x)= \frac1{1+e^{-{θ^Tx}} } hθ(x)=1+e−θTx1
优化算法:
共轭梯度(Conjugate gradient)、BFGS、L-BFGS等方法。
优点:1可以自动寻找适合的学习率α
2 能够更快地收敛到最优解
缺点:算法复杂
多分类问题
比如要把整个数据集分成3类,则先挑出第一类,其余两类视为一类,重复操作两次。
h
θ
(
i
)
(
x
)
=
P
(
y
=
i
∣
x
;
θ
)
,
(
i
=
1
,
2
,
3
)
.
h_θ^{(i)}(x)=P(y=i |x;θ),(i=1,2,3).
hθ(i)(x)=P(y=i∣x;θ),(i=1,2,3).所以这里有三个分类器
针对每个类别 i,训练一个逻辑回归分类器
h
θ
(
i
)
(
x
)
h_θ^{(i)}(x)
hθ(i)(x)去预测y=i的概率。
针对一个新的输入x,预测x的类别i,
i
s
.
t
.
s.t.
s.t.
max
i
h
θ
(
i
)
(
x
)
\max_ih_θ^{(i)} (x)
imaxhθ(i)(x)
可以理解为取i , s.t
m
a
x
P
(
y
=
i
)
max{P(y=i)}
maxP(y=i)。