前言
在学习和实践了线性回归模型后,我们终于来到了下一站------分类问题,分类问题中经典的算法称为逻辑回归.
逻辑回归模型引入
给定一些样本以后,我们首先需要选用一个合适的样本估测函数去估计样本值,首先如果使用线性函数去模拟可以吗?现在想要预测肿瘤良性与肿瘤大小的关系,看下面这些样本在坐标系上的分布.
此时使用线性回归可以得到如下图形:
若使用线性函数模拟,在本次模拟中,根据下列函数判定,模拟效果还不错:
y
=
{
1
,
if
p
r
e
d
i
c
t
_
r
e
s
u
l
t
≥
0.5
0
,
if
p
r
e
d
i
c
t
_
r
e
s
u
l
t
<
0.5
y= \begin{cases} 1, & \text{if $predict\_result\geq0.5$} \\ 0, & \text{if $predict\_result<0.5$} \end{cases}
y={1,0,if predict_result≥0.5if predict_result<0.5
可以在图像中看出,黄线左侧肿瘤预测为良性,右侧预测为恶性,目前看来一切都很正常,那我们再加入一个样本(18,1),得到的结果如下图:
预测的准确率低的离谱,这就说明在分类问题中,运用线性回归预测是不科学的,可能存在某些数据导致预测很差,那么,我们需要构造一个合理的预测函数,这个预测函数h的值最好能够满足
0
<
h
(
x
)
<
1
0<h(x)<1
0<h(x)<1,有一个函数完美的契合了这样的条件------sigmoid function.
sigmoid function------预测函数
这个函数表达式是这样的:
ϕ
(
z
)
=
1
1
+
e
−
z
\phi(z)=\frac {1}{1+e^{-z}}
ϕ(z)=1+e−z1
它的图像是这样的:
从图像上可以看出,当z<0时,
ϕ
<
0.5
\phi<0.5
ϕ<0.5,z>0时,
ϕ
>
0.5
\phi>0.5
ϕ>0.5,并且它是连续的,位于0和1之间,我们将
z
=
θ
T
x
z=\theta^Tx
z=θTx代入函数,就可以得到满足条件的预测函数:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
h_\theta(x)=\frac{1}{1+e^{-\theta^T x}}
hθ(x)=1+e−θTx1
该预测函数的值可以看成类1的后验估计,即h的值可以表示预测类为1的概率.得到预测函数之后,接下来需要定义代价函数
cost function------代价函数
由于刚刚学习了线性回归,我们很自然的想到利用线性回归中的代价函数,即:
J
(
θ
)
=
1
2
m
∑
i
=
1
n
(
h
θ
x
(
i
)
−
y
(
−
i
)
)
2
J(\theta)=\frac{1}{2m}\sum_{i=1}^n(h_\theta x^{(i)}-y^{(-i)})^2
J(θ)=2m1i=1∑n(hθx(i)−y(−i))2
但是这样定义的代价函数对梯度下降求极值是不友好的,因为它是非凸函数,即存在许多极小值,我们知道样本服从的是0-1分布,而预测函数h为类1的后验估计,那么可以表示为如下形式:
h
θ
(
x
)
=
1
1
+
e
−
θ
T
x
=
P
(
y
=
1
∣
x
;
θ
)
h_\theta(x)=\frac{1}{1+e^{-\theta^T x}}=P(y=1|x;\theta)
hθ(x)=1+e−θTx1=P(y=1∣x;θ)
类0的后验估计则为:
1
−
h
θ
(
x
)
=
1
−
1
1
+
e
−
θ
T
x
=
P
(
y
=
0
∣
x
;
θ
)
1-h_\theta(x)=1-\frac{1}{1+e^{-\theta^T x}}=P(y=0|x;\theta)
1−hθ(x)=1−1+e−θTx1=P(y=0∣x;θ)
由于0-1分布的似然函数的形式如下:
J
(
θ
)
=
∏
i
=
1
n
P
(
y
=
1
∣
x
i
;
θ
)
y
i
P
(
y
=
0
∣
x
;
θ
)
(
1
−
y
i
)
J(\theta)=\prod_{i=1}^nP(y=1|x^i;\theta)^{y^i}P(y=0|x;\theta)^{(1-y^i)}
J(θ)=i=1∏nP(y=1∣xi;θ)yiP(y=0∣x;θ)(1−yi)
我们可以代入
h
θ
x
h_\theta x
hθx,可以得到:
J
(
θ
)
=
∏
i
=
1
n
h
θ
x
(
i
)
y
i
(
1
−
h
θ
x
(
i
)
)
1
−
y
i
J(\theta)=\prod_{i=1}^nh_\theta x_{(i)}^{y^i}(1-h_\theta x_{(i)})^{1-y^i}
J(θ)=i=1∏nhθx(i)yi(1−hθx(i))1−yi
取对数得到:
l
o
g
J
(
θ
)
=
∑
i
=
1
n
y
i
l
o
g
h
θ
x
(
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
x
(
i
)
)
logJ(\theta)=\sum_{i=1}^ny^ilogh_\theta x_{(i)}+(1-y^i)log(1-h_\theta x_{(i)})
logJ(θ)=i=1∑nyiloghθx(i)+(1−yi)log(1−hθx(i))
我们将累加项提取出来分析一下:
y
i
l
o
g
h
θ
x
(
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
x
(
i
)
)
y^ilogh_\theta x_{(i)}+(1-y^i)log(1-h_\theta x_{(i)})
yiloghθx(i)+(1−yi)log(1−hθx(i))
梯度下降
由于对数似然函数求导是要求J的最大值,需要使用梯度上升进行参数更新,若使用梯度下降,我们只需在前面加上负号,即:
−
y
i
l
o
g
h
θ
x
(
i
)
−
(
1
−
y
i
)
l
o
g
(
1
−
h
θ
x
(
i
)
)
-y^ilogh_\theta x_{(i)}-(1-y^i)log(1-h_\theta x_{(i)})
−yiloghθx(i)−(1−yi)log(1−hθx(i))
若y=1,若预测值为0,那么可以看出该项值趋于无穷大,即代价值非常大,若预测值为1,那么该项值为0,即代价值为0,若y=0,与之相反,可以看出该项很契合代价值的评估.也就是说该似然函数可以当做逻辑回归过程中的代价函数.
对似然函数求偏导,我们得到梯度下降过程中
θ
\theta
θ遵循的变化公式:
θ
n
e
w
=
θ
o
l
d
+
α
∑
i
=
1
n
(
y
i
−
h
θ
x
i
)
x
j
i
\theta_{new}=\theta_{old}+\alpha\sum_{i=1}^n(y^i-h_\theta x^i)x_j^i
θnew=θold+αi=1∑n(yi−hθxi)xji
与线性回归的比较
- 当特征值相差较大时,逻辑回归也需要进行特征缩放.
- 线性回归样本总体满足高斯分布,逻辑回归满足伯努利分布即0-1分布.
- 两者其实在梯度下降过程中都使用了最大似然思想.只不过由于满足的分布不同,导致似然函数有差异.