本文主要就是随便谈谈自身对半监督算法的理解,这里主要谈半监督分类。
首先是为什么使用半监督学习算法?
一般而言,当训练数据量过少时,监督学习得到的模型效果不能满足需求,因此用半监督学习来增强效果。训练样本少,会导致两个问题,一方面是样本的分布不能真正代表真实数据的分布特征,另一方面是数据量过少不能满足训练学习的要求,“只能remember,不能learn”。这两个原因都会导致训练数据得到的模型会出现不能正确找到真实数据的分类边界问题。半监督学习解决了两个问题,一个是利用现有数据模拟出真实数据在特征空间的分布特点,二是在此基础上确定分类边界,即确定P(X) 和P(Y|X)。
关于半监督学习的算法?
上面提到了半监督学习的目的,因此对应有很多算法,包括半监督SVM,高斯模型,KNN模型等都提供了对应的解决办法。这些算法都有基于相应的假设,给出了相应的办法。比如,KNN在此处就假设最近的K个带标签的样本中样本数量最多的类别就是该样本的类别。半监督SVM则假设分类边界通过的一定是最样本分布最稀疏的部分。。等等,不再细谈。因为以上算法在实际应用中可操作性太低,结果也很难以把控。
基于KNN的有一个标签传播算法,它假设距离样本点最近的数据点的标签就是该样本点的标签,需要经过迭代,每次迭代只赋予一个样本点标签。该算法受离群点和偶然性因素影响太大,效果不佳。
主要谈一下self-trainning 和co-trainning两种算法。
self-trainning的假设是利用现有训练数据得到的模型,对无标签数据进行预测,置信度高的数据更可能被正确赋予了标签,所以可以用于加