Bootstrap

协同训练算法之co-training

在传统的监督学习中,学习器通过对大量有标记的(labeled)训练例进行学习,从而建立模型用于预测未见示例的标记。这里的“标记”(label)是指示例所对应的输出,在分类问题中标记就是示例的类别。随着数据收集和存储技术的飞速发展,收集大量未标记的(unlabeled)示例已相当容易,而获取大量有标记的示例则相对较为困难,因为获得这些标记可能需要耗费大量的人力物力。如果只使用少量的有标记示例,那么利用它们所训练出的学习系统往往很难具有强泛化能力;另一方面,如果仅使用少量“昂贵的”有标记示例而不利用大量“廉价的”未标记示例,则是对数据资源的极大的浪费。因此,在有标记示例较少时,如何利用大量的未标记示例来改善学习性能已成为当前机器学习研究中最受关注的问题之一。目前,利用未标记示例的主流学习技术主要有三大类,即半监督学习(semi-supervisedlearning)、直推学习(transductive learning)和主动学习(active learning)

今天所介绍的co-training便是半监督学习中的一种。


首先在标记数据集L的x1和x2上训练出两个分类器h1和h2;

从为标记数据集U上随机的选取u个示例放入集合U’中;

循环k次:

用L的X1部分训练出一个分类器h1

用L的X2部分训练出一个分类器h2

用h1对U’中所有元素进行标记,从中选出p个正标记和n个负标记

用h2对U’中所有元素进行标记,从中选出p个正标记和n个负标记

将上面选出的2p+2n个标记加入L中

随机从U中选取2p+2n个数据补充到U’中


解释几点:

1.x1,x2是训练集的两个视图,什么意思,就是说一个训练集可以从两个角度对他进行分类,这两个角度就是两个视图

2.关于p个正标记和n个负标记 ,上图的co-training算法是针对二分类的,所以类别只有两种,即对第一类选取p个,第二类选取n个(p和n可以相等可以不等,p+n小于等于U’中元素个数即可)【若是四分类,便第一类选取p1,第二类选取p2,第三类选取p3,第四类选取p4个····】

3.h1预测结果中选出的p+n个标记加入到x2中,h2预测结果中选出的p+n个标记加入到h1中,这时候就有了新的x1,x2,再训练出新的两个分类器,再标记挑选,反复迭代k次后,我们得到两个最终的分类器C1,C2.

用C1,C2对测试集进行预测,计算正确率。

一个co-training算法便结束。

matlab 代码示例:

http://download.csdn.net/detail/qq_35994754/9874224

;