在只有少量标记样本,大部分数据都是无标记的情况下,可以通过半监督学习方法,基于无标记样本与标记样本之间的相似度、无标记样本潜在的分布两个核心思想,对无标记的样本进行标记
1、半监督学习种类
1.1 生成式方法
样本数据分为标记样本和未标记样本,按照统计的观点,对于每一个样本的产生,其背后都有一个生成模型,在无监督学习中,数据是无标记的,通过参数估计的方法得到数据的生成模型,这种方法准确性较差,原因如下,下图中的数据被水平分割为两类,两类数据显然并不是高斯分布,如果用两个高斯分布拟合数据,会得到右图的分布结果,导致分类的准确度很差。
我们知道一个概率分布有两个分别组成,但我们也不能明确知道到底是哪两个分布,如下图所示。下图中的两种分布组合都可以组成最上方的分布。
半监督学习可以先运用有标记的样本确定生成模型的参数,再通过模型标记无标记样本,更新模型参数,不断迭代调优。
1.2 主动学习
首先利用有标记的样本训练分类器,运用分类器选出置信度低的样本,让专家对置信度低的样本进行标记,将标记后的样本加入训练样本对分类器进行迭代调优。
1.3 协同训练(基于分歧的方法)
协同训练需要大量的样本,协同训练训练多个模型,让每个模型去挑选最优把握的样本,作为其他模型的训练样本,这个互相学习、共同进步的过程不断迭代,直至两个分裂期不再变化。不同的视图、不同的数据、不同的算法、不同的参数都是产生差异的渠道。协同训练可以通过将样本集拆分成不同的子样本集,分别在子样本集上训练模型,会产生多个模型;也可以对样本集建立不同的分类模型,通过各个模型决定样本的置信度,类似集成学习。
1.4 标签传播(图半监督学习)
标签传播方法的流程
构建相似矩阵W,相似矩阵构建可参考相似矩阵构建
1.5 半监督聚类
有标记样本提供了两类监督信息,必连和勿连,当两个样本属于一个类簇,则他们的关系是必连,当两个样本不属于一个类簇,则他们的关系是勿连。半监督聚类有两种类型,一种是聚类过程中保持样本间的必连和勿连关系,另一种是将有标记的样本作为种子,用他们初始化聚类中心。
2、scikit-learn 半监督学习
scikit-learn提供了两个标签传播模型:LabelPropagation and LabelSpreading.
LabelPropagation不改变有标记数据的原始标记
LabelSpreadind可以一定比例的改变有标记数据的原始标记,最小化一个带有正规项的损失函数,对噪声鲁棒。
3、半监督学习方法的不足
- 通过半监督学习方法,利用未标记数据,有时不仅不能提高泛化能力,反而会导致性能下降
- 在模型假设不符合真是情况,或者标记样本与无标记样本差异较大时,会导致性能下降
- 随着训练的不断进行,自动标记的样本噪音会不断积累,模型性能可能不断下降