赞
踩
原来以为logistic回归只是很简单,没什么的干货的算法,在看了吴恩达老师的深度学习网易公开课和同学的交流之后,发现这个是很多算法的基础,很重要,这里系统的记录一下学习心得:
####1.logistc分布
随机变量X服从Logistic分布,即有分布函数和密度函数如下:
F
(
x
)
=
P
(
X
≤
x
)
=
1
e
−
(
x
−
μ
)
/
γ
(1)
F(x)=P(X\le x)=\frac{1}{e^{-(x-\mu)/\gamma}}\tag{1}
F(x)=P(X≤x)=e−(x−μ)/γ1(1)
f
(
x
)
=
F
′
(
x
)
=
e
−
(
x
−
μ
)
/
γ
γ
(
1
+
e
−
(
x
−
μ
)
/
γ
)
(2)
f(x)=F'(x)=\frac{e^{-(x-\mu)/\gamma}}{\gamma(1+e^{-(x-\mu)/\gamma})}\tag{2}
f(x)=F′(x)=γ(1+e−(x−μ)/γ)e−(x−μ)/γ(2)
两个函数的图如下:
图中
μ
=
0
,
γ
=
1
\mu=0,\gamma=1
μ=0,γ=1,
μ
\mu
μ为位置参数,决定了对称点的位置,
γ
>
0
\gamma \gt0
γ>0是形状参数,决定了压缩的形状。可以看到,分布函数就是常用的sigmoid函数,常用来作神经网络二分类的激活函数,将无穷范围内的输入x值压缩到(0,1)之间,提供了分类的概率。
####2.二项Logistic回归模型
看名字是回归,其实这是个分类模型,由条件概率分布P(Y|X)表示,随机变量X为实值,Y为0或1:
P
(
Y
=
1
∣
x
)
=
e
w
⋅
x
+
b
1
+
e
w
⋅
x
+
b
=
1
1
+
e
−
(
w
⋅
x
+
b
)
(3)
P(Y=1|x)=\frac{e^{w\cdot x+b}}{1+e^{w\cdot x+b}}=\frac{1}{1+e^{-(w\cdot x+b)}}\tag{3}
P(Y=1∣x)=1+ew⋅x+bew⋅x+b=1+e−(w⋅x+b)1(3)
P
(
Y
=
0
∣
x
)
=
1
1
+
e
(
w
⋅
x
+
b
)
(4)
P(Y=0|x)=\frac{1}{1+e^{(w\cdot x+b)}}\tag{4}
P(Y=0∣x)=1+e(w⋅x+b)1(4)
以上两个公式是从概率角度来看的,其实是只有一个公式P(Y=1|x),另外的P(Y=0|x)=1-P(Y=1|x),,所以我们只需要求公式3即可。所以供决策函数(Andrew NG)来看,所以目标属于Y=1类在特征x下的条件概率为:
h
w
(
x
)
=
g
(
w
T
x
)
=
1
1
+
e
−
(
w
T
x
+
b
)
(5)
h_w(x)=g(w^Tx)=\frac{1}{1+e^{-({w^Tx+b})}}\tag{5}
hw(x)=g(wTx)=1+e−(wTx+b)1(5)
一个事件的几率是指该事件发生与不发生的概率比值。如果该事件发生概率为p,那么几率为
p
1
−
p
\frac{p}{1-p}
1−pp,取个对数
l
o
g
p
1
−
p
log\frac{p}{1-p}
log1−pp,即为对数几率,对于Logistc回归而言,其对数几率为:
l
o
g
P
(
Y
=
1
∣
x
)
1
−
P
(
Y
=
1
∣
x
)
=
w
T
x
+
b
(6)
log\frac{P(Y=1|x)}{1-P(Y=1|x)}=w^Tx+b\tag{6}
log1−P(Y=1∣x)P(Y=1∣x)=wTx+b(6)
可以看出,Logistic回归就是一般线性回归的对数几率,这里本人的理解是将一般线性回归(预测的值范围是整个实域),通过sigmoid压缩到(0,1)之间,转化成概率。
####3.参数估计
可以采用极大似然估计估计参数模型,给定数据集T={
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
,
⋯
,
(
x
n
,
y
n
)
(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)
(x1,y1),(x2,y2),⋯,(xn,yn)},设:P(Y=1|x)=
π
(
x
)
\pi(x)
π(x),P(Y=0|x)=1-
π
(
x
)
\pi(x)
π(x),则似然函数为:
∏
i
=
1
n
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
(7)
\prod_{i=1}^{n}[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}\tag{7}
i=1∏n[π(xi)]yi[1−π(xi)]1−yi(7)
公式7中,当
y
i
=
1
y_i=1
yi=1时,后面的
[
1
−
π
(
x
i
)
]
1
−
y
i
[1-\pi(x_i)]^{1-y_i}
[1−π(xi)]1−yi为1;当
y
i
=
0
y_i=0
yi=0时,前面的
[
π
(
x
i
)
]
y
i
[\pi(x_i)]^{y_i}
[π(xi)]yi为1。Logistc回归而言,算出样本属于1或者0的概率,哪一个概率大便取那个作为当前的结果,所以公式7可以看成n个样本的预测结果的概率的连乘,只不过每个样本都有两种结果,所以取个
y
i
y_i
yi的指数将两者都cover到。取对数,对数似然函数为:
L
(
w
,
b
)
=
∑
i
=
1
n
[
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
]
L(w,b)=\sum_{i=1}^{n}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]
L(w,b)=i=1∑n[yilogπ(xi)+(1−yi)log(1−π(xi))]
L
(
w
,
b
)
=
∑
i
=
1
n
[
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
]
L(w,b)=\sum_{i=1}^{n}[y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i))]
L(w,b)=i=1∑n[yilogπ(xi)+(1−yi)log(1−π(xi))]
值得一提的是,在Andrew NG的公开课中,将Logistic回归的单个样本的Loss函数定义为:
L
(
w
,
b
)
=
−
(
y
i
l
o
g
π
(
x
i
)
+
(
1
−
y
i
)
l
o
g
(
1
−
π
(
x
i
)
)
)
L(w,b)=-(y_ilog\pi(x_i)+(1-y_i)log(1-\pi(x_i)))
L(w,b)=−(yilogπ(xi)+(1−yi)log(1−π(xi)))
即传说中的log损失,整个样本集上的代价cost函数定义为
J
(
w
,
b
)
=
1
m
L
(
w
,
b
)
J(w,b)=\frac{1}{m}L(w,b)
J(w,b)=m1L(w,b)。
这两者并不冲突,在上述极大似然函数中求得是似然函数的极大值,损失函数或者代价函数求得是最小值,只是多个
1
m
\frac{1}{m}
m1的区别。
通常采用梯度下降(极大似然估计采用梯度上升)或者拟牛顿法求解Logistic回归最优化问题。
####4.多项Logistic回归(softmax分类,多分类任务)
多项Logistic回归又名softmax分类器,针对多分类问题。假设要分的类有K个,{1,2,3
⋯
\cdots
⋯,K},那么模型最后输出为K维的向量(向量的各维度的和为1),每个维度的值即为样本属于当前类的概率,公式化来讲,假设函数
h
θ
(
x
)
h_\theta(x)
hθ(x)形式如下:
其中
θ
1
,
θ
2
,
⋯
,
θ
k
\theta1,\theta2,\cdots,\theta k
θ1,θ2,⋯,θk为模型参数,分别将样本映射到k个类别,做个归一化(除以所有类别的总和),即为概率。假设样本的特征维度为n,加上偏置1,则这里
θ
i
\theta i
θi的维度为(n+1),为了方便起见,将k个
θ
i
\theta i
θi纵向叠在一起,形成k*(n+1)的矩阵:
这样一个k*(n+1)的矩阵右乘(n+1)维的向量,得到k维的向量。
李航老师的《统计机器学习》中将softmax模型化为:
P
(
Y
=
k
∣
x
)
=
e
w
k
⋅
x
+
b
k
1
+
∑
k
=
1
K
−
1
e
w
k
⋅
x
+
b
k
,
k
=
1
,
2
,
⋯
,
K
−
1
(8)
P(Y=k|x)=\frac{e^{w_k\cdot x+b_k}}{1+\sum_{k=1}^{K-1}e^{w_k\cdot x+b_k}}, k=1,2,\cdots,K-1 \tag{8}
P(Y=k∣x)=1+∑k=1K−1ewk⋅x+bkewk⋅x+bk,k=1,2,⋯,K−1(8)
P
(
Y
=
K
∣
x
)
=
1
1
+
∑
k
=
1
K
−
1
e
w
k
⋅
x
+
b
k
(9)
P(Y=K|x)=\frac{1}{1+\sum_{k=1}^{K-1}e^{w_k\cdot x+b_k}}\tag{9}
P(Y=K∣x)=1+∑k=1K−1ewk⋅x+bk1(9)
这个本质上是一样的,前面我们说归一化除以分母(所有K类的结果的和)获得概率,注意看公式8和9的分母,和的下标是从1到K-1,这里只是将其中第K的结果(经过
θ
K
⋅
x
\theta K \cdot x
θK⋅x再取e的指数)置为1,这里我的理解是为了与之前的二类logistics回归对应,二分类中,将属于0类的结果置为1一样,只要求出另一种1类的概率就行了。
#####4.1 softmax的代价函数
1{
⋅
\cdot
⋅}表示示性函数,取值规则为1{值为真的表达式}=1,1{值为假的表达式}=0。softmax的代价函数也是交叉熵:
第i个样本,取其真实标签对应的概率值求对数的负数,然后将m样本求平均。即交叉熵中,真实分布为p,模型输出为q,其交叉熵即为-plogq。在二分类的logistics回归中,代价函数是一致的,Logistics代价函数可以写成:
对于第一行,保证去的是y真实值得那一项,另一项为零。
#####4.2 softmax模型参数化的特点
softmax模型的特点就是,它的参数有个“冗余的”参数集,假设我们从参数向量
θ
j
\theta_j
θj 中减去了向量 $ \psi$,这时,每一个 $ \theta_j$都变成了 $ \theta_j - \psi(j=1, \ldots, k)$。此时假设函数变成了以下的式子:
可以看出无论减去什么向量,都不影响最后的结果,换句话来说,softmax模型被过度参数化了。对于任意一个用于拟合数据的假设函数,可以求出多组参数值,这些参数得到的是完全相同的假设函数
h
θ
h_\theta
hθ。这也能解释了softmax和Logistics回归的关系:
当类别数 k = 2 时,softmax 回归退化为 logistic 回归。这表明 softmax 回归是 logistic 回归的一般形式。具体地说,当 k = 2 时,softmax 回归的假设函数为:
利用softmax回归参数冗余的特点,我们令
ψ
=
θ
1
\psi = \theta_1
ψ=θ1,并且从两个参数向量中都减去向量
θ
1
\theta_1
θ1,得到:
用
θ
\theta
θ来表示
θ
2
−
θ
1
\theta2-\theta1
θ2−θ1就可以得到上文中的logistics回归的模型了。
####5.总结
个人的一点看法即为,给定数据样本X(特征向量),数据标签Y,机器学习(回归,分类)的本质是妄图找出数据样本与其标签的之间的关系。在Logistic回归中,模型认为X,Y服从Logistic分布,尽力用该分布来拟合数据样本和标签。那么logistic回归为什么使用Log损失作为其损失函数呢,我的理解是这样的:
logistic回归模型是一个概率模型,因为在描述该分类时,我们其实是以概率来衡量的。从Logistic曲线就能看出,无论横坐标取什么值,它的值总是在[0,1]之间变化,它的物理含义很明确,指单个样例,在条件x下,出现的【概率】。所有单个样本都对应于一个概率,用概率模型来描述这个分类过程就是:给定样本X,试图求出模型参数
θ
\theta
θ在该条件下的概率
P
(
θ
∣
X
)
P(\theta|X)
P(θ∣X),使其最大,有贝叶斯公式:
P
(
θ
∣
X
)
=
P
(
θ
,
X
)
P
(
X
)
=
P
(
X
∣
θ
)
P
(
θ
)
P
(
X
)
P(\theta|X)=\frac{P(\theta,X)}{P(X)}=\frac{P(X|\theta)P(\theta)}{P(X)}
P(θ∣X)=P(X)P(θ,X)=P(X)P(X∣θ)P(θ)
对于模型本身来说,可以不看
θ
\theta
θ先验概率和样本X的概率,这样:
P
(
θ
∣
X
)
=
P
(
θ
,
X
)
P(\theta|X)~=P(\theta,X)
P(θ∣X) =P(θ,X)
要想最大化左边的
P
(
θ
∣
X
)
P(\theta|X)
P(θ∣X),只需要最大化右边的
P
(
X
∣
θ
)
P(X|\theta)
P(X∣θ),即
[
π
(
x
i
)
]
y
i
[
1
−
π
(
x
i
)
]
1
−
y
i
[\pi(x_i)]^{y_i}[1-\pi(x_i)]^{1-y_i}
[π(xi)]yi[1−π(xi)]1−yi
这是针对单个样本而言,在每个样本出现的条件下
θ
\theta
θ的条件概率就是取每个样本的连乘值:
∏
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
这就是似然函数,取对数就是Log损失,也就是交叉熵。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。