基于Spark ML 聚类分析实战的KMeans

聚类分析是一个无监督学习 (Unsupervised Learning) 过程, 通常是用来对数据对象按照其特征属性进行分组,常常被应用在客户分群,欺诈检测,图像分析等领域。K-means 应该是最有名而且最常用的聚类算法了,其原理比较容易理解,而且聚类效果良好,有着普遍的使用。目前Spark ML支持四种聚类算法,Kmeans, Bisecting k-means(二分k均值算法),GMMs(高斯混合模型),LDA(主题模型算法)。算法

一、K均值(K-means)算法框架

K-means是一个经常使用的聚类算法,将数据点按预约的簇数进行汇集。机器学习

K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。经过迭代的方法,逐次更新各聚类中心的值,直至获得最好的聚类结果。分布式

假设要把样本集分为c个类别,算法描述以下:工具

(1)适当选择c个类的初始中心;学习

(2)在第k次迭代中,对任意一个样本,求其到c个中心的距离,将该样本归到距离最短的中心所在的类;测试

(3)利用均值等方法更新该类的中心值;大数据

(4)对于全部的c个聚类中心,若是利用(2)(3)的迭代法更新后,值保持不变,则迭代结束,不然继续迭代。spa

 使用FEA-spk技术Kmeans的可调参数以下调试

  • k 表示指望的聚类的个数。默认为2

  • maxIter表示方法单次运行最大的迭代次数。默认为20

  • initMode 表示初始聚类中心点的选择方式, 目前支持随机选择或者 K-means||方式默认是 K-means||。

  • initSteps表示 K-means||方法中的部数。默认是5

  • tol表示 K-means 算法迭代收敛的阀值。默认是1e-4

  • seed 表示集群初始化时的随机种子。默认为None

二、使用FEA-spk技术来实现聚类算法

FEA-spk技术,它的底层基于最流行的大数据开发框架spark,对各类算子的操做都是基于DataFrame的,使用FEA-spk来作交互分析,不但很是简单易懂,并且几乎和spark的功能同样强大,更重要的一点,它能够实现可视化,处理的数据规模更大,能够进行分布式的机器学习等。

三、聚类测试数据集简介

在本文中,咱们所用到目标数据集是来自 UCI Machine Learning Repository 的 

Wholesale customer Data Set。UCI 是一个关于机器学习测试数据的下载中心站点,里面包含了适用于作聚类,分群,回归等各类机器学习问题的数据集。Wholesale customer Data Set 是引用某批发经销商的客户在各类类别产品上的年消费数。

四、案例分析和原语实现

本例中,咱们将根据目标客户的消费数据,将每一列视为一个特征指标,对数据集进行聚类分析。具体的步骤以下所示

(1) 建立spk的链接,加载存放在hdfs的CSV数据集

能够看到数据的格式如图所示

(2) 将df表的全部列都转化为double类型

(3) 进行聚类分析

(4) 对模型进行打分,评估这个模型好坏

对参数进行调试的时候,这个值是越小越好

(5) 将训练好的模型保存在hdfs上面,方便用户进行使用

(6) 将hdfs上面保存的模型加载下来,进行预测

其中prediction列就是预测后的结果。

五、总结

经过本文的学习,读者已经初步了解了 FEA-spk的使用,而且掌握了 K-means 算法的基本原理,以及如何基于 FEA-spk构建本身的机器学习应用。机器学习应用的构建是一个复杂的过程,咱们一般还须要对数据进行预处理,而后特征提取以及数据清洗等,而后才能利用算法来分析数据。Spark MLlib 区别于传统的机器学习工具,不只是由于它提供了简单易用的 API,更重要的是 Spark 在处理大数据上的高效以及在迭代计算时的独特优点。

相关文章
相关标签/搜索