吴恩达机器学习笔记之无监督学习

无监督学习:

和监督学习相比,无监督学习的数据集是没有标签的。所谓没有标签的意识就是我们对数据一无所知,但是要借助一些算法试着帮我们寻找到数据的某些结构特性。聚类(CLustering)算法是我们要学习的第一个无监督学习的算法,将我们的数据分成不同的簇。

K-means算法:

假设我们有下图所示的数据集:

           

K-means算法是一个迭代算法。K-means算法的流程是这样的,首先随机选择K个初始点,K代表你想将数据分为几类,如图所示,K=2;然后将数据集中的所有点分别计算与这两个初始点的距离,按照就近分配原则,分配给相应的簇,如下图所示。然后移动我们的初始点,也可以叫做聚类中心,将所有同一类的点相加之后取平均值,然后将我们的聚类中心移动到这个平均值上。如下图所示,如此循环直到收敛。

           

                                                                                  第一次循环的结果

          

                                                                                 第二次循环的结果

                                   收敛的结果

上面的步骤我们可以叫做第一:簇分配(cluster assignment);第二:移动聚类中心(move centroid step)。

计算距离,matlab有一个函数叫做pdist2:

X = [1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12];
Y = [1, 2, 3];
pdist2(X,Y)计算的是欧式距离。
distance = pdist2(X, Y)  % X是a*m维的,Y是b*m维的,得出来的结果是a*b维的。

优化目标:

其中\mu _{c^{(i)}}表示与x^{(i)}最近的聚类中心点,在迭代的过程中,代价函数一定是慢慢下降的,否则就是出现了问题。

随机初始化:

我们应该怎么选择初始化的聚类中心呢,一种推荐的方法是从实例当中选取,比如K=3,则随机从实例当中选取3个点分别作为聚类中心。但是由于随机初始化的原因,K-means算法可能会陷入局部最优解。

避免局部最优解——初始化K-means算法若干次,返回代价函数最小的那个结果。在K较小的时候,比如小于10,多次随机初始化的效果是非常明显的,但是如果K很大的话,多次随机初始化的效果就不那么明显了。

选择聚类数量:

大多数情况下,我们还是人为的选择K值,还有一种叫做手肘法则:

如上图所示:我们可以画出我们的代价函数随着K的变化曲线,选择拐点那个K值,通常是比较好的选择;但是并不是所有的曲线都有拐点,我们碰到的大多数情况是右边的这种情况,那么这样我们的肘部法则就不在那么适用了。

其实大多数情况下,我们使用K-means算法进行聚类分析,和我们的目的都是相对应的,我们的目的能够为我们选择K值提供很好的指引。比如我们下图我们进行衣服的尺寸设计,我们即可以分成3类,也可以分成5类。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值