聚类算法之DIANA

1. 算法描述

DIANA(Divisive ANAlysis)算法属于分裂的层次聚类。与凝聚的层次聚类相反,它采用一种自顶向下的策略,它首先将所有对象置于一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终结条件,例如达到了某个希望的簇数目,或者两个最近簇之间的距离超过了某个闯值。
在 DIANA 方法的处理过程中,所有的对象初始都放在一个簇中。根据一些原则(如簇中最临近对象的最大欧氏距离),将该簇分裂。簇的分裂过程反复进行,直到最终每个新的簇只包含一个对象。

输入:包含n个对象的数据库,终止条件簇的数目k。
输出:k个簇,达到终止条件规定簇数目。
(1)将所有对象整个当成一个初始簇;
(2)FOR (i=1; i≠k; i++) DO BEGIN
(3)在所有簇中挑出具有最大直径的簇C;
(4)找出C中与其它点平均相异度最大的一个点p并把p放入splinter group,剩余的放在old party中;
(5)REPEAT
(6)在old party里找出到最近的splinter group中的点的距离不大于到old party中最近点的距离的点,并将该点加入splinter group。
(7)UNTIL 没有新的old party的点被分配给splinter group;
(8)splinter group和old party为被选中的簇分裂成的两个簇,与其它簇一起组成新的簇集合。
(9)END

2. 算法性能分析

2.1 优点

  1. 简单,理解容易

2.2 缺点

  1. 已做的分裂操作不能撤销
  2. 类之间不能交换对象
  3. 如果在某步没有选择好分裂点,可能会导致低质量的聚类结果
  4. 大数据集不太适用

你可能感兴趣的:(#,数据挖掘与机器学习,聚类,算法)