Mahout kmeans

来源:互联网 发布:上海关键词优化 编辑:程序博客网 时间:2024/05/29 13:31

Kmeans算法

  1. 随机选k个中心(选初心)
  2. 计算集合内任一点n,与k的距离(测心距)
  3. 判断点n属于哪个中心(归簇类)
  4. 重新计算簇内的中心(定新心)
  5. 条件是否满足,如新心和旧心偏差大于阈值,或迭代次数未满,则继续迭代,否则继续第二步。

Kmeans算法流程图

Created with Raphaël 2.1.2开始选初心归簇类定新心条件ok?结束yesno

Canopy算法优化初始值K

Canopy算法

分为两个阶段:
1. stage1:通过快速的粗略的将数据集分为几个有重叠的子集,称为canopies
2. stage2:在同一canopy中进行精准的高耗的距离计算
第一阶段,使用简化的距离定义
第二阶段,是标准的聚类算法,使用严格意义的距离定义

如何获得canopies

设定连个阈值,T1,T2,T1>T2
1. 从集合S中,随机取一个点P,作为一个Canopy集合C
2. 计算集合S内任意点Q与P的距离L
1. L小于T1,则Q加入集合C
2. L小于T2,则Q从S中移除,即认为Q与P很接近,属于C了
3. 重复1直到S集合为空
具体参考:

McCallum, A.; Nigam, K.; and Ungar L.H. (2000) “Efficient Clustering of High Dimensional Data Sets with Application to Reference Matching”

Kmeans in Mahout

算法在两个类中实现:
1. KMeansClusterer:内存中聚类 or the
2. KMeansDriverclass:运行MapReduce job聚类

0 0
原创粉丝点击