天天看点

《Hadoop与大数据挖掘》一2.5 K-Means算法原理及Hadoop MapReduce实现

本节书摘来华章计算机《hadoop与大数据挖掘》一书中的第2章 ,第2.5节,张良均 樊 哲 位文超 刘名军 许国杰 周 龙 焦正升 著 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.5.1 k-means算法原理

k-means算法是硬聚类算法,是典型的基于原型的目标函数聚类方法的代表。它是将数据点到原型的某种距离作为优化的目标函数,利用函数求极值的方法得到迭代运算的调整规则(如图2-45所示)。k-means算法以欧氏距离作为相似度测度,求对应某一初始聚类中心向量v最优分类,使得评价指标最小。算法采用误差平方和准则函数作为聚类准则函数。

《Hadoop与大数据挖掘》一2.5 K-Means算法原理及Hadoop MapReduce实现

具体的算法步骤如下:

1)随机在图中取k(这里k=2)个种子点。

2)然后对图中的所有点求到这k个种子点的距离,假如点pi离种子点si最近,那么pi属于si点群。图2-45中,我们可以看到a、b属于上面的种子点,c、d、e属于下面中部的种子点。

3)接下来,我们要移动种子点到属于它的“点群”的中心。见图2-45中的第3步。

4)然后重复第2)和第3)步,直到种子点没有移动。我们可以看到图2-45中的第4步上面的种子点聚合了a、b、c,下面的种子点聚合了d、e。

图2-46所示为k-means算法的流程图。

《Hadoop与大数据挖掘》一2.5 K-Means算法原理及Hadoop MapReduce实现

该流程图描述其实和算法步骤类似,不过,这里需要考虑下面几个问题:

1)选择k个聚类中心用什么方法?

提示:可以随机选择或直接取前k条记录。

2)计算距离的方法有哪些?

提示:欧氏距离、余弦距离等。

3)满足终止条件是什么?

提示:使用前后两次的聚类中心误差(需考虑阈值小于多少即可);使用全局误差小于阈值(阈值选择多少?)。

请读者考虑上面的几个问题,并完成下面的动手实践(k-means算法实现)。