聚类

聚类

把一堆对象分类,使每个类内的对象距离最小,每个类之间的距离最大。

聚类与分类的区别

分类中,有两堆数据,一堆是用来训练的,一堆是用来测试的。就像是一群学生,先教授知识,之后再考试,看这群学生掌握了多少,以此来评估这个教授方式如何?

聚类中,就是给你一堆数据,你不知道这堆数据一共分为几类,然后,你通过反复试验,把这堆数据一堆堆分开,就像是一群学生,你要把这群学生进行分类,你可以根据他们坐的位置,或者是性格等,就把这些人分开了。(当然,有时候我们为了看该聚类算法的效果,也会知道这些数据的标记是什么,所以这其实跟分类也有共同点)

聚类的方式

有两种聚类方式,一种是Partitional Clustering,就是说另一种是Hierarchical Clustering。不解释,下图说明问题。

 


 

Partitional Clustering

K-means算法介绍

1、在n个中,选取k个作为类中心,把其他n-k个对象进行归类,归类的方法就是看这些对象离那个中心近,就把这个归为哪一类

2、更新类中心,再重复上一步骤,直到均方差收敛位置,更新方法就是把每个类的各个对象求下平均作为该类的中心

K-means算法的局限

1、k如何选定,就是说类的个数如何确定?

2、点如何选定,有可能选取的是离群点

3、K-means算法中,默认对象的分布情况是球状的

4、每个类的对象是不同数量级别的,用标准差来衡量的话,效果可想而知

5、每个类的对象是不同密度级,也会有以上问题

K-means算法的一些改进(与上对应)

1、首先自己得有个估计,确定一个大致范围,再多做几次,比较效果,因此聚类中研究的方法很多,也很灵活

2、可以使用二分K-means,该算法是选取两个点,去均值,从某种程度上能解决离群点的问题

3、这个,我觉得除了定义距离之外,还可以定义联通性或者粘合度来判断,这些对象是否属于同一类

4、可以多选几个类中心,得到类的数量大于k,再进行合并。


 

 

 

posted on 2013-06-02 10:53  MrMission  阅读(276)  评论(0编辑  收藏  举报