逻辑回归和线性回归联系与区别
线性回归解决的是连续变量问题,那么在分类任务中可以用线性回归吗?例如判断是良性肿瘤还是恶性肿瘤,判断是垃圾邮件还是正常邮件,等等……
答案是也可以,但是效果不好,见下图:
图显示了是否购买玩具和年龄之间的关系,可以用线性回归拟合成一条直线,将购买标注为1,不购买标注为0,拟合后取当0.5值为阈值来划分类别。
可以看到,在途中,年龄的区分点约为19岁。
但当数据点不平衡时,很容易影响到阈值,见以下图:
可以看到,0值样本的年龄段往高年龄端偏移后,真实的阈值依然是19岁左右,但拟合出来的曲线的阈值往后边偏移了。可以想想,负样本越多,年龄大的人越多,偏移越严重。
逻辑斯谛分布
介绍逻辑回归模型之前,首先看一个并不不常见的概率分布,即逻辑斯谛分布。
设X是连续随机变量, X服从逻辑斯谛分布是指X具有下列的分布函数和密度函数:
曲线在中心附近增长较快,在两端增长速度较慢。形状参数γ的值越小,曲线在中心附近增长得越快。
逻辑回归原理
理想的替代函数应当预测分类为0或1的概率,当为1的概率大于0.5时,判断为1,当为1的概率小于0.5时,判断为0。因概率的值域为 [0,1] ,这样的设定比线性回归合理很多。
常用的替代函数为Sigmoid函数,即:
h
(
z
)
=
1
1
+
e
−
z
h(z) = \frac{1}{1+e^{-z}}
h(z)=1+e−z1
其中,
z
=
θ
T
x
z = \theta^T x
z=θTx
我们可以看到,当z大于0时,函数大于0.5;当函数等于0时,函数等于0.5;函数小于0时,函数小于0.5。如果用函数表示目标分到某一类的概率,我们可以采用以下“单位阶跃函数”来判断数据的类别:
h
(
z
)
=
{
0
,
z
<
0
0.5
,
z
=
0
1
,
z
>
0
h(z) = \left\{ \begin{aligned} 0,& & z<0 \\ 0.5, & & z=0 \\ 1, & & z>0 \end{aligned} \right.
h(z)=⎩⎪⎨⎪⎧0,0.5,1,z<0z=0z>0
逻辑回归损失函数
P
(
y
=
1
∣
x
;
θ
)
=
h
θ
(
x
)
P
(
y
=
0
∣
x
;
θ
)
=
1
−
h
θ
(
x
)
P(y=1|x;\theta) = h_\theta (x) \\ P(y=0|x;\theta) = 1-h_\theta (x)
P(y=1∣x;θ)=hθ(x)P(y=0∣x;θ)=1−hθ(x)
可以写作一般公式,
P
(
y
∣
x
;
θ
)
=
h
(
x
)
y
(
1
−
h
(
x
)
)
(
1
−
y
)
P(y|x;\theta)= h(x)^y (1-h(x))^{(1-y)}
P(y∣x;θ)=h(x)y(1−h(x))(1−y)
极大似然函数为,
L
(
θ
)
=
∏
i
=
1
m
h
θ
(
x
(
i
)
)
y
(
i
)
(
1
−
h
θ
(
x
(
i
)
)
(
1
−
y
(
i
)
)
L(\theta) = \prod^{m}_{i=1}h_\theta (x^{(i)})^{y^{(i)}} (1-h_\theta (x^{(i)})^{(1-y^{(i)})}
L(θ)=i=1∏mhθ(x(i))y(i)(1−hθ(x(i))(1−y(i))
对数极大似然函数为,
l
(
θ
)
=
l
o
g
L
(
θ
)
=
∑
i
=
1
m
y
(
i
)
l
o
g
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
h
θ
(
x
(
i
)
)
)
l(\theta) = log L(\theta) = \sum^{m}_{i=1} y^{(i)}log h_\theta (x^{(i)}) + (1-y^{(i)})log (1-h_\theta (x^{(i)}))
l(θ)=logL(θ)=i=1∑my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i)))
损失函数为,
J
(
θ
)
=
−
1
m
l
(
θ
)
=
−
1
m
∑
i
=
1
m
y
(
i
)
h
θ
(
x
(
i
)
)
+
(
1
−
y
(
i
)
)
(
1
−
h
θ
(
x
(
i
)
)
)
J(\theta) = -\frac{1}{m}l(\theta) = -\frac{1}{m}\sum^{m}_{i=1} y^{(i)}h_\theta (x^{(i)}) + (1-y^{(i)})(1-h_\theta (x^{(i)}))
J(θ)=−m1l(θ)=−m1i=1∑my(i)hθ(x(i))+(1−y(i))(1−hθ(x(i)))损失函数表示了预测值和真实值之间的差异程度,预测值和真实值越接近,则损失函数越小。
为什么不直接用和线性回归一样的平方损失函数?
回答:如果和线性回归一样的平方损失函数,则损失函数的形式为
∑
i
=
1
m
(
y
(
i
)
−
1
1
+
e
−
θ
T
x
)
2
\sum^m_{i=1}(y^{(i)}-\frac{1}{1+e^{-\theta^T x}})^2
∑i=1m(y(i)−1+e−θTx1)2,此为非凸函数,求解复杂,而且很容易求得局部最优解为非全局最优解。
梯度下降
我们用梯度下降法求解
θ
:
=
θ
−
α
Δ
θ
J
(
θ
)
=
θ
+
α
m
Δ
θ
l
(
θ
)
\theta:=\theta-\alpha\Delta_\theta J(\theta) = \theta + \frac{\alpha}{m}\Delta_\theta l(\theta)
θ:=θ−αΔθJ(θ)=θ+mαΔθl(θ)
当
g
(
z
)
=
1
1
+
e
−
z
g(z) = \frac{1}{1+e^{-z}}
g(z)=1+e−z1
g
′
(
z
)
=
g
(
z
)
(
1
−
g
(
z
)
)
g'(z) = g(z)(1-g(z))
g′(z)=g(z)(1−g(z))
证明:
因此: