K-means聚类算法及其改进家族简介

k-means家族算法中用的较多的有:k-means ,k-medoids,k-medians ,k-means++,k-modes,k-prototype  他们各自的简单介绍为:

k-means:

最小化下面的目标函授

                                   

也就是将点集分成K个类,首选选择初始的K个质心,和K个类对应,然后       

1.每次将每个点分配到距离其最近的质心所对应的类,

2.然后求每个类当前点集的算术均值作为每个类新的质心。

重复12直到收敛。

k-medoids

k-means唯一不同在于,k-medoids中每个类的质心定义为本类当前点集中与本类所有其他点距离之和最小的那个点,而不是类成员们的算术均值。

k-medians

也是k-means的简单改进,唯一不同在于用当前类点集的中位数代替算术均值作为类的质心。但是需要特别注意的是中位数的计算是针对每维的。

k-means++

因为k-means中初始质心的选取对结果的影响很大,而这种算法给出了一种优化的初始质心选取方法,他选取k个初始质心的方法为:

1.首先在所有点中任意选择一个点作为第一个质心。

2.现在假设有m个质心,那么计算剩余每个点与已有的m个质心相距最近的那个质心之间的距离D(x),然后从这些剩余点中随机选择一个新质心,被选中的概率为D2(x)

重复2直到选够k个质心。然后就开始执行k-means 算法。

k-modes

k-means 算法通常采用欧式距离做为距离度量从而不适合拥有离散属性的点集。k-modes可以用于属性全是离散的场合,其两个点之间的距离为hamming距离(相同为0,不同为1)。而一个类的质心的每个维度是本类成员中相应维度出现频率最大的那个值。

k-prototype 

k-means适合于每个维度都是连续属性的场合,而k-modes适用于每个维度都是离散的场合,当有的维度是连续属性,有的维度是离散属性的时候,可以用k-prototype 中度量距离的方法为:连续属性采用欧式距离,离散属性采用hamming距离,然后两张距离的加权就是最后的距离。

猜你喜欢

转载自blog.csdn.net/wjj547670933/article/details/44220691