今天写大名鼎鼎的LR,话说本宝宝认为这个算法真的是大隐隐于市的典范,简单大气,应用还广!啧啧啧~~~
首先我们要明确的一个问题就是,虽然这个叫回归,让我们联想到了线性回归。但是,这是个分类算法,而不是回归算法!!!既可以作为二分类,也可以多分类哦~
1.二元LR
1.1二元LR模型
二项逻辑回归模型是如下的条件概率:
P(Y=1∣x)=exp(w⋅x+b)1+exp(w⋅x+b) P ( Y = 1 ∣ x ) = e x p ( w ⋅ x + b ) 1 + e x p ( w ⋅ x + b )
P(Y=0∣x)=11+exp(w⋅x+b) P ( Y = 0 ∣ x ) = 1 1 + e x p ( w ⋅ x + b )
其中,
x∈Rn
x
∈
R
n
,
Y∈{0,1}
Y
∈
{
0
,
1
}
是输出,
w∈Rn
w
∈
R
n
和
b∈R
b
∈
R
是参数。
实际上,通过模型我们可以看到,外面的就是个
sigmoid
s
i
g
m
o
i
d
函数,而括号里面是之前看到过的线性回归的内核。在《西瓜书》和《统计学习方法》里面都提到了一个概念叫做几率——是指该事件发生的概率与该事件不发生的概率的比值,即
p1−p
p
1
−
p
,而该事件的对数几率或者logit函数则为
logit(p)=logp1−p
l
o
g
i
t
(
p
)
=
l
o
g
p
1
−
p
,而对于LR这个模型而言,对数几率为:
logP(Y=1∣x)1−P(Y=1∣x)=w⋅x+b l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w ⋅ x + b
也就是说,通过取对数之后变成了输入
x
x
的线性函数。因而,逻辑回归实际上是一种广义线性模型。
接着,我们讨论一下外衣——sigmoidsigmoid函数。
f(x)=11+e−x f ( x ) = 1 1 + e − x
其中,
f(x)∈(0,1)
f
(
x
)
∈
(
0
,
1
)
。并且
f′(x)=f(x)(1−f(x))
f
′
(
x
)
=
f
(
x
)
(
1
−
f
(
x
)
)
.
性质:
f(x)
f
(
x
)
的所有取值都在0到1的范围内,那么我们就可以把得到的结果看做
概率。
当然,目前为止只是将结果变为概率,但是还没有决策。在LR中我们一般采用
sign
s
i
g
n
函数作为决策面,即对于假设函数
hθ(x)
h
θ
(
x
)
:
hθ(x)>0.5则y=1 h θ ( x ) > 0.5 则 y = 1
hθ(x)<0.5则y=0 h θ ( x ) < 0.5 则 y = 0
结合模型本身和
sigmoid
s
i
g
m
o
i
d
函数性质,我们可以发现
hθ(x)
h
θ
(
x
)
的值越小,那么分类为0的概率越大;反之,值越大的话分类为1的概率越大。如果靠近临界点,则分类准确率会下降。
1.2二元LR的损失函数
关于LR的损失函数,我觉得很多地方都写了,不过只是给出了公式,而没有理论。所以我想写一些为啥LR是这个样子的。先上公式:
L(w)=∑i=1m[yilogP(Y=1∣x)+(1−yi)log(1−P(Y=1∣x))] L ( w ) = ∑ i = 1 m [ y i l o g P ( Y = 1 ∣ x ) + ( 1 − y i ) l o g ( 1 − P ( Y = 1 ∣ x ) ) ]
其中,
m
m
是样本的个数。
首先我们先明确一个问题,线性回归里面的损失函数可以用到逻辑回归中吗?不可以!
原因:必须注意到,LR是分类模型,结果只有0和1两个答案。那么,如果将LR的输入放进线性回归的模型中,那么损失函数是跳变的,也就是说是非凸的。此时如果我们使用梯度下降等迭代算法求解很容易进入局部极小值点。对于机器学习的所有算法,我们在寻找损失函数的时候要尽可能的选择凸优化函数,这样能得到全局最优解。
接下来我们讨论关于损失函数的来源问题~我看过两个版本的,嗯……不同的角度吧!
第一种:从最大似然推导出损失函数
假设样本的输出为0和1,那么有:
P(y=1∣x,θ⃗ )=hθ(x)P(y=1∣x,θ→)=hθ(x)
P(y=0∣x,θ⃗ )=1−hθ(x) P ( y = 0 ∣ x , θ → ) = 1 − h θ ( x )
合并:
P(y∣x,θ⃗ )=hθ(x)y(1−hθ(x))1−y P ( y ∣ x , θ → ) = h θ ( x ) y ( 1 − h θ ( x ) ) 1 − y
这样,我们就得到了y的概率分布函数表达式,然后可以通过最大化似然函数来求模型参数
θ
θ
。而通常我们习惯使用对数似然函数,那么对数似然函数取反就可以得到我们上面写的损失函数
L(θ)
L
(
θ
)
第二种:从交叉熵的角度理解
交叉熵:用来衡量两个概率分布的差异性。
H(X,Y)=−∑Px(Z)logPy(Z) H ( X , Y ) = − ∑ P x ( Z ) l o g P y ( Z )
需要注意的是:
H(X,Y)≠H(Y,X)
H
(
X
,
Y
)
≠
H
(
Y
,
X
)
,也就是说,
H(X,Y)
H
(
X
,
Y
)
刻画的是通过概率分布Y来表达概率分布X的难度,交叉熵越小,代表两个概率分布越接近。所以,对比我们的逻辑回归的损失函数,正好是衡量数据对于理论模型的相近程度。
1.3二元LR的优化和正则化
对于LR的优化方法也比较多啦,和线性回归用的基本一样,比如:梯度下降、坐标下降、牛顿法等都可以。具体的参考线性回归的做法。
L1正则化:
L(w)=∑i=1m[yilogP(Y=1∣x)+(1−yi)log(1−P(Y=1∣x))]+α∥θ⃗ ∥ L ( w ) = ∑ i = 1 m [ y i l o g P ( Y = 1 ∣ x ) + ( 1 − y i ) l o g ( 1 − P ( Y = 1 ∣ x ) ) ] + α ∥ θ → ∥
L2正则化:
L(w)=∑i=1m[yilogP(Y=1∣x)+(1−yi)log(1−P(Y=1∣x))]+α∥θ⃗ ∥22 L ( w ) = ∑ i = 1 m [ y i l o g P ( Y = 1 ∣ x ) + ( 1 − y i ) l o g ( 1 − P ( Y = 1 ∣ x ) ) ] + α ∥ θ → ∥ 2 2
其中,L1正则化的优化方法需要用到最小角回归法和坐标轴下降法。
2.多元LR
其实,在对二元LR不进行额外扩展的话,也是可以做多元的分类的,比如one VS rest(OVR) 一届one VS one (OVO)。其中我们多元逻辑回归的就是来自OVO,首先,针对二元逻辑回归,我们有:
P(Y=1∣x,θ)=exp(w⋅x)1+exp(w⋅x) P ( Y = 1 ∣ x , θ ) = e x p ( w ⋅ x ) 1 + e x p ( w ⋅ x )
P(Y=0∣x,θ)=11+exp(w⋅x) P ( Y = 0 ∣ x , θ ) = 1 1 + e x p ( w ⋅ x )
其中,将偏置项
b
b
归于xx中。
由对数几率可以知道:
logP(Y=1∣x)1−P(Y=1∣x)=w⋅x l o g P ( Y = 1 ∣ x ) 1 − P ( Y = 1 ∣ x ) = w ⋅ x
那么,对于多元,我们假设是
K
K
元分类模型,即样本输出yy的取值为
1,2...K
1
,
2...
K
。
根据二元逻辑回归的经验,我们同样可以写出:
lnP(Y=1∣x,θ)Y=K∣x,θ)=xθ1 l n P ( Y = 1 ∣ x , θ ) Y = K ∣ x , θ ) = x θ 1
lnP(Y=2∣x,θ)Y=K∣x,θ)=xθ2 l n P ( Y = 2 ∣ x , θ ) Y = K ∣ x , θ ) = x θ 2
…
…
lnP(Y=K−1∣x,θ)Y=K∣x,θ)=xθK−1 l n P ( Y = K − 1 ∣ x , θ ) Y = K ∣ x , θ ) = x θ K − 1
再加上概率和为1的方程:
∑j=1KP(y=i∣x,θ)=1 ∑ j = 1 K P ( y = i ∣ x , θ ) = 1
这样一共K个方程,就可以求解K个逻辑回归的概率分布。解得:
P(Y=k∣x,θ)=exθk1+∑K−1t=1exθk P ( Y = k ∣ x , θ ) = e x θ k 1 + ∑ t = 1 K − 1 e x θ k
P(Y=K∣x,θ)=11+∑K−1t=1exθk P ( Y = K ∣ x , θ ) = 1 1 + ∑ t = 1 K − 1 e x θ k
其中,
k=(1,2,...K−1)
k
=
(
1
,
2
,
.
.
.
K
−
1
)
剩下的关于优化和损失函数和二元的相似。
3.LR的优缺点
优点:
(1)以概率的形式输出,而非单纯的0、1判断;
(2)可解释性强,可控度高
(3)训练速度快
缺点:
(1)对样本的分布非常敏感;
(2)由于sigmoid
s
i
g
m
o
i
d
函数本身的特征,导致趋于中间部分的分类效果不好。