学习目标
掌握半监督学习、S3SVM的原理及推导过程。总结回顾第二章知识,完成第二章课后习题
半监督学习
1.1 基本原理
在机器学习领域,获得大量的有标注的数据存在一定的困难,但仅利用有标注的数据进行训练,也有一些缺陷:
- 大量未标注数据浪费
- 模型过拟合,泛化能力差
因此我们考虑在训练过程中加入这些未标记的数据。与原有输入全部标记好的模型相比,这种注入入未标记数据进行训练的方式叫做半监督学习。
同有监督学习类似,半监督学习模型也分为生成式与判别式
1.2 判别式模型 vs 生成式模型
机器学习解决问题的关键是找到 f ( x ) f(x) f(x),使 x x x(样本)根据 f ( x ) f(x) f(x)找到对应的 y y y(标签),即最终得到的标签 y y y满足:
y = a r g m a x y j P ( y j ∣ x ) y=argmax_{yj} P(y_j|x) y=argmaxyjP(yj∣x)
二者不同之处在于
a
r
g
m
a
x
y
j
P
(
y
j
∣
x
)
argmax_{y_j} P(y_j|x)
argmaxyjP(yj∣x)
的求解方式,判别式模型直接根据条件概率
P
(
y
∣
x
)
P(y|x)
P(y∣x)进行求解,生成式模型根据联合概率
P
(
y
,
x
)
P(y,x)
P(y,x)进行求解
判别式模型
给定 x x x,使 P ( y ∣ x ) P(y|x) P(y∣x)最大的 y y y即为最终的分类标签,那么判别式模型的关键就是找到 P ( y ∣ x ) P(y|x) P(y∣x)的表达形式。
该表达形式是由一系列参数决定( y = θ 1 x 1 + θ 2 x 2 + . . . + θ 3 x 3 = θ x y=\theta_1x_1+\theta_2x_2+...+\theta_3x_3=\theta x y=θ1x1+θ2x2+...+θ3x3=θx),因此 P ( y ∣ x ) P(y|x) P(y∣x)又可以写为 P ( y ∣ x , θ ) P(y|x,\theta) P(y∣x,θ),根据最大似然函数 l ( θ ) l(\theta) l(θ)求出未知参数 θ \theta θ
l
(
θ
)
l(\theta)
l(θ)=
∑
i
n
l
o
g
(
P
(
y
i
∣
x
i
,
θ
)
)
\sum_i^nlog(P(y_i|x_i,\theta))
∑inlog(P(yi∣xi,θ))
θ
=
a
r
g
m
a
x
θ
(
l
(
θ
)
)
\theta=argmax_\theta(l(\theta))
θ=argmaxθ(l(θ))
生成式模型
生成式模型认为预测结果
y
y
y是事物的本质,而观测样本
x
x
x是事物的表现形式。
(举个栗子): 标签
y
y
y为羊或者长颈鹿,观测样本x包括“是否吃草”,“是否脖子长”等特征,标签
y
y
y决定了特征
x
x
x是否存在
同上, 我们还是需要找到使 P ( y ∣ x ) P(y|x) P(y∣x)最大的 y y y,但因为是 y y y决定了 x x x,无法对 P ( y ∣ x ) P(y|x) P(y∣x)的分布进行假设,所以需要利用贝叶斯公式进行转化
P ( y ∣ x ) P(y|x) P(y∣x)= P ( x , y ) P ( x ) \frac {P(x,y)}{P(x)} P(x)P(x,y)= P ( x ∣ y ) ∗ P ( y ) P ( x ) \frac{P(x|y)*P(y)}{P(x)} P(x)P(x∣y)∗P(y)
此时
y
=
a
r
g
m
a
x
y
j
P
(
y
j
∣
x
)
=
a
r
g
m
a
x
y
j
P
(
x
∣
y
j
)
∗
P
(
y
j
)
P
(
x
)
y=argmax_{y_j} P(y_j|x)=argmax_{y_j} \frac{P(x|y_j)*P(y_j)}{P(x)}
y=argmaxyjP(yj∣x)=argmaxyjP(x)P(x∣yj)∗P(yj)=
a
r
g
m
a
x
y
j
P
(
x
∣
y
j
)
∗
P
(
y
j
)
argmax_{y_j} {P(x|y_j)*P(y_j)}
argmaxyjP(x∣yj)∗P(yj)
此时似然函数为 l ( θ , α ) l(\theta,\alpha) l(θ,α):
l l l( θ \theta θ, α \alpha α)= l o g ( P ( x i ∣ y i , θ ) ∗ P ( y i , α ) ) log(P(x_i|y_i,\theta)*P(y_i,\alpha)) log(P(xi∣yi,θ)∗P(yi,α))
1.3 生成式半监督模型
生成式半监督模型假设标记样本与未标记样本都是由同一个模型生成的。假设样本由高斯混合模型生成,每个类别代表一个高斯混合成分,即
p ( x ) p(x) p(x)= ∑ i N ( a i ∗ P ( x ∣ u i ∑ i ) ) \sum_i^N(a_i*P(x|u_i\sum_i)) ∑iN(ai∗P(x∣ui∑i))生成
其中 ∑ i N a i \sum_i^Na_i ∑iNai=1, P ( x ∣ u i ∑ i ) P(x|u_i\sum_i) P(x∣ui∑i)表示样本 x x x属于第 i i i个高斯混合成分的概率, u i ∑ i u_i\sum_i ui∑i表示混合成分的参数
f
(
x
)
=
a
r
g
m
a
x
y
P
(
y
=
j
∣
x
)
f(x)=argmax_{y} P(y=j|x)
f(x)=argmaxyP(y=j∣x)
=
a
r
g
m
a
x
y
∑
i
N
P
(
y
=
j
,
θ
=
i
∣
x
)
argmax_{y}\sum_i^N P(y=j,\theta=i|x)
argmaxy∑iNP(y=j,θ=i∣x)
=
a
r
g
m
a
x
y
∑
i
N
P
(
y
=
j
∣
θ
=
i
,
x
)
∗
P
(
θ
=
i
∣
x
)
argmax_{y}\sum_i^N P(y=j|\theta=i,x)*P(\theta=i|x)
argmaxy∑iNP(y=j∣θ=i,x)∗P(θ=i∣x)
其中 P ( θ = i ∣ x ) P(\theta=i|x) P(θ=i∣x)= a i ∗ P ( x ∣ u i ∑ i ) ∑ i N a i ∗ P ( x ∣ u i ∑ i ) \frac{a_i*P(x|u_i\sum_i)}{\sum_i^Na_i*P(x|u_i\sum_i)} ∑iNai∗P(x∣ui∑i)ai∗P(x∣ui∑i)
因为 P ( y = j ∣ θ = i , x ) P(y=j|\theta=i,x) P(y=j∣θ=i,x)需要知道样本的标记,所以不适用于未标记样本; P ( θ = i ∣ x ) P(\theta=i|x) P(θ=i∣x)不涉及标记,所以有标记,无标记可以利用,并且随着数据量的增加,拟合效果会更好
D l D_l Dl与 D u D_u Du的对数似然为:
D l U D u D_l U D_u DlUDu= l o g ( ∑ i N P ( y = j ∣ θ = i , x ) ∗ P ( θ = i ∣ x ) ) log (\sum_i^N P(y=j|\theta=i,x)*P(\theta=i|x)) log(∑iNP(y=j∣θ=i,x)∗P(θ=i∣x))+ l o g ( ∑ i N ∗ P ( θ = i ∣ x ) ) log(\sum_i^N*P(\theta=i|x)) log(∑iN∗P(θ=i∣x))
根据EM算法优化 u , ∑ i N u,\sum_i^N u,∑iN,不断迭代至收敛即可。
2.2 半监督SVM
半监督支持向量机(Semi-Supervises Supported Vector Machine,S3VM)是支持向量机在半监督问题上的推广,是一种半监督的判别式模型。
在监督问题中,支持向量机通过求解最大间隔超平面将两类样本分开;而在半监督问题中,支持向量机寻找的是能够将两类标记样本分开,并且穿过低密度样本区域的超平面。
1.TSVM(Joachims,1999)
-无标记样本:通过标记指派赋予样本标记
-预先对未标记的样本指派一个标记,之后和已标记样本一起作为输入样本,训练模型,寻找最大间隔超平面。
这是一个穷举的过程,穷举次数≈
2
n
2^n
2n,因此效率很低
2.优化的TSVM
对于半监督问题而言,TSVM的目标是为无标记样本集 D u D_u Du给出预测标记 y u y_u yu,使
m i n 1 2 ∣ ∣ w ∣ ∣ 2 + C l ∑ i = 1 δ i + C u ∑ i = 1 δ i min \frac{1}{2}||w||^2+C_l\sum_{i=1}\delta_i+C_u\sum_{i=1}\delta_i min21∣∣w∣∣2+Cl∑i=1δi+Cu∑i=1δi
s.t.
y
i
(
w
x
i
+
b
)
+
δ
i
≥
1
y_i(wx_i+b)+\delta_i≥1
yi(wxi+b)+δi≥1,
i
=
1
,
2
,
.
.
.
.
l
i=1,2,....l
i=1,2,....l
y
i
(
w
x
+
b
)
+
δ
i
≥
1
y_i(wx+b)+\delta_i≥1
yi(wx+b)+δi≥1,
i
=
l
,
l
+
1
,
.
.
.
.
m
i=l,l+1,....m
i=l,l+1,....m
δ
i
≥
0
\delta_i≥0
δi≥0
其中, δ \delta δ为松弛变量, C u C_u Cu和 C l C_l Cl为惩罚系数(或折中参数)
-忽略 D u D_u Du以及 C u ∑ i = 1 δ i C_u\sum_{i=1}\delta_i Cu∑i=1δi,根据有标记样本训练出SVM
-根据训练好的SVM对
D
u
D_u
Du进行指派,生成"伪标记",将其作为监督问题,与有标记样本一起求解超平面。
(此时的伪标记应该不是很准确,所以开始训练时将
C
u
C_u
Cu初始化为<
C
l
C_l
Cl的数值,使得有标记数据的贡献更大)
-SVM找出两个标记为异类,并且很容易发生错误的样本,交换她们的标记,再重新划分间隔超平面,划分完成后不断增大 C u C_u Cu,直到 C u C_u Cu= C l C_l Cl为止
综上,TSVM的伪代码可以写成:
输入:有标记样本集
D
l
D_l
Dl,无标记样本集
D
u
D_u
Du
过程:
1.
D
l
D_l
Dl ->
S
V
M
SVM
SVM //训练SVM
2.
S
V
M
SVM
SVM->
y
l
y_l
yl //输出未标记样本的伪标记
3.初始化
C
u
<
<
C
l
C_u<<C_l
Cu<<Cl
4.
W
h
i
l
e
(
C
u
<
C
l
)
While(C_u<C_l)
While(Cu<Cl)
d
o
do
do
根据目标函数求解
(
w
,
b
)
(w,b)
(w,b),
δ
\delta
δ
w
h
i
l
e
(
(
y
i
∗
y
j
)
>
0
while ((y_i*y_j)>0
while((yi∗yj)>0 and
(
δ
i
>
0
)
(\delta_i>0)
(δi>0) and
(
δ
j
>
0
)
(\delta_j>0)
(δj>0) and
(
δ
i
+
δ
j
>
2
)
(\delta_i+\delta_j>2)
(δi+δj>2)
d
o
do
do
y
i
y_i
yi=
−
y
i
-y_i
−yi
y
j
y_j
yj=
−
y
j
-y_j
−yj
更新
(
w
,
b
)
(w,b)
(w,b),
δ
\delta
δ
e
n
d
w
h
i
l
e
end while
endwhile
C
u
C_u
Cu=
m
i
n
(
2
C
u
,
C
l
)
min (2C_u,C_l)
min(2Cu,Cl)
e
n
d
w
h
i
l
e
end while
endwhile
输出:未标记样本的预测结果
《机器学习》第二章知识点回顾+课后练习
1.训练集上的误差叫做经验误差,测试集上的误差叫做泛化误差。我们所做的工作(如调参等),是为了最小化经验误差
2.经验误差过小很有可能导致过拟合
3.一般而言,测试集至少包含30个样本,大约2/3~4/5的样本用于训练
4.交叉验证中每一个子集都满足分层采样原则,数据分布相同,即正例:负例=原数据集中正例:负例
5.交叉验证取极端成为留一法,即仅有一个样本用于测试
6.平衡点(BEP)用于P-R曲线中,评估模型性能
7.ROC曲线的纵坐标为真正例率,横坐标为假正例率,反映了任意阈值对性能的影响。其面积AUC越大,性能越优。
习题:
2.1 数据集包含1000个样本,其中500个正例、500个反例,将其划分为包含70%样本的训练集和30%样本的测试集用于留出法评估,试估算共有多少种划分方式。
解: 组合问题。划分方式有
(
C
500
350
)
2
(C_{500}^{350})^2
(C500350)2 种。
2.2 数据集包含100个样本,其中正、反例各一半,假定学习算法所产生的模型是将新样本预测为训练样本数较多的类别(训练样本数相同时进行随机猜测),试给出用10折交叉验证法和留一法分别对错误率进行评估所得的结果。
解: 10折交叉验证: 由于每次训练样本中正反例数目一样,所以错误率是50%。
留一法: 如果留下的是正例,训练样本中反例的数目比正例多一个,所以错误率是100%。
2.3 若学习器A的F1值比学习器B高,试析A的ERP值是否也比B高。
解: 不能确定。因为P-R图是非单调的,会有上下波动,所以不能根据F值断定BEP
2.4 试述真正例率(TPR)、假正利率(FPR)与查准率(P)、查全率(R)之间的联系。
解: 查全率:
T
P
F
N
+
T
P
\frac{TP}{FN+TP}
FN+TPTP
查准率:
T
P
F
P
+
T
P
\frac{TP}{FP+TP}
FP+TPTP
真正例率:
T
P
F
N
+
T
P
\frac{TP}{FN+TP}
FN+TPTP
假正例率:
F
P
T
N
+
F
P
\frac{FP}{TN+FP}
TN+FPFP
所以查全率=真正例率
5.2.6 试述错误率与ROC曲线的联系。
解: 每一个点都对应了一个真正例率与假正例率,对应着一个错误率
6.min-max与z-score的特点:
解: min-max:方法简单,归一化后每个元素均为正值;当新增加一个元素时,仅当大于最大值或小于最小值时,才需要要再重新计算;容易受极端值影响。
z-score: 0周围的样本比较稠密;当新增加一个样本时,全部样本都需要重新计算。