聚类分析:k-means和appropriate kmeans

在数据挖掘中,k-means是聚类算法(clustering)的基本算法,是一个无监督学习过程,不需要事前对样本进行标记,而分类(classification)和回归(regression)是有监督学习过程,需要提供训练数据。

在进行分类的时候,需要通过分类标准或者函数进行分类,而在实际应用过程中,往往这些标准或函数是难以确定的,通过聚类分析,可以迅速的找到这些重要的指标。在进行商业营销的时候,往往根据客户的价值,划分为关键客户、主要客户和普通客户,就需要对所有客户的数据进行聚类分析,再进行有针对性的营销活动。如让我们自己对这中国的所有的大学进行分类的时候,再比如把大学进行大致的划分为一流大学、二流大学和三流大学,我们大致首先会提取中国各个大学的相应指标,比如近年发表文章的影响因子,通过简单的聚类为3大类,就可以大致的得到一个大学所在的水平。

对聚类的数学描述如下,给定一组观察变量,将这n个观测量划分到k个子集合中,并满足条件:


即要求子集合内部元素相似度尽可能高,不同子集的元素相似度尽可能低。

对于k-means算法,给定初始的k个聚类中心,循环的运行如下的两步:

1、 通过如下的关系将观测量划分到最近的类


2、 更新对应类别的聚类中心


上述步骤中,可以把第一步看作expectationstep,第二部看作maximizationstep,这样k-means算法可以看作一个简单的EM算法。通常采用Forgy方法或RandomPartition方法进行初始化,可以看出,不同的类别数和初始聚类中心,会得到不同的最终聚类结果,结果只是局部最优的。由于k-means算法简单容易快速实现,可以在不同的初始化条件来运行。通常k-means被作为其他算法的预处理步骤。

下图为k-means算法的一个示意图,左一图中红绿蓝为初始聚类中心,左二图为划分类别后的结果,右二图为聚类中心的更新,右一图为最终的收敛结果。


k-means算法有很多的改进算法,其中google在2011年提出了appropriate kmeans算法,对于海量数据处理来说,有极大的优势。

appropriate kmeans算法中类别是动态可变的,在对样本进行划分的时候,通过计算待划分样本到最近的聚类中心距离的远近,来确定是生成一个新类别还是划分到最近的类别,距离越远那么生成新类别的概率越大。当类别超过一定数量上限的时候,重新调整算法参数,压缩类别的数目。

算法中计算最小距离最为耗时,appropriate kmeans采用随机投影的近似计算,通过计算映射后的投影距离,在一维度上计算距离的远近,极大的降低了计算量。

算法流程如下:

聚类分析:k-means和appropriate kmeans_第1张图片

 refer:

MichaelShindler,Alex Wong,Adam Meyerson.Fast and Accurate k-means for Large Datasets. In NIPS, 2011.

http://en.wikipedia.org/wiki/K-means_clustering


你可能感兴趣的:(算法,数据挖掘,Google,活动,classification)