本篇博客将介绍Semi-Supervised Learning的实现方法
介绍:
之前我们所介绍的机器学习所提到的数据都是带有Label的。而现实是,搜集这些带有Label的数据并不是一件简单的事情,但是搜集一些不带有Label的数据就要容易很多。Semi-Supervised Learning指的是就是在利用一些带有Label和一些不带有Label的数据进行机器学习。
图片引用自李宏毅(台湾大学)机器学习
Why Semi-Supervised Learning Helps?
对于上图的带有label的数据,我们很容易将其分开,那如果加入一些不带有label的数据呢?
原创图片
好像加入这些Unlabeled Data之后,依旧可以用一条线将数据分类,当然这样的分类带有一定我们自己的假设,上图的分类方式是一种可能性比较大的分类方式,那这样的话,我甚至可以做下面的假设
原创图片
上图的假设好像也没有什么不合理的地方。
那既然两种假设都很合理,我们如何确定到底是哪种分类方式比较优秀呢,下面我们就要介绍一些处理Semi-Supervised Learning的方法。
1.Semi-supervised Generative Model
我们在之前提到过数据的高斯分布以及最大似然估计还有最大似然估计时用到的贝叶斯公式,在这里的Generative Model也是参考Supervised Learning所用到的Generative方法。我们首先将我们手里的数据分开,分成已经有Label的和还未被Label的,这样对于已经有Label的我们可以使用之前提过的Generative Model来获取其最大似然估计的相关参数,而且我们手里的没有Label的数据似乎可以帮我们继续优化这个模型。
所以,这种方法的一般步骤如下:
假定我们有一把数据,这组数据有一些Labeled数据,一些Unlabeled数据,Labeled数据用 xr 表示,Unlabeled数据用 xu 表示(注意这里的 xr,xu 都是一种广义上的表示方式,并不是表示某一个特定的数据向量)
①初始化相关参数 θ={
P(C1),P(C2),μ1,μ2,Σ}
②计算所有的Unlabeled Data的属于 C1 的概率:
③