(7)聚类算法

2019-03-07  本文已影响0人  顽皮的石头7788121

(1)Kmeans算法

        在分布式系统中,通过聚合函数计算属于每个中心点的样本值之和并更新中心点。MLlib中的Kmeans模型中的runs参数表示可以并行设置计算的聚类中心的数量,可同时计算多组聚类中心,最后取效果最好的那一组。

        在计算KMeans中样本点属于哪个聚类中心时,没有采用欧式距离,而是另一种快速查找和计算的方法。lowerBoundOfSqDist = (\sqrt[2]{a_{1}^2+ b_{1}^2} -\sqrt[2]{a_{2}^2+b_{2}^2} )^2 距离公式

        对比欧式距离(a_{1} -a_{2} )^2 +(b_{1} -b_{2} )^2 ,lowerBoundOfSqDist距离值较小。如果lowerBoundOfSqDist都不小于之前得到的最小距离,就不需要比较欧氏距离了,因为欧式距离也不可能小于。如果lowerBoundOfSqDist小于之前的最小距离,调用fastSquaredDistance快速求解。如果不满足精度要求,则使用欧氏距离。

        运行类 KMeans 

        参数 data样本数据;k聚类数量;最大迭代次数;runs 并行计算数;初始化中心,一般为random和k-means++(默认);初始化时的随机种子。k-means++的基本思想是聚类中心的距离尽可能远。

        使用方法

        val model  = new KMeans()

                                    .setInitializationMode(XXX)

                                    .setK(xx)

                                    .setMaxIterations(xxx)

                                    .run(data)

(2)LDA

            LDA 是主题模型,可以将文档集中的每一篇文档的主题以概率的形式给出。同时也是一个典型的词袋模型,每一篇文档由一组词组成。每一个文档可以有多个主题,每个词对于一个主题。

            具体介绍见https://zhuanlan.zhihu.com/p/31470216

            其优化方法为EM算法。

            类方法 val ldaModel  = new LDA()。

            主题分布 val topics = ladmodel.topicmatrix

            文档分布  val distLDAModel - ldaModel.asInstanceOf[DistributedKDAModel]

上一篇下一篇

猜你喜欢

热点阅读