美文网首页
(7)聚类算法

(7)聚类算法

作者: 顽皮的石头7788121 | 来源:发表于2019-03-07 10:01 被阅读0次

    (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]

    相关文章

      网友评论

          本文标题:(7)聚类算法

          本文链接:https://www.haomeiwen.com/subject/ktvtpqtx.html