层次聚类算法

层次聚类算法是通过将数据组织为若干组并形成一个相应的树来进行聚类。根据层次是自底向上还是自顶向下形成的,层次聚类算法可以进一步分为凝聚型的聚类算法(AGENES)算法和分裂型的聚类(DIANA)算法。一个完全层次聚类的质量由于无法对已经做的合并或分解进行调整而受到影响。但是层次聚类算法没有使用准则函数,它所含的对数据结构的假设更少,所以它的通用性更强。

层次聚类算法_第1张图片
这种自底向上的策略首先将每个对象作为一个簇,然后将这些原子簇合并为越来越大的簇,直到所有的对象都在一个簇中,或者某个终结条件被达到要求。大部分的层次聚类方法都属于一类,它们在簇间的相似度的定义有点不一样。

AGENES算法的核心步骤

输入: K K K(目标类簇数)、 D D D(样本点集合);

输出: K K K个类簇集合。

AGENES算法的具体步骤
\begin{enumerate}
\item [1)] 将 D D D中每个样本点当作其类簇;
\item [2)] 重复第(1)步;
\item [3)] 找到分属两个不同类簇,且距离最近的样本点对;
\item [4)] 将两个类簇合并;
\item [5)] util类簇数= K K K
\end{enumerate}

\subsection*{分裂型的层次聚类}
这种自顶向下的策略与凝望型的层次聚类有些不一样,它首先将所有对象放在一个簇中,然后慢慢地细分为越来越小的簇,直到每个对象自行形成一簇,或者直达满足其他的一个终结条件,例如满足了某个期望的簇数目,又或者两个最近的簇之间的距离达到了某一个阈值。

AGENES算法的核心步骤

输入: K K K(目标类簇数)、 D D D(样本点集合);

输出: K K K个类簇集合。

AGENES算法的具体步骤

  1. D D D中所有样本点归并成类簇;
  2. 重复第(1)步;
  3. 在同类簇中找到距离最远的样本点对;
  4. 以该样本点对为代表,将原类簇中的样本点重新分属到新类簇;
  5. util类簇数= K K K

在凝聚型的层次聚类和分裂型的层次聚类的所有方法中,都需要用户提供希望得到的聚类的单个数量和阈值作为聚类分析的终止条件,但是对于复杂的数据来说,这个是很难事先判定的。尽管层次聚类的方法实现很简单,但是偶尔会遇见合并或分裂点抉择的困难。这样的抉择特别关键,因为只要其中的两个对象被合并或者分裂,接下来的处理将只能在新生成的簇中完成,已形成的处理就不能被撤销,两个聚类之间也不能交换对象。如果在某个阶段没有选择合并或分裂的决策,就会导致质量不高的聚类结果。而且这种聚类方法不具有特别好的可伸缩性,因为它们合并或分裂的决策需要经过检测和估算大量的对象或簇。

层次聚类算法由于要使用距离矩阵,所以它的时间和空间复杂性都很高,几乎不可能在大数据集上使用。层次聚类算法只处理符合某静态模型的簇,忽略了不同簇间的信息,而且忽略了簇间的互连性(互连性是指簇间距离较近数据对的多少)和近似度(近似度是指簇间对数据对的相似度)。

你可能感兴趣的:(算法,数学建模,算法,聚类,机器学习)