层次聚类算法_聚类算法你知道多少

聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。

k-means聚类算法

 k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。

 k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:首先,随机地 选择k个对象,每个对象初始地代表了一个簇的平均值或中心;对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛。通常,采用平方误差准则,其定义如下:

c13bd3bd089056fa3d955d447721675b.png

这里E是数据库中所有对象的平方误差的总和,p是空间中的点,mi是簇Ci的平均值[9]。该目标函数使生成的簇尽可能紧凑独立,使用的距离度量是欧几里得距离,当然也可以用其他距离度量。k-means聚类算法的算法流程如下:

输入:包含n个对象的数据库和簇的数目k;

输出:k个簇,使平方误差准则最小。

步骤:

  (1) 任意选择k个对象作为初始的簇中心;

  (2) repeat;

  (3) 根据簇中对象的平均值,将每个对象(重新)赋予最类似的簇;

  (4) 更新簇的平均值,即计算每个簇中对象的平均值;

  (5) until不再发生变化。

2.2 层次聚类算法

根据层次分解的顺序是自底向上的还是自上向下的,层次聚类算法分为凝聚的层次聚类算法和分裂的层次聚类算法。

 凝聚型层次聚类的策略是先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有对象都在一个簇中,或者某个终结条件被满足。绝大多数层次聚类属于凝聚型层次聚类,它们只是在簇间相似度的定义上有所不同。四种广泛采用的簇间距离度量方法如下:

层次聚类算法_聚类算法你知道多少_第1张图片

这里给出采用最小距离的凝聚层次聚类算法流程:

 (1) 将每个对象看作一类,计算两两之间的最小距离;

 (2) 将距离最小的两个类合并成一个新类;

 (3) 重新计算新类与所有类之间的距离;

 (4) 重复(2)、(3),直到所有类最后合并成一类。

你可能感兴趣的:(层次聚类算法)