本章参照周志华《机器学习》第13章编写
参考博文读书笔记 https://blog.csdn.net/u011826404/article/details/74358913
13.1 未标记样本
所谓监督学习,是说训练样本包含标记信息的学习任务,比如常见的分类和回归算法;同样无监督学习,比如聚类。实际问题中,情况略复杂,部分样本有标记部分没有标记,就是我们说的半监督学习了。对于半监督学习,最大的问题就是如何利用那些没有标记的数据。
一种简单的做法是专家打标,这种叫主动学习。同时,我们可以利用一些策略来尽量减少查询。但是实际上这种做法仍然是一种监督学习。我们半监督学习要追求的是:让学习过程不依赖于外界咨询交互。
之所以可以做到半监督学习,我们是基于,“未标记样本的样本分布一定是与其类别信息有一定联系”原则,即“聚类假设”或者“流形假设”,即“相似的样本有相似的输出”来做的。
此外,对于半监督是学习可以进一步划分为 纯半监督学习和直推学习。二者的区别在于:前者假定训练数据中的未标记数据并非待预测数据,是一种开放世界;而后者假定学习过程中的未标记数据就是待预测数据,是一个封闭世界。看图中即可。
13.2 生成式方法
生成式方法(Generative methods)是直接基于生成模型的方法。此类方法假设所有数据(无论是否有标记)都是由同一个潜在的模型“生成”的。这个假设使得我们能够通过潜在模型的参数将未标记数据与学习目标联系起来,而未标记数据则可看做模型的隐参数,通常可以基于EM算法进行ML求解。此类方法的区别主要在于生成式模型的假设,不同的模型假设将产生不同的方法。但是问题是,此类解法对模型的选取要求很高,需要充分的先验领域知识。
我们现在假设数据样本是基于混合高斯模型生成的:
我们这里假设,类簇与真实的类别顺序对应,第 i 个类簇对应第 i 个高斯混合成分。跟高斯混合聚类类似,这里的主要任务也是估计出各个高斯混合成分的系数和参数。不同的是,对于有标记的样本,其属于固定的高斯类簇:
直观上来看,基于半监督高斯混合模型有机整合了贝叶斯分类器与高斯混合聚类的核心思想,有效地利用了未标记样本数据隐含的分布信息,从而使参数的估计更加准确。同样的,这里对该问题的求解需要用EM算法来做,首先对各个高斯混合成分的参数及混合系数进行随机初始化,计算出各个未标记样本属于各高斯混合成分的概率;再最大化似然函数,对参数进行迭代更新。最终求解出参数。
当参数迭代更新收敛后,对于待测样本x,可以向你贝叶斯分类器那样计算出样本属于没个类簇的后验概率,接着找出概率最大的即可:
最终需要说明的是:生成式方法,对于模型的假设有着严格的要求。一旦假设的模型和事实不符,使用未标数据反而会降低其泛化性能。实际上提前知道数据满足的模型是非常困难的,需要有很强的相关领域知识。
13.3 半监督SVM
SVM 企图寻找一个超平面,使得两侧支持向量之间的间隔最大。而对于半监督SVM,企图超平面穿过数据低密度的区域。其中TSVM是半监督支持向量机的最著名代表,其核心思想是:尝试为为标记样本找到合适的标记指派(Label Assignment),标记指派就是直接对未标记样本给出标记,使得超平面划分后的间隔最大化。
可以看到这样是一种列举的做法,而TSVM采用局部搜索的策略来进行迭代求解,即首先用标记的样本训练出一个初始SVM,接着使用该学习器对未标记样本进行打标,基于所有标记样本重新训练SVM,再寻找出易错样本重新标记指派,之后一直迭代,提高未标记样本的影响力。
13.4 图半监督学习
这里的核心思想是,把数据映射成图,相似度高的样本在图中对应有高“强度”的边。
其他的看不太懂
13.5 基于分歧的方法
不同于之前说的只利用单一学习器的半监督学习方法,基于分歧的方法 利用多学习器之间的分歧(disagreement)和多样性(diversity) 来 利用未标记数据。其中,协同训练就是一种经典的方法。协同训练最初是针对于多视图(multi-view)数据而设计的,多视图数据指的是样本对象具有多个属性集,每个属性集则对应一个视图。比如电影数据中就包含画面类属性和声音类属性,就是两个视图。关于视图有两个性质需要了解:
相容性:每个单个视图数据训练出的学习器的输出是一致的,比如都是“好/+1”
互补性:不同视图所提供的信息是互补/相辅相成的
协同训练就是利用了上面说的两点(其实是很类似的),即利用了多视图数据的“相融互补性”。其基本的算法思想是这样的:首先基于有标记样本数据,在每个视图上都训练一个初始分类器,然后让每个分类器去挑选分类置信度最高的样本并赋予标记,将带有伪标记的样本数据传给另一个分类器去学习更新,迭代到两个分类器都不再变化。
可以看到,要一直考虑置信度是非常耗时的,所以在算法中使用了未标记样本缓冲池。
13.6 半监督聚类
前面说到的方法都是根据无标记样本来辅助监督学习,从而提高学习器 泛化性能的训练过程;而半监督聚类则是借助已有的监督信息来辅助聚类的过程。聚类任务中的监督信息大致分两种:
- 必连/务连约束:就是样本必属于同一个簇或者必不属于同一个簇
- 有标记样本:少量带有真实标记的样本
下面主要介绍两种基于半监督的 K-Means 聚类算法:第一种是数据集合中包含一些必连和勿连关系;另一种包含少量的标记样本(对应上面的监督信息)。
其实这两种算法的思想都很简单:对于带有约束关系的K-均值算法(约束K均值算法),在迭代过程中对每个样本划分类簇时,需要检测当前划分是否满足约束关系,若不满足则会将样本划分到距离次小对应的簇中,再继续检测是否满足约束关系(退而求其次),如此,知道完成所有样本的划分。
对于带有少量标记样本的k-均值算法,则可以利用这些有标记样本进行类中心指定,同时在对样本进行划分时,不需要改变这些有标记样本的隶属度关系,直接将其划分到对应类簇即可。