聚类划分:
(1)划分聚类 k-means、k-medoids、k-modes、k-medians、kernel k-means
(2)层次聚类 Agglomerative 、divisive、BIRCH、ROCK、Chameleon
(3)密度聚类 DBSCAN、OPTICS
(4)网格聚类 STING
(5)模型聚类 GMM
(6)图聚类 Spectral Clustering(谱聚类)
k-medoids:它到其他所有(当前cluster中的)点的距离之和(sqrt)最小——作为中心点
k-modes:分类属性型数据的采用的聚类算法,采用差异度来代替k-means算法中的距离
k-medians:它到其他所有(当前cluster中的)点的距离之和最小——作为中心点
Agglomerative:自底向上,层次聚类
Divisive: 自顶向下,层次聚类
DBSCAN:
GMM:对于每个类假定一个分布模型,试图找到每个类最好的模型
Spectral Clustering:用特征向量的元素来表示原来的数据,并在其上进行 K-means
聚类算法教程:
http://scikit-learn.org/stable/auto_examples/index.html#clustering
http://www.zhihu.com/question/34554321?sort=created
常见几个:k-means、层次聚类、混合高斯(GMM)、谱聚类
计算相似度:余弦相似度、jaccard、编辑距离
k-means:
1、 选取n个中心点
2、 计算每个点与上述n个点的距离,将其划分到最近一个点
3、 重新计算中心点
4、 重复2-3
问题:n值得选取(1选择彼此距离尽可能远的K个点 2先对数据用层次聚类算法或者Canopy算法进行聚类,得到K个簇之后,从每个类簇中选择一个点,该点可以是该类簇的中心点,或者是距离类簇中心点最近的那个点。),怎样重新计算中心点(均值)
层次聚类:(凝聚的层次聚类、分裂的层次聚类)
1、将每个对象归为一类, 共得到N类, 每类仅包含一个对象. 类与类之间的距离就是它们所包含的对象之间的距离.
2、 找到最接近的两个类并合并成一类, 于是总的类数少了一个.
3、 重新计算新的类与所有旧类之间的距离.
4、重复第2步和第3步, 直到最后合并成一个类为止(此类包含了N个对象).
问题:每次都要找两两最近吗?怎样合并两个类?(一般是计算所有簇的中心之间的距离)