一、逻辑回归模型
要说逻辑回归,我们得追溯到线性回归模型,线性回归是对于多维空间中的样本点,用特征的线性组合去拟合空间中点的分布和轨迹。如下图所示:
线性回归用来对连续值结果进行预测,现在我们需要处理的是分类问题,这里主要讨论二分类问题,可以推广导多分类问题中去。
将线性回归推广到分类问题最直接的想法是:
线性回归预测出连续值结果,那么如果我们在线性回归的基础上设定一个阈值,将线性回归输出结果大于这个阈值的归为正例,反正为反例。下面我们使用用Andrew Ng老师的课件中的例子来说明一下这种情况,下图中
X
X
X为数据点肿瘤的大小,
Y
Y
Y为观测结果是否是恶性肿瘤。
h
θ
(
x
)
h_θ (x)
hθ(x)为构建的线性回归模型,并且设定一个阈值=0.5,预测
h
θ
(
x
)
≥
0.5
h_θ (x)≥0.5
hθ(x)≥0.5的这些点为恶性肿瘤,而
h
θ
(
x
)
<
0.5
h_θ (x)<0.5
hθ(x)<0.5为良性肿瘤。
但如果是下面样本的情况:
现在再设定0.5,于是我们需要调整相应的阈值才能获得较好的结果,而现实生活的分类问题中,会比例子中这个更为复杂,而这个时候我们借助于线性回归+阈值的方式,已经很难完成一个鲁棒性很好的分类器。
逻辑回归 将线性回归推广到分类问题想法:
上面的分析可以看出线性回归+阈值对于复制情况下是不适用的,于是我们就可以换个思路:我们将线性回归模型不再想象为一个拟合样本的直线或超平面,而是现象成为一个分割样本点的直线或超平面。如下图所示:
我们将学习到的线性回归模型h_θ (x)称为分离超平面,将平面以上的样本归为正例(
h
θ
(
x
)
>
0
h_θ (x)>0
hθ(x)>0),以下的样本归为负例(
h
θ
(
x
)
<
0
h_θ (x)<0
hθ(x)<0)。这样就不需要对阈值进行选择了。以上思路的模型可以表示为:
f
(
x
)
=
s
i
g
n
(
h
θ
(
x
)
)
f(x)=sign(h_θ (x))
f(x)=sign(hθ(x))其中
s
i
g
n
sign
sign为符号函数:
因为sign函数值不连续,无法进行一些相关求导,所以不方便后面的优化计算,于是我们找来替补函数Sigmoid函数:
g
(
x
)
=
1
1
+
e
−
z
g(x)=\frac{1}{1+e^{-z} }
g(x)=1+e−z1图像如下:
于是我们得到逻辑回归的模型:
f
(
x
)
=
g
(
h
θ
(
x
)
)
=
1
1
+
e
−
h
θ
(
x
)
=
1
1
+
e
−
W
T
x
f(x)=g(h_θ (x))=\frac{1}{1+e^{-h_θ (x)} } =\frac{1}{1+e^{-W^T x} }
f(x)=g(hθ(x))=1+e−hθ(x)1=1+e−WTx1 注意:
上面说在逻辑回归中其中的线性回归模型为分离直线或者分离超平面,其实只是不一定的,线性模型可以是曲线或者曲面,主要取决于使用的特征:下图是直线或平面的例子:
这幅图中逻辑回归使用的线性回归模型为:
h
θ
(
x
)
=
w
1
x
1
+
w
2
x
2
+
w
0
h_θ (x)=w_1 x_1+w_2 x_2+w_0
hθ(x)=w1x1+w2x2+w0下图是曲线或曲面的例子:
这幅图中逻辑回归使用的线性回归模型为:
h
θ
(
x
)
=
w
1
x
1
2
+
w
2
x
2
2
+
w
0
h_θ (x)=w_1 x_1^2+w_2 x_2^2+w_0
hθ(x)=w1x12+w2x22+w0由上面两幅图可以看出如果使用样本特征的幂作为特征,线性回归可以是曲线或者曲面。所以我们发现,理论上说,只要我们的线性回归模型
h
θ
(
x
)
h_θ (x)
hθ(x)设计足够合理,足够复杂,我们能在不同的情形下,拟合出不同的分割边界,从而把不同的样本点分隔开来
二、逻辑回归模型的学习
由Sigmoid函数的图行我们可以看出其函数值是0到1之间的,与概率取值范围一致,于是我们可以将逻辑回归模型的输出看做是样本属于正例的概率,于是有:
P
(
y
=
1
│
x
,
W
)
=
f
(
x
)
=
g
(
h
θ
(
x
)
)
=
1
1
+
e
−
W
T
x
P(y=1│x,W)=f(x)=g(h_θ (x))=\frac{1}{1+e^{-W^T x} }
P(y=1│x,W)=f(x)=g(hθ(x))=1+e−WTx1于是可以得到样本属于负例的概率:
P
(
y
=
0
│
x
,
W
)
=
1
−
f
(
x
)
=
1
−
1
1
+
e
−
W
T
x
P(y=0│x,W)=1-f(x)=1-\frac{1}{1+e^{-W^T x} }
P(y=0│x,W)=1−f(x)=1−1+e−WTx1使用最大似然估计进行模型学习:
似然函数:
L
(
W
)
=
∏
i
=
1
N
P
(
y
=
y
i
│
x
i
,
W
)
=
∏
i
=
1
N
f
(
x
i
)
y
i
(
1
−
f
(
x
i
)
)
(
1
−
y
i
)
L(W)=∏_{i=1}^NP(y=y_i│x_i,W) =∏_{i=1}^Nf(x_i )^{y_i } (1-f(x_i ))^{(1-y_i)}
L(W)=i=1∏NP(y=yi│xi,W)=i=1∏Nf(xi)yi(1−f(xi))(1−yi)取对数:
L
(
W
)
=
∑
i
=
1
N
l
n
(
P
(
y
=
y
i
│
x
i
,
W
)
)
=
∑
i
=
1
N
y
i
l
n
(
f
(
x
i
)
)
+
(
1
−
y
i
)
l
n
(
1
−
f
(
x
i
)
)
L(W)=∑_{i=1}^Nln(P(y=y_i│x_i,W)) =∑_{i=1}^Ny_i ln(f(x_i ))+(1-y_i )ln(1-f(x_i ))
L(W)=i=1∑Nln(P(y=yi│xi,W))=i=1∑Nyiln(f(xi))+(1−yi)ln(1−f(xi))我们的目标就是最大化上面的对数似然函数,由于我们一般习惯最小化一个损失函数于是我们可以得到逻辑回归的损失函数:
J
(
W
)
=
−
L
(
W
)
=
−
∑
i
=
1
N
y
i
l
n
(
f
(
x
i
)
)
+
(
1
−
y
i
)
l
n
(
1
−
f
(
x
i
)
)
J(W)=-L(W)=-∑_{i=1}^Ny_i ln(f(x_i ))+(1-y_i )ln(1-f(x_i ))
J(W)=−L(W)=−i=1∑Nyiln(f(xi))+(1−yi)ln(1−f(xi))损失函数的图像:
其中横坐标为
f
(
x
i
)
f(x_i )
f(xi),从图中不难看出,如果样本
x
i
x_i
xi的值是1的话,估计值
f
(
x
i
)
f(x_i )
f(xi)越接近1付出的代价就越小,反之越大;同理,如果样本
x
i
x_i
xi的值是0的话,估计值
f
(
x
i
)
f(x_i )
f(xi)越接近0付出的代价就越小,反之越大。现在我们有了损失函数
J
(
W
)
J(W)
J(W),由其表达式我们可以知道其为凸函数。那么就存在唯一的最小值,我们使用梯度下降算法来求出其最小值点
W
∗
W^*
W∗,它就是我们要求的模型参数。求梯度:
∂
J
(
W
)
∂
W
j
=
−
∑
i
=
1
N
(
y
i
f
(
x
i
)
−
1
−
y
i
1
−
f
(
x
i
)
)
∂
f
(
x
i
)
∂
W
j
\frac{∂J(W)}{∂W_j }=-∑_{i=1}^N(\frac{y_i}{f(x_i )} -\frac{1-y_i}{1-f(x_i ) })\frac{∂f(x_i )}{∂W_j }
∂Wj∂J(W)=−i=1∑N(f(xi)yi−1−f(xi)1−yi)∂Wj∂f(xi)
=
−
∑
i
=
1
N
(
y
i
f
(
x
i
)
−
1
−
y
i
1
−
f
(
x
i
)
)
f
(
x
i
)
(
1
−
f
(
x
i
)
x
i
j
=-∑_{i=1}^N(\frac{y_i}{f(x_i )} -\frac{1-y_i}{1-f(x_i ) })f(x_i )(1-f(x_i ) x_i^j
=−i=1∑N(f(xi)yi−1−f(xi)1−yi)f(xi)(1−f(xi)xij
=
−
∑
i
=
1
N
(
y
i
(
(
1
−
f
(
x
i
)
)
−
(
1
−
y
i
)
f
(
x
i
)
)
x
i
j
=-∑_{i=1}^N(y_i ((1-f(x_i ))-(1-y_i)f(x_i )) x_i^j
=−i=1∑N(yi((1−f(xi))−(1−yi)f(xi))xij
=
−
∑
i
=
1
N
(
y
i
−
f
(
x
i
)
)
x
i
j
=-∑_{i=1}^N(y_i-f(x_i )) x_i^j
=−i=1∑N(yi−f(xi))xij其中
x
i
j
x_i^j
xij为第
i
i
i个样本的第
j
j
j个特征。递推公式:
W
j
=
W
j
+
λ
∑
i
=
1
N
(
y
i
−
f
(
x
i
)
)
x
i
j
W_j=W_j+λ∑_{i=1}^N(y_i-f(x_i )) x_i^j
Wj=Wj+λi=1∑N(yi−f(xi))xij矩阵写法:
X
=
[
x
1
,
x
2
,
…
,
x
N
]
∈
R
m
+
1
×
n
X=[x_1,x_2,…,x_N ]∈R^{m+1×n}
X=[x1,x2,…,xN]∈Rm+1×n
x
i
=
[
x
i
1
,
x
i
2
,
…
,
x
i
m
,
1
]
T
∈
R
m
+
1
×
1
x_i=[x_i^1,x_i^2,…,x_i^m,1]^T∈R^{m+1×1}
xi=[xi1,xi2,…,xim,1]T∈Rm+1×1
Y
=
[
y
1
,
y
2
,
…
,
y
N
]
T
∈
R
n
×
1
Y=[y_1,y_2,…,y_N ]^T∈R^{n×1}
Y=[y1,y2,…,yN]T∈Rn×1
W
=
[
w
1
,
w
2
,
…
,
w
N
,
b
]
T
∈
R
m
+
1
×
1
W=[w_1,w_2,…,w_N,b]^T∈R^{m+1×1}
W=[w1,w2,…,wN,b]T∈Rm+1×1
W
k
+
1
=
W
k
+
λ
X
(
Y
−
f
W
k
(
X
T
)
)
W^{k+1}=W^k+λX(Y-f_{W^k } (X^T))
Wk+1=Wk+λX(Y−fWk(XT))