canopy算法流程_【聚类】— Canopy算法

Canopy一般用在K均值之前的粗聚类。考虑到K均值在使用上必须要确定K的大小,而往往数据集预先不能确定K的值大小的,这样如果K取的不合理会带来K均值的误差很大(也就是说K均值对噪声的抗干扰能力较差)。总之基于以下三种原因,选择利用Canopy聚类做为Kmeans的前奏比较科学、也是Canopy的优点。

Canopy的优点:

1、Kmeans对噪声抗干扰较弱,通过Canopy对比较小的NumPoint的Cluster直接去掉 有利于抗干扰。

2、Canopy选择出来的每个Canopy的centerPoint作为Kmeans比较科学。

3、只是针对每个Canopy的内容做Kmeans聚类,减少相似计算的数量。

Canopy的缺点:算法中 T1、T2(T2 < T1) 的确定问题 (在并行计算上Maper的T1、T2 可以和Raduce的T1、T2不同)

Canopy的关键是以下公式:

S0 表示Canopy包含点的权重之和

S1 表示各点的加权和

S2 表示各点平方的加权和

聚类分析的抽象是计算: NumPoint、Radius、Center、(其中 Radius、Center 均是N维向量)

计算公式推导如下:

NumPoint  =  S0

Center       =  S1/S0

Radius      =   Sqrt(S2*S0-S1*S1)/S0 推导过程如下:

,其中

,其中

单机版Canopy算法:

1、从PointList中取一个Point ,寻找已经建立好的Canopy 计算这个点于所有的Canopy的距离。如果和某一个Canopy的距离小于T1,                           则把这个点加到Canopy中,如果没有Canopy则选择这个点为一个Canopy的中心。

2、如果这个店Point和某个Canopy的距离小于T2,则把这个点从PointList中删除(这个点以后做不了其他的Canopy的中心了)。

3、循环直到所有的Point都被加入进来,然后计算各个Canopy的Center和Radius。

模型MapReduce版本:

1、把数据整理成SequcnceFile格式(Mahout-InputMapper)作为初始化文件PointFile

2、CanopyMapper阶段本机聚成小的Canopy 中间文件写成SequenceFile 这一步的T1、T2 和Reduce的T1、T2可以是不同的( index、Canpy)

3、所有的Mapper阶段的输出到1个Reducer中 然后Reduce把Map阶段中的Center点再次做聚类算法。聚出全局的Canopy。同时计算每个Canopy的CenterPoint点。写到临时文件CenterPoint中。

4、针对全集合PointFile在CenterPoint上的findClosestCanopy操作(通过传入的距离算法)。然后输出一个SequenceFile。

有2个问题不知道如何答案:

1、T1、T2 的选择(我需要采样计算出吗?)

2、如何和Kmeans结合?(只在Canopy内做K均值是什么意思呢?)

个人理解而已。望读者不吝赐教。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值