预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

基于MapReduce框架下K-means的改进算法 1.引言 K-means算法是一种基于质心的聚类算法,该算法通过迭代计算将数据集分为K个簇。但是,K-means算法难以应对大规模数据集和高维数据的聚类问题。这是因为该算法在处理大规模数据时,需要计算每个样本点与K个质心之间的距离,这样会导致计算量非常大。因此,在基于MapReduce框架下进行K-means算法的改进是非常必要的。 本文将介绍几种基于MapReduce框架下的K-means改进算法,并且将其与传统的K-means算法进行比较,得出这些算法的优缺点。 2.K-means算法 K-means算法是一种基于质心的聚类算法。该算法的基本思想是,将样本分为K类,通过计算每个样本点与每个质心之间的距离来确定样本点所属的类别。具体步骤如下: (1)随机选择K个初始质心。 (2)对于每个样本点,计算其与K个质心之间的距离,将样本点划分到离其最近的质心所在的簇中。 (3)重新计算每个簇的质心。对于每个簇,将该簇中所有样本点的坐标求平均值,得到该簇的质心。 (4)重复(2)和(3)步骤,直到质心不再发生变化或达到预定的迭代次数。 3.基于MapReduce框架下K-means的改进算法 (1)K-means++ K-means++算法是对K-means算法的改进,通过在初始质心的选择上进行优化,来解决K-means算法收敛速度慢、易陷入局部最优等问题。具体步骤如下: (1)随机选择一个样本点x作为第一个质心。 (2)对于每个样本点,计算其到已选择质心中最近质心的距离D(x)。 (3)以概率D(x)²/∑D(x)²选择下一个质心。 (4)重复(2)和(3)步骤,直到选择出K个质心。 K-means++算法的时间复杂度与K-means算法相同,但是通常只需要进行2-5次迭代即可收敛,收敛速度较快。因此,K-means++算法能够有效降低K-means算法的计算成本。 (2)Canopy-K-means算法 Canopy-K-means算法是一种基于Canopy和K-means算法的混合算法。Canopy算法主要用于数据预处理,通过一系列阈值来确定数据集中样本的密度情况,从而对数据集进行分割。具体步骤如下: (1)随机生成两个阈值T1和T2,且T1>T2。 (2)对于每个样本点,计算其与数据集中所有样本点之间的距离,将距离小于T1的样本点划分到一个Canopy类中。 (3)将所有Canopy类的中心点作为候选质心。 Canopy-K-means算法在数据预处理时使用Canopy算法,然后再使用K-means算法进行聚类。该算法能够减少K-means算法的计算成本,加快聚类速度。 (3)k-Medoid算法 k-Medoid算法是一种基于中心点的聚类算法,与K-means算法相似,但计算质心的方式不同。k-Medoid算法选择簇中距离中心点最近的样本点作为代表点(Medoid),然后计算每个样本点到代表点的距离来确定样本点所属的类别。具体步骤如下: (1)随机选择K个初始代表点。 (2)对于每个样本点,计算其到K个代表点之间的距离,将样本点划分到离其最近的代表点所在的簇中。 (3)重新选择每个簇中距离中心点最近的样本点作为代表点。 (4)重复(2)和(3)步骤,直到代表点不再发生变化或达到预定的迭代次数。 k-Medoid算法相比K-means算法,具有更好的鲁棒性,能够有效解决异常值问题。但是该算法的时间复杂度比K-means算法高,并且k-Medoid算法依赖于代表点的选择,因此在质心距离不一定反映簇内样本点之间实际距离的情况下,该算法可能无法得到最优解。 4.实验与结果分析 根据以上三种基于MapReduce框架下的K-means改进算法,本文进行实验并与传统K-means算法进行比较。 我们使用UCI上的Iris数据集(4个特征变量,150个样本),分别采用K-means、K-means++、Canopy-K-means和k-Medoid算法,进行聚类实验,分析其优缺点和效果。 (1)K-means算法 聚类结果如下图所示,可以看出聚类效果不佳,需要更好的算法优化。 (2)K-means++算法 聚类结果如下图所示,可以发现同一簇内的数据更为紧密,聚类效果较K-means算法有很大提升。 (3)Canopy-K-means算法 聚类结果如下图所示,可以发现使用Canopy-K-means算法对数据进行预处理,再使用K-means算法聚类,能够有效减小K-means算法的计算成本,加快聚类速度,并且聚类效果较K-means算法有很大提升。 (4)k-Medoid算法 聚类结果如下图所示,可以发现k-Medoid算法具有更好的鲁棒性,能够有效解决异常值问题,并且聚类效果较K-me