机器学习 学习记录六
本篇博客将介绍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数据用
①初始化相关参数
②计算所有的Unlabeled Data的属于
③
重复②③步骤
2.Low-Density Separation
①使用已经有Label的数据先进行训练
②将没有Label的数据带到已经训练好的模型,考察每个数据的分类
③将一部分Unlabeled Data加入到Labeled Data,重复之前步骤
这里提一下我们训练时候所要用到的损失函数,下面的损失函数经常被用到
其中
这里请读者思考为什么要设定这样的损失函数
3.Smoothness Assumption
下面这张图生动形象地表现了这种假设:
这种假设的大致意思就是说,如果两组数据周边有密度很高的数据,当两组数据之间没有跨过低密度数据区的时候,就认为两组数据是同一类。就像
基于这种假设,我们可以对Unlabeled数据进行分簇。
下面介绍分簇方法–基于图的方法
就是将这些Unlabeled数据连成图
连成图的方法有两种方法:
(1)K Nearest Neighbor
(2)e-Neighborhood
K Nearest Neighbor指的就是将所有的数据当作图的节点,将一个节点同它K个离它最近的节点连在一起
e-Neighborhood就是指将节点同离它距离小于e的节点相连
我们将图路径上的权重定义如下:
那如何去衡量一个图的Smooth程度呢
我们将一个图的光滑程度定义如下:
我们训练时候所用到的损失函数定义如下:
上面的光滑程度函数,y和L还没有解释,下面的是y和L的具体形式:
其中W是权重矩阵,D仅有对角线有值