K-Means聚类-基于人脸数据实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学与计算机学院
课程名称: 模式识别
题目: K-Means聚类-基于人脸数据实现任课老师: 王晓明
年级专业: 2011级计算机应用技术
姓名:
学号:
时间:2011 年11月12日
目录
一K-means聚类介绍 (2)
二K-means算法描述 (3)
三K-means算法matlab实现-基于人脸数据实现 (7)
1 数据读入 (7)
2 算法运行结果 (8)
四K-means算法的总结和心得 (9)
五附录——核心算法的主要源代码 (10)
参考文献 (13)
K-Means聚类
一K-means聚类介绍
1967年,J.B.MacQueen提出了K-means算法,是一种基于质心的经典聚类算法。
他总结了Cox、Fisher、Sebestyen等的研究成果,给出了K-means 算法的详细步骤,并用数学方法进行了证明。
由于K-means算法易于描述,具有时间效率高且适于处理大规模数据等优点,自20世纪70年代以来,该算法在国内外已经被应用到包括自然语言处理、土壤、考古等众多领域。
K-means算法是很典型的基于距离的聚类算法,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。
该算法认为簇是由距离靠近的对象组成的,因此把得到紧凑且独立的簇作为最终目标。
k个初始类聚类中心点的选取对聚类结果具有较大的影响,因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇。
该算法在每次迭代中对数据集中剩余的每个对象,根据其与各个簇中心的距离将每个对象重新赋给最近的簇。
当考察完所有数据对象后,一次迭代运算完成,新的聚类中心被计算出来。
如果在一次迭代前后,J的值没有发生变化,说明算法已经收敛。
其算法过程如下:
1)从N个文档随机选取K个文档作为质心
2)对剩余的每个文档测量其到每个质心的距离,并把它归到最近的质心的类
3)重新计算已经得到的各个类的质心
4)迭代2~3步直至新的质心与原质心相等或小于指定阈值,算法结束
该算法通常都采用均方差作标准测度函数。
所产生的C个聚类有各聚类本身尽可能的紧凑而各聚类之间尽可能的分开的特点。
这一算法不适合处理离散型属性,但是对于连续型具有较好的聚类效果。
对于以上的说法,首先要知道K的值,也就是说C是手动设置得到,至于如何选择质心,最简单的方式无异于,随机选取质心了,然后多次运行,选取效果最好的那个结果。
这个方法简单但不见得有效,有很大的可能是得到局部最优。
另一种复杂的方式时,随机选取一个质心,然后计算离这个质心最远的样本点,对于每个后继质心都选取以及选去过的最远点。
使用这种方式,可以确保质心是随机的,并且是散开的。
然后是如何定义最近的概念,对于欧式空间中的点,可以使用欧式空间,对于文档可以用余弦相似性等等,对于给定的数据,可能适应于多种合适的邻近性度量。
至于其他问题,有离群点的处理。
离群点可能过度影响簇的发现,导致簇的最终发布会于我们的预想有较大的出入,所以提前发现并剔除离群点是有不要的。
还有簇分裂和簇合并,使用较大的C,往往会使得聚类的结果看上去更加合理,但很多情况下,我们并不想增加簇的个数。
这时可以交替采用簇分裂和簇合并,这种方式可以避开局部极小,并且能够得到具有期望个数簇的结果。
二K-means算法描述,类间独立
1算法描述
K-means算法是一种很常用的聚类算法,其基本思想是,通过迭代寻找c个聚类的一种划分方案,使得用这c个聚类的均值来代表相应各类样本时所得到的总体误差最小。
从上图中,我们可以看到,A,B,C,D,E是五个在图中点。
而灰色的点是我们的种子点,
也就是我们用来找点群的点。
有两个种子点,所以K=2。
然后,K-Means的算法如下:
1随机在图中取K(这里K=2)个种子点。
2然后对图中的所有点求到这K个种子点的距离,假如点Pi离种子点Si最近,那么Pi属于Si点群。
(上图中,我们可以看到A,B属于上面的种子点,C,D,E属于下面中部的种子点)
3接下来,我们要移动种子点到属于他的“点群”的中心。
(见图上的第三步)
4然后重复第2)和第3)步,直到,种子点没有移动(我们可以看到图中的第四步上面的种子点聚合了A,B,C,下面的种子点聚合了D,E)。
这个算法很简单,但是有些细节我要提一下,求距离的公式我不说了,大家有初中毕业水平
的人都应该知道怎么算的。
我重点想说一下“求点群中心的算法”。