Welcome

首页 / 软件开发 / 数据结构与算法 / Mahout系列:canopy 算法

Mahout系列:canopy 算法2014-04-24 csdn博客 yueyedeaiCanopy 算法,流程简单,容易实现,一下是算法

(1)设样本集合为S,确定两个阈值t1和t2,且t1>t2。

(2)任取一个样本点p属于S,作为一个Canopy,记为C,从S中移除p。

(3)计算S中所有点到p的距离dist

(4)若dist<t1,则将相应点归到C,作为弱关联。

(5)若dist<t2,则将相应点移出S,作为强关联。

(6)重复(2)~(5),直至S为空。

上面的过程可以看出,dist<t2的点属于有且仅有一个簇,t2<dist<t1 的点可能属于多 个簇。可见Canopy是一种软聚类。

Canopy有消除孤立点的作用,而K-means在这方面却无能为力。建立canopies之后,可以删除那些 包含数据点数目较少的canopy,往往这些canopy是包含孤立点的。根据canopy内点的数目,来决定聚类 中心数目k,这样效果比较好。

Canopy 聚类结果如下图:

Mahout canopy 聚类流程如下:

(1)将文本向量化。

在文档向量化之前,需要将出于一个目录中的文档序列化,所谓序列化就是将文档内容写成 SequenceFile 格式,key:文档标题 ,value:文档内容。

该过程将文本分词,计算ngram ,特征抽取,生成字典,计算特征权重生成文档词矩阵。

值得说明的是该过程可以由其他的方法替代,不仅限于用Mahout ,只要能生成向量即可。