逻辑斯谛分布
之前学到的感知机线性回归说过,一个分离超平面S将特征空间分成两个部分,实例在不同的子空间中被分为相对应的类。但是当一个样本点与超平面的距离非常近时,被分成类A的可能性为51%,分成类B的可能性为49%,此时线性回归会直接给出该样本点属于A类的结论,并没有告诉我们它属于A类的概率是多少,这样就忽略了49%分成B类的可能性。
为了得到这个概率,引出了Sigmoid函数(也叫Logistic,逻辑斯谛函数)。
关于函数的简介,可以在百度中自行了解:
https://baike.baidu.com/item/Sigmoid%E5%87%BD%E6%95%B0/7981407
Sigmoid函数经常在深度学习中作为激励函数使用,它的基本形式如下:
S
i
g
m
o
i
d
(
x
)
=
1
1
+
e
x
Sigmoid(x)=\frac{1}{1+e^{x}}
Sigmoid(x)=1+ex1
Sigmoid函数能够将线性回归产生的值
x
∈
(
−
∞
,
+
∞
)
x\in{(-\infty,+\infty)}
x∈(−∞,+∞) 转换到
y
∈
(
0
,
1
)
y\in(0,1)
y∈(0,1) 区间内,而概率的取值也在(0,1)内,这样,就可以得到一个样本被分为一个类的概率是多少了。
引入Sigmoid函数之后,加入形状参数
γ
\gamma
γ和位置参数
μ
\mu
μ,便得到了逻辑斯谛分布:
当连续随机变量X服从逻辑斯谛分布时,X具有下列分布函数:
F
(
x
)
=
1
1
+
e
−
(
x
−
μ
)
/
γ
F(x)=\frac{1}{1+e^{-(x-\mu)/\gamma}}
F(x)=1+e−(x−μ)/γ1
分布函数求导后得到密度函数:
f
(
x
)
=
e
−
(
x
−
μ
)
/
γ
γ
(
1
+
e
−
(
x
−
μ
)
/
γ
)
2
f(x)=\frac{e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})^2}
f(x)=γ(1+e−(x−μ)/γ)2e−(x−μ)/γ
其中,形状参数
γ
\gamma
γ越小,曲线在中心附近越陡,增长的越快。
二项逻辑斯谛回归模型
当
μ
=
0
,
γ
=
1
\mu=0,\gamma=1
μ=0,γ=1,随机变量Y只有两个取值0或1时,二项逻辑斯谛回归模型的形式为:
P
(
Y
=
0
∣
x
)
=
1
1
+
e
(
ω
⋅
x
+
b
)
P(Y=0|x)=\frac{1}{1+e^{(\omega \cdot x+b)}}
P(Y=0∣x)=1+e(ω⋅x+b)1
P
(
Y
=
1
∣
x
)
=
1
−
1
1
+
e
(
ω
⋅
x
+
b
)
=
e
(
ω
⋅
x
+
b
)
1
+
e
(
ω
⋅
x
+
b
)
P(Y=1|x)=1- \frac{1}{1+e^{(\omega \cdot x+b)}} = \frac{e^{(\omega \cdot x+b)}}{1+e^{(\omega \cdot x+b)}}
P(Y=1∣x)=1−1+e(ω⋅x+b)1=1+e(ω⋅x+b)e(ω⋅x+b)
有时为了方便,将权值向量
ω
\omega
ω扩充为
(
ω
(
1
)
,
ω
(
2
)
,
.
.
.
,
ω
(
n
)
,
b
)
T
(\omega^{(1)},\omega^{(2)},...,\omega^{(n)},b)^T
(ω(1),ω(2),...,ω(n),b)T,将输入向量x扩充为
(
x
(
1
)
,
x
(
2
)
,
.
.
.
,
x
(
n
)
,
1
)
(x^{(1)},x^{(2)},...,x^{(n)},1)
(x(1),x(2),...,x(n),1),扩充后的
ω
⋅
x
=
ω
(
1
)
x
(
1
)
+
ω
(
2
)
x
(
2
)
+
.
.
.
+
ω
(
n
)
x
(
n
)
+
b
\omega \cdot x=\omega^{(1)}x^{(1)}+\omega^{(2)}x^{(2)}+...+\omega^{(n)}x^{(n)}+b
ω⋅x=ω(1)x(1)+ω(2)x(2)+...+ω(n)x(n)+b,等价于扩充前的
ω
⋅
x
+
b
\omega \cdot x+b
ω⋅x+b。
这时的逻辑斯谛回归模型如下:
P
(
Y
=
0
∣
x
)
=
1
1
+
e
(
ω
⋅
x
)
P(Y=0|x)=\frac{1}{1+e^{(\omega \cdot x)}}
P(Y=0∣x)=1+e(ω⋅x)1
P
(
Y
=
1
∣
x
)
=
1
−
1
1
+
e
(
ω
⋅
x
)
=
e
(
ω
⋅
x
)
1
+
e
(
ω
⋅
x
)
P(Y=1|x)=1- \frac{1}{1+e^{(\omega \cdot x)}} = \frac{e^{(\omega \cdot x)}}{1+e^{(\omega \cdot x)}}
P(Y=1∣x)=1−1+e(ω⋅x)1=1+e(ω⋅x)e(ω⋅x)
当输入一个样本点x时,二项逻辑斯谛回归模型比较P(Y=0|x)和P(Y=1|x)的大小,将x分到概率值较大的那一类。其实只需计算一个条件概率值就行了,因为P(Y=0|x)+P(Y=1|x)=1。
例如当P(Y=0|x)=0.49,P(Y=1|x)=0.51时,x的类别为y=1,属于类1的概率为0.51。
这样,当一个样本点x输入到感知机模型sign(w•x+b)中时,只能得到样本点的类别;
当x输入到二项逻辑回归模型中时,不仅可以得到样本点的类别,还可以得到属于该类别的概率。
二项逻辑斯谛回归模型参数估计
下一个要解决的问题是,怎么得到模型中的未知参数 ω \omega ω?
假如给你一个训练集,包括10个样本,其中7个样本为类0,3个样本为类1,类0出现的概率为p,类1出现的概率为1-p,那么出现训练样本这种现象的概率就是p7(1-p)3。
既然这个样本结果已经出现了,为什么不利用已知的样本结果信息,反推最有可能(最大概率)导致这些样本结果出现的模型参数值 ω \omega ω呢?而这就是极大似然估计法的思想。
也就是说,我们可以用极大似然估计法估计 ω \omega ω。通过最大化对数似然函数,得到未知参数 ω \omega ω的估计值。
如果x是已知确定的,参数 ω \omega ω是未知的, P ( x ∣ ω ) P(x|\omega) P(x∣ω)叫做似然函数, 它描述对于不同的参数 ω \omega ω,出现x这个样本点的概率是多少。
关于极大似然估计更详细的解说,可以看这篇文章https://zhuanlan.zhihu.com/p/26614750
下面我们具体应用到二项逻辑回归模型中。
设训练数据集T={(x1,y1),(x2,y2),…,(xN,yN)}有N个样本,yi为0或1。
为了方便表述,设:
P
(
Y
=
1
∣
x
)
=
e
(
ω
⋅
x
)
1
+
e
(
ω
⋅
x
)
=
π
(
x
)
,
P
(
Y
=
0
∣
x
)
=
1
1
+
e
(
ω
⋅
x
)
=
1
−
π
(
x
)
(
1
)
P(Y=1|x)=\frac{e^{(\omega \cdot x)}}{1+e^{(\omega \cdot x)}}=\pi(x), P(Y=0|x)=\frac{1}{1+e^{(\omega \cdot x)}}=1-\pi(x) \tag{\color{red}{1}}
P(Y=1∣x)=1+e(ω⋅x)e(ω⋅x)=π(x),P(Y=0∣x)=1+e(ω⋅x)1=1−π(x)(1)
出现训练集T这个结果的似然函数就是把每个样本点出现的概率相乘起来:
∏
i
=
1
N
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
\prod_{i=1}^{N}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}
i=1∏N[π(xi)]yi[1−π(xi)]1−yi
假如训练集T只有两个样本点,第一个样本点是类0,第二个是类1,代入上式就是:
∏
i
=
1
2
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
=
[
π
(
x
1
)
]
y
1
[
1
−
π
(
x
1
)
]
1
−
y
1
[
π
(
x
2
)
]
y
2
[
1
−
π
(
x
2
)
]
1
−
y
2
=
[
π
(
x
1
)
]
0
[
1
−
π
(
x
1
)
]
1
[
π
(
x
2
)
]
1
[
1
−
π
(
x
2
)
]
0
=
[
1
−
π
(
x
1
)
]
[
π
(
x
2
)
]
\begin{aligned} &\prod_{i=1}^{2}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}\\ &=[\pi(x_1)]^{y_1}[1-\pi(x_1)]^{1-y_1}[\pi(x_2)]^{y_2}[1-\pi(x_2)]^{1-y_2}\\ &=[\pi(x_1)]^{0}[1-\pi(x_1)]^{1}[\pi(x_2)]^{1}[1-\pi(x_2)]^{0}\\ &=[1-\pi(x_1)][\pi(x_2)] \end{aligned}
i=1∏2[π(xi)]yi[1−π(xi)]1−yi=[π(x1)]y1[1−π(x1)]1−y1[π(x2)]y2[1−π(x2)]1−y2=[π(x1)]0[1−π(x1)]1[π(x2)]1[1−π(x2)]0=[1−π(x1)][π(x2)]
是不是相当于那个p7(1-p)3呢。
为了让连乘变成连加,对上面的似然函数取对数,得到对数似然函数:
L
(
ω
)
=
∑
i
=
1
N
[
l
o
g
[
π
(
x
i
)
]
y
i
+
l
o
g
[
1
−
π
(
x
i
)
]
1
−
y
i
]
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
−
y
i
l
o
g
(
1
−
π
(
x
i
)
)
+
l
o
g
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
[
l
o
g
π
(
x
i
)
−
l
o
g
(
1
−
π
(
x
i
)
)
]
+
l
o
g
(
1
−
π
(
x
i
)
)
]
=
∑
i
=
1
N
[
y
i
l
o
g
π
(
x
i
)
1
−
π
(
x
i
)
+
l
o
g
(
1
−
π
(
x
i
)
)
]
将
前
面
设
的
式
1
代
入
=
∑
i
=
1
N
[
y
i
l
o
g
e
(
ω
⋅
x
i
)
1
+
e
(
ω
⋅
x
i
)
1
1
+
e
(
ω
⋅
x
i
)
+
l
o
g
1
1
+
e
(
ω
⋅
x
i
)
]
=
∑
i
=
1
N
[
y
i
(
ω
⋅
x
i
)
−
l
o
g
(
1
+
e
(
ω
⋅
x
i
)
)
]
\begin{aligned} L(\omega)&=\sum_{i=1}^{N}[log[\pi(x_i)]^{y_i}+log[1-\pi(x_i)]^{1-y_i}]\\ &=\sum_{i=1}^{N}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]\\ &=\sum_{i=1}^{N}[y_ilog\pi(x_i)-y_ilog(1-\pi(x_i))+log(1-\pi(x_i))]\\ &=\sum_{i=1}^{N}[y_i[log\pi(x_i)-log(1-\pi(x_i))]+log(1-\pi(x_i))]\\ &=\sum_{i=1}^{N}[y_ilog\frac{\pi(x_i)}{1-\pi(x_i)}+log(1-\pi(x_i))]\\ 将前面设的式1代入&=\sum_{i=1}^{N}[y_ilog\frac{\frac{e^{(\omega \cdot x_i)}}{1+e^{(\omega \cdot x_i)}}}{\frac{1}{1+e^{(\omega \cdot x_i)}}}+log\frac{1}{1+e^{(\omega \cdot x_i)}}]\\ &=\sum_{i=1}^{N}[y_i(\omega \cdot x_i)-log(1+e^{(\omega \cdot x_i)})] \end{aligned}
L(ω)将前面设的式1代入=i=1∑N[log[π(xi)]yi+log[1−π(xi)]1−yi]=i=1∑N[yilogπ(xi)+(1−yi)log(1−π(xi))]=i=1∑N[yilogπ(xi)−yilog(1−π(xi))+log(1−π(xi))]=i=1∑N[yi[logπ(xi)−log(1−π(xi))]+log(1−π(xi))]=i=1∑N[yilog1−π(xi)π(xi)+log(1−π(xi))]=i=1∑N[yilog1+e(ω⋅xi)11+e(ω⋅xi)e(ω⋅xi)+log1+e(ω⋅xi)1]=i=1∑N[yi(ω⋅xi)−log(1+e(ω⋅xi))]
对
L
(
ω
)
L(\omega)
L(ω)求极大值,就可以得到参数
ω
\omega
ω的估计值,进一步得到二项逻辑回归模型。
到此,求二项逻辑回归模型就变成了求目标函数为
L
(
ω
)
L(\omega)
L(ω)的最优化问题。求解该最优化问题一般使用梯度下降法和拟牛顿法。