机器学习(层次聚类)

来源:互联网 发布:prinker纹身机 淘宝 编辑:程序博客网 时间:2024/06/08 19:27

假设有N个待聚类的样本,对于层次聚类来说,步骤:

1.(初始化)把每个样本归为一类,计算每两个类之间的距离,也就是样本与样本值之间的相似度;

2.寻找各个类之间最近的两个类,把他们归为一类(这样类的总数就少了一个);

3.重新计算新生成的这个类与各个旧类之间的相似度;

4.重复2和3直到所有样本点都归为一类,结束。

这里写图片描述

整个聚类过程其实是建立了一棵树,在建立过程中,可以通过在第二步设置一个阈值,当最近的两个类的距离大于这个阈值,则认为迭代可以终止,另外关键的一步就是第三步,如何判断两个类之间的相似度有不少种方法,这里介绍以下三种:

SingleLinkage:又叫做nearest-neighbor,就是取两个类中距离最近的两个样本的距离作为这两个集合的距离,也就是说,最近的两个样本之间的距离越小,这两个类之间的相似度就越大。容易造成一种叫Chaining的效果,两个聚类命名从整体上看距离很远,但是由于其中个别的点距离比较近就被合并了,并且这样合并之后Chaining效应会进一步扩大,最后会得到比较松散的聚类。

CompleteLinkage:这个则完全是SingleLinkage的反面极端,取两个集合中距离最远的两个点的距离作为两个集合的距离,其效果也是刚好相反,限制非常大,两个聚类即使已经很接近了,但是只有有不配合的点存在,就顽固到底,老死不相合并,也不是太好的办法,这两种相似度的定义方法的共同问题就是只考虑了某个特点的数据,而没有考虑类内数据的整体特点。

Average-linkage:这种方法就是把两个集合中的点两两的距离全部放在一起求一个平均值,相对也你能得到适合一点的结果。

Average-linkage的一个变种就是取两两距离的中值,与取均值相比更加能够解除个别偏离样本对结果的干扰。

阅读全文
0 0