Hierarchical Clustering 理解

Hierarchical Clustering 算法又简称HAC分类算法。

这个算法其实很简单,与Kmeans相比,甚至没有自己的目标函数。

HAC算法有两个思路:

从上往下,和从下往上。什么意思呢?

从上往下就是我们起初先吧所有的数据看做是一个类,然后慢慢的分解,就是先分成2个类,在三个类,最后,每个元素都是一个类,最终生成一个树的结构。

从下往上就正好相反,起初每个元素是一个类,然后一步步向上,指导所有的元素都分到了一个类为止。


具体怎么分类,方法就比较多了,大家这里其实可以看出来,这个分类的方法是计算相似度。

类中有一个元素的时候,也就是我们说的最低层,每个元素是一个类的时候,我们可以计算元素的相似度。

当每个类中有好多元素的时候,方法就比较多了,我们可以计算集合中最近的两个点作为两个集合的距离。

也可以取两个集合中距离最远的两个点作为两个集合的距离。

还可以将两个集合中的两两距离加权区平均,得到加权后的值,作为两个类的距离。

然后可以用最近邻或者贪心去一层一层的去分类,直到结束。


至于算法的复杂度,这个主要是看你在不在乎了。

http://isilic.iteye.com/blog/1825902

上面的博客中讲了算法复杂度的问题,有兴趣的同学可以看看。


这里给出一个HAC算法的matlab程序:

%HAC clustering 
%JSON_nie

x = rand(5,10);
y = pdist(x);
z = linkage(y);
dendrogram(z); %show the z as the tree style

t = cluster(z,'maxclust',3);

这里用了matlab中的cluster的toolbox,所以代码很简单。首先我们用pdist去计算元素间 的相似度,或者是距离,然后linkage可以生成tree的形式

dendrogram可以可视化tree的形式。

最后我们用cluster去得到最后的分类结果。这里3是我们指定的最的大分类数。


参考:http://www.mathworks.cn/cn/help/stats/hierarchical-clustering.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值