基于MLlib的机器学习--聚类

《Spark快速大数据分析》
 
11.5.4 聚类
聚类算法是一种无监督学习任务,用于将对象分到具有高度相似性的聚类中。
监督式学习中的数据都是带标签的,而聚类可以用于无标签的数据。
该算法主要用于数据探索(查看一个数据集是什么样子)以及异常检测(识别
与任意聚类都相距较远的点)。
 
KMeans
MLlib包含聚类中流行的K-Means算法,以及一个叫做K-Means||的变种,可以为
并行环境提供更好的初始化策略。 K-Means||的初始化与K-Means++在配置单节点时
所进行的初始化过程非常相似。
 
k-Means中最重要的参数是生成的聚类中心的目标数量K。事实上,几乎不可能提前知道
聚类的真实数量,所以最佳实践是尝试几个不同的K值,直到聚类内部平均距离不再显著下降为止。
然而算法一次只能接受一个K值。除了K值外,MLlib中的K-means还接收以下几个参数:
  initializationMode
     用来初始化聚类中心的方法,可以是"k-means||"或者"random",默认k-means||,一般会
     带来更好的结果,但是开销也会稍高一些。
   maxIterations
     运行的最大迭代次数,默认值100
   runs
     算法并发运行的数目。MLlib的K-means算法支持从多个起点并发执行,然后选择最佳结果,
     这也是获取较好的整体模型的一种不错的方法.
和其他算法一样,当要调用K-means算法时,需要创建mllib.clustering.KMeans对象或者调用
KMeans.train。它接收一个Vector组成的RDD作为参数。K-Means返回一个KMeansModel对象,
该对象运行访问其clusterCenters属性(聚类中心,是一个向量的数组)或者调用predict()来对一个新的
向量返回它所属的聚类。perdict()总是返回和该点距离最近的聚类中心。
 

posted on 2015-12-03 18:46  develooop  阅读(319)  评论(0编辑  收藏  举报

导航

AmazingCounters.com