k-means, k-medoids and hierarchical clustering
这篇讲几个基本而又流行的clustering methods: k-means, k-medoids, hierarchical clustering。这是几种最基本的clustering method。
K-means
顾名思义,就是希望将所有的数据点分为 k 类,而且这个类别和 mean 非常相关。目标函数即为要使下式目标函数最小:
其中有
上式中没办法获得最优解,所以解k-means都是通过Maxinum Expectation。解法如下:
Initialize: 任意将数据划分为 k 个起始的 cluster。
Step 1: 计算每个cluster 的中心。
Step 2: 将每个点分配到最近的那个cluster 中心点。
Step 3: 如果存在有点改变了所属的cluster,就回到step 1。
由于可能有的情况下,给定的初始 cluster 会让整个程序的结果仅为 local optimum,所以一般会多 run 几遍从中选出最好的 cluster result。
优点:相对高效,O(tkn),n为点的个数,k为cluster的个数,t为循环的个数。
缺点:只适用于 mean 能够被定义的情况下,例如有的情况下无法得到点的坐标。需要提前定义 k。无法处理噪声数据和界外点。不适用与 cluster 为 non-convex 形状的数据。不适用于高维数据。
K-medoids
这个方法专注于 k 个medoid。这个medoid 不再是k-means中的一个虚构的点(求平均获得),这个medoid直接取数据点中的一点。解法如下:
Initialize:任意选择k个数据点作为 k 个medoid。
Step 1:由数据点与 medoid 点之间的距离将数据点分成 k 个cluster。
Step 2:在每个 cluster 中,将其他点与当前的medoid交换。如果得到的该点到其他点距离的和最小,则这个 cluster 的medoid改为新的点。
Step 3:如果存在有cluster 的medoid 改变,就回到step 1。
该方法不需要点的坐标,只需要点直接的相对距离,或者点直接的dissimiliarity。而且,此方法可以很好地处理界外点outlier的问题。
如何选择 k?
方法一:L-curve:
如果 k 并未给出,可以通过考察cluster内距离来Wk考察 k 的选择。通常,Wk随着k的增加而变小。
通过k 和 Wk之间的关系,可以对k进行合适的选择。如果Wk呈L型,则在L型的拐点为最合适的k。
方法二: Gap statistic:
找到让Gap statistic最大的那个k,作为最佳的k。
Hierarchical Clustering:
Single linkage: 两个cluster之间的距离为两 cluster 中元素之间的最小距离。
Complete linkage:两个cluster之间的距离为两 cluster 中元素之间的最大距离。
Average:两个cluster之间的距离为两 cluster 中元素之间的平均距离。
Centroid:两个cluster之间的距离为两 cluster 的centroid 的距离。
Medoid:两个cluster之间的距离为两 cluster 的medoid 的距离。
Hierarchical clustering 有两种形式,一是 agglomerative,一是 divisive。
agglomerative 是指,通过cluster之间距离的定义,从N个数据点N个cluster开始,慢慢地进行cluster之间的融合。
divisive 是指,通过cluster之间距离的定义,从1个cluster开始,逐渐进行分裂。