介绍
逻辑回归(Logistic Regression) 作为最流行的一种机器学习算法,解决的是分类问题。
逻辑回归通过将样本特征和样本发生的概率联系起来,由于概率是一个数,所以可以称之为一个概率问题。
在传统的回归问题中,我们获得一个函数模型
f
(
)
\mathit{f}()
f(),将样本
x
\mathit{x}
x放入函数模型中后得到结果
y
^
\hat{y}
y^,即
y
^
=
f
(
x
)
\hat{y} = \mathit{f}(x)
y^=f(x)。但在逻辑回归中我们通常是通过函数模型来得到一个概率
p
^
\hat{p}
p^,即:
p
^
=
f
(
x
)
\hat{p} = \mathit{f}(x)
p^=f(x),然后根据概率
p
^
\hat{p}
p^来进行分类,举个例子,以概率0.5为分界:
y
^
=
{
1
,
p
^
≥
0.5
0
,
p
^
≤
0.5
\hat{y}=\left\{ \begin{array}{rcl} 1, &&{\hat{p}\geq0.5}\\ 0, &&{\hat{p}\leq0.5} \end{array}\right.
y^={1,0,p^≥0.5p^≤0.5
1和0在我们实际问题里代表不同的选项。所以逻辑回归既可以看做事回归算法,也可以看做是分类算法。通常作为分类算法用,只可以解决二分类问题。(对于多分类的问题,我们可以使用小技巧来解决,详见:预留)
在传统的线性回归问题中,我们得到的
y
^
\hat{y}
y^的取值一般是没有限制的,但在概率问题中,我们的概率只能在[0, 1]中取值,所以我们需要将式子
p
^
=
f
(
x
)
=
θ
T
⋅
x
b
\hat{p} = \mathit{f}(x) = \theta^{T}\cdot\mathit{x}_b
p^=f(x)=θT⋅xb转换一下成为:
p
^
=
σ
(
θ
T
⋅
x
b
)
\hat{p} = \sigma(\theta^{T}\cdot\mathit{x}_b)
p^=σ(θT⋅xb)。其中
σ
(
t
)
\sigma(t)
σ(t)称为Sigmoid函数:
σ
(
t
)
=
1
1
+
e
−
t
\sigma(t)=\frac{1}{1 + e^{-t}}
σ(t)=1+e−t1,函数的图像为:
我们分析一下我们的Sigmoid函数,该函数的值域是(0, 1)。当 t > 0时,p<0.5;当t<0时, p<0.5。当t = 0 时,p = 0.5 。
回到上式
p
^
=
σ
(
θ
T
⋅
x
b
)
\hat{p} = \sigma(\theta^{T}\cdot\mathit{x}_b)
p^=σ(θT⋅xb)中将
σ
(
t
)
\sigma(t)
σ(t)替换使公式变成:
p ^ = 1 1 + e − θ T ⋅ x b \hat{p} = \frac{1}{1 + e^{-\theta^{T}\cdot\mathit{x}_b}} p^=1+e−θT⋅xb1
我们的问题也成为了:对于给定的样本数据集X,y,我们如何找到参数theta,使得用这样的方式,可以最大程度获得样本数据集X对应的分类输出y。
损失函数
我们把损失函数定义为
c
o
s
t
cost
cost,推理得到:
y
^
=
{
1
,
p
^
≥
0.5
0
,
p
^
≤
0.5
c
o
s
t
=
{
如
果
y
=
1
,
p
越
小
,
c
o
s
t
越
大
如
果
y
=
0
,
p
越
大
,
c
o
s
t
越
小
\hat{y}=\left\{ \begin{array}{rcl} 1, &&{\hat{p}\geq0.5}\\ 0, &&{\hat{p}\leq0.5} \end{array}\right. \qquad cost=\left\{ \begin{array}{rcl} 如果y=1,p越小,cost越大\\ 如果y=0,p越大,cost越小 \end{array}\right.
y^={1,0,p^≥0.5p^≤0.5cost={如果y=1,p越小,cost越大如果y=0,p越大,cost越小
我们可以用以下损失函数表示以上的关系:
y
^
=
{
−
l
o
g
(
p
^
)
i
f
y
=
1
−
l
o
g
(
1
−
p
^
)
i
f
y
=
0
⟹
c
o
s
t
=
−
y
l
o
g
(
p
^
)
−
(
1
−
y
)
l
o
g
(
1
−
p
^
)
)
\hat{y}=\left\{ \begin{array}{rcl} -log(\hat{p})&&{if}&&{y=1} \\ -log(1-\hat{p})&&{if}&&{y=0} \end{array}\right. \Longrightarrow cost=-ylog(\hat{p})-(1-y)log(1-\hat{p}))
y^={−log(p^)−log(1−p^)ifify=1y=0⟹cost=−ylog(p^)−(1−y)log(1−p^))
J
(
θ
)
=
−
1
m
∑
i
=
1
m
y
(
i
)
l
o
g
(
p
^
(
i
)
)
+
(
1
−
y
(
i
)
)
l
o
g
(
1
−
p
^
(
i
)
)
J(\theta)=-\frac{1}{m}\sum^m_{i=1}y^{(i)}log(\hat p ^{(i)})+(1-y^{(i)})log(1-\hat p^{(i)})
J(θ)=−m1i=1∑my(i)log(p^(i))+(1−y(i))log(1−p^(i))
将
函数图像如下所示:
上式没有公共解,我们只能使用梯度下降法求解。所以想要得到最优解我们需要求出该损失函数的梯度。
对上式求导得:
∇
J
(
θ
)
=
1
m
⋅
(
∑
i
=
1
m
(
y
^
(
i
)
−
y
(
i
)
)
∑
i
=
1
m
(
y
^
(
i
)
−
y
(
i
)
)
⋅
X
1
(
i
)
∑
i
=
1
m
(
y
^
(
i
)
−
y
(
i
)
)
⋅
X
2
(
i
)
.
.
.
∑
i
=
1
m
(
y
^
(
i
)
−
y
(
i
)
)
⋅
X
n
(
i
)
)
=
1
m
⋅
X
b
T
⋅
(
σ
(
X
b
θ
)
−
y
)
\nabla J(\theta)=\frac{1}{m}\cdot \begin{pmatrix} \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})\\ \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})\cdot X_{1}^{(i)}\\ \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})\cdot X_{2}^{(i)}\\ ...\\ \sum_{i=1}^{m}(\hat{y}^{(i)}-y^{(i)})\cdot X_{n}^{(i)}\\ \end{pmatrix}=\frac{1}{m}\cdot X^T_b\cdot (\sigma(X_b\theta)-y)
∇J(θ)=m1⋅⎝⎜⎜⎜⎜⎜⎛∑i=1m(y^(i)−y(i))∑i=1m(y^(i)−y(i))⋅X1(i)∑i=1m(y^(i)−y(i))⋅X2(i)...∑i=1m(y^(i)−y(i))⋅Xn(i)⎠⎟⎟⎟⎟⎟⎞=m1⋅XbT⋅(σ(Xbθ)−y)
决策边界
还是以上面的例子(
p
^
=
1
1
+
e
−
θ
T
⋅
x
b
\hat{p} = \frac{1}{1 + e^{-\theta^{T}\cdot\mathit{x}_b}}
p^=1+e−θT⋅xb1)为例:
y
^
=
{
1
,
p
^
≥
0.5
θ
T
⋅
x
b
≥
0
0
,
p
^
≤
0.5
θ
T
⋅
x
b
≤
0
决
策
边
界
:
θ
T
⋅
x
b
=
0
\hat{y}=\left\{ \begin{array}{rcl} 1, &&{\hat{p}\geq0.5}&&\theta^T\cdot x_b\geq0\\ 0, &&{\hat{p}\leq0.5}&&\theta^T\cdot x_b\leq0 \end{array}\right. 决策边界:\theta^T\cdot x_b=0
y^={1,0,p^≥0.5p^≤0.5θT⋅xb≥0θT⋅xb≤0决策边界:θT⋅xb=0
θ
T
⋅
x
b
=
0
\theta^T\cdot x_b=0
θT⋅xb=0两个向量相乘得到的时一条直线,我们将这条直线成为该逻辑回归算法的决策边界。