聚类
聚类
把一堆对象分类,使每个类内的对象距离最小,每个类之间的距离最大。
聚类与分类的区别
分类中,有两堆数据,一堆是用来训练的,一堆是用来测试的。就像是一群学生,先教授知识,之后再考试,看这群学生掌握了多少,以此来评估这个教授方式如何?
聚类中,就是给你一堆数据,你不知道这堆数据一共分为几类,然后,你通过反复试验,把这堆数据一堆堆分开,就像是一群学生,你要把这群学生进行分类,你可以根据他们坐的位置,或者是性格等,就把这些人分开了。(当然,有时候我们为了看该聚类算法的效果,也会知道这些数据的标记是什么,所以这其实跟分类也有共同点)
聚类的方式
有两种聚类方式,一种是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,再进行合并。