Andrew Ng 机器学习笔记(八)

简介

聚类分析是一种重要的人类行为,早在孩提时代,一个人就通过不断改进下意识中的聚类模式来学会如何区分猫狗、动物植物。目前在许多领域都得到了广泛的研究和成功的应用,如用于模式识别、数据分析、图像处理、市场研究、客户分割、Web文档分类等。
聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。
聚类技术正在蓬勃发展,对此有贡献的研究领域包括数据挖掘、统计学、机器学习、空间数据库技术、生物学以及市场营销等。各种聚类方法也被不断提出和改进,而不同的方法适合于不同类型的数据,因此对各种聚类方法、聚类效果的比较成为值得研究的课题。

主要内容

clustering

Unsupervised learning introduction

监督学习就是处理有标签的数据,无监督学习就是处理没有标签的数据。聚类算法一般可以用来做市场分割、了解星系的形成、分析朋友的亲密度等。

K-means algorithm

K-means算法是现在使用比较广泛的一种算法。

在这里插入图片描述

K-means算法就是将没有标签的数据,如上图中绿色的点分成两类,这个时候,我们需要选择两个数据参考点,把这两个点叫做聚类中心。然后我们将遍历图中所有绿色的点,找出这些点分别距离红色的聚类中心与距离绿色的聚类中心的距离,然后按照距离的大小将这些点分为不同的两类。如:与红色的聚类中心距离比与蓝色聚类中心的距离短,那么九就将这个点归为红色,分类的结果如下图所示。
在这里插入图片描述
在这里插入图片描述
上图所示的为执行下一个步骤之后得到的结果图形,即移动聚类中心。将所有红色点的均值点的位置算出来,将所有蓝色点的均值点的位置也算出来。然后将红色的聚类中心移动到红色的点的均值点的位置,蓝色的聚类中心同理。
之后,我们重复上面的步骤,将所有点与聚类中心连线,然后比较距离的长短,然后给这些点重新染色。然后之后的结果如下图。
在这里插入图片描述
然后再计算所有红色点与蓝色点的均值中心点,之后再将聚类中心移动到均值点的位置。如下图。
在这里插入图片描述
之后再进行相同的过程,不断迭代,直到聚类中心不变,并且所有点的颜色不会发生变化为止。
在这里插入图片描述
K-means算法的输入有两个,一个是 K K K,就是你想从这些数据里面得到的簇数,也就是你想把数据分为的类别的种类数。另一个是没有被贴上标签的只有 x x x没有 y y y的一组数据。规定 x i x_i xi是一个n维的向量,按照惯例,令 x 0 = 1 x_0=1 x0=1
第一步:随机初始化K个聚类中心,记作 μ 1 , μ 2 , … , μ k , μ_1,μ_2,…,μ_k, μ1,μ2,,μk,这些数据对应于之前图中红色的×与蓝色的×
在这里插入图片描述
遍历所有的m个点, C ( i ) C^{(i)} C(i)表示这些点与聚类中心的距离是多少,是更加接近于哪一个聚类中心点。 C ( i ) C^{(i)} C(i)也可以等与上图中min的那一串式子,也就是这些点到聚类中心点的欧氏距离最小值,就将这些点归为这一类点。接下来再移动聚类中心点,将聚类中心移动到已经归类的点的均值点的位置。具体算法如上图所示。有些时候,有的聚类中心没有点归给它,这种情况下,我们一般就会直接移除这个聚类中心,但是这样的话,我们将会从想得到的 K K K个簇变为只能得到 K − 1 K-1 K1个簇了,如果我们还想要得到 K K K个簇,那么我们可以选择重新找一个聚类中心,然后进行迭代。但是一般来说,直接删除那个没有给分配任何点的聚类中心是更为常见的。
在这里插入图片描述
如上图所示,左边的图是很好分类的类型,然而我们一般用K-means算法分类的都是右边的图形,最后我们可以根据实际情况,然后结合算法,将数据分为上面画圈的三类。

Optimization objective

在这里插入图片描述
根据上一节的内容,很容易得到下图的优化算法,找到J的最小值是我们的目标。
在这里插入图片描述
第一步,还是和上面的算法差不多,找到离聚类中心距离最小的点,也就是最小化J函数,接下来,还是移动中心点。

Random initialization

在这里插入图片描述
首先,要有K个聚类, K &lt; m K&lt;m K<m,然后随机选择K个训练样例,让 μ 1 , μ 2 , … , μ k μ_1,μ_2,…,μ_k μ1,μ2,,μk等于这些K个样本假设 K = 2 K=2 K=2,然后选择两个个聚类中心。如上图所示,两个聚类中心都是所选择的训练样本的位置。所以,用K-means算法得到的簇最后可能会不一样,这取决于你聚类簇的初始化的方法,比如说上图中的两个图中,初始化方法不一样,最后得到的聚类簇就会不一样。
在这里插入图片描述
例如上图所示的最左边的那张图片,我们很容易看出可以将数据分为三个聚类,然后得到右上方的图片,得到的是全局最优解但是,如果我们的聚类簇初始化的方法没有选择恰当的话,那么我们很有可能得到下方的聚类簇结果,可以的到局部的最优解。所以,如果我们想要用K-means算法来得到全局的最优解,那么我们可以尝试多次采用不同的方式初始化数据,而不是仅仅只用一次初始化数据的结果。也就是说初始化K值很多次而不仅仅是初始化 K K K值一次就取得结果。
在这里插入图片描述
随机初始化K的算法如上图所示,最后会得到很多个聚类结果,我们只需要选择能够使得代价函数最小的那一个结果就行了,这种方法用于循环次数比较少的时候效果会比较好。

Choosing the number of clusters

本节主要讨论了怎么选择类别数目或者说如何去选择参数K的值。现在比较常见的就是人为手动选择K聚类的个数。选择聚类的个数不容易是因为通常在数据集中,有多少个聚类是不清楚的。比如给你一组数据,你可能会直观的认为这组数据有两个聚类,也就是说 K = 2 K=2 K=2,也可能会认为,这组数据有4个聚类,也就是说 K = 4 K=4 K=4,所以,对于一组数据来说,正确答案不一定只有一个。这也是无监督学习的一个特征,对于一组没有标记的数据,你可能会有多种分类的方式,而这些方式可能都是正确的。

在这里插入图片描述
上图所示为肘部法则,如上图左边的图形所示,我们可以找到一个肘部的拐点,这个点是下降迅速与下降平缓的分界点,那么,我们可以认为 K = 3 K=3 K=3是正确的聚类数,但是一般来说,我们采用这种方法会得到右边的图形,分界点并不明显,你可以认为 K = 3 , 4 , 5 , 6 K=3,4,5,6 K=3,4,5,6等,所以,肘部法则一般来说并不常用,我们一般使用这个法则来解决特定的问题。
在这里插入图片描述
选择参数还和你的目的有关,如上图所示的分类T恤大小。这也就是说,我们可以根据我们想要得到的结果来选择 K K K的值。

参考链接

http://www.cnblogs.com/William_Fire/archive/2013/02/09/2909499.html
http://blog.csdn.net/liang_wen_bo/article/details/8894476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值