一种基于K-Means局部最优性的高效聚类算法

一种基于K-Means局部最优性的高效聚类算法
一种基于K-Means局部最优性的高效聚类算法

ISSN 1000-9825, CODEN RUXUEW E-mail: jos@https://www.360docs.net/doc/739446006.html,

Journal of Software, Vol.19, No.7, July 2008, pp.1683?1692 https://www.360docs.net/doc/739446006.html, DOI: 10.3724/SP.J.1001.2008.01683 Tel/Fax: +86-10-62562563

? 2008 by Journal of Software. All rights reserved.

?

一种基于K-Means局部最优性的高效聚类算法

雷小锋1,2+, 谢昆青1, 林帆1, 夏征义3

1(北京大学信息科学技术学院智能科学系/视觉与听觉国家重点实验室,北京 100871)

2(中国矿业大学计算机学院,江苏徐州 221116)

3(中国人民解放军总后勤部后勤科学研究所,北京 100071)

An Efficient Clustering Algorithm Based on Local Optimality of K-Means

LEI Xiao-Feng1,2+, XIE Kun-Qing1, LIN Fan1, XIA Zheng-Yi3

1(Department of Intelligence Science/National Laboratory on Machine Perception, Peking University, Beijing 100871, China)

2(School of Computer Science and Technology, China University of Mining and Technology, Xuzhou 221116, China)

3(Logistics Science and Technology Institute, P.L.A. Chief Logistics Department, Beijing 100071, China)

+ Corresponding author: E-mail: leiyunhui@https://www.360docs.net/doc/739446006.html,

Lei XF, Xie KQ, Lin F, Xia ZY. An efficient clustering algorithm based on local optimality of K-Means.

Journal of Software, 2008,19(7):1683?1692. https://www.360docs.net/doc/739446006.html,/1000-9825/19/1683.htm

Abstract: K-Means is the most popular clustering algorithm with the convergence to one of numerous local

minima, which results in much sensitivity to initial representatives. Many researches are made to overcome the

sensitivity of K-Means algorithm. However, this paper proposes a novel clustering algorithm called K-MeanSCAN

by means of the local optimality and sensitivity of K-Means. The core idea is to build the connectivity between

sub-clusters based on the multiple clustering results of K-Means, where these clustering results are distinct because

of local optimality and sensitivity of K-Means. Then a weighted connected graph of the sub-clusters is constructed

using the connectivity, and the sub-clusters are merged by the graph search algorithm. Theoretic analysis and

experimental demonstrations show that K-MeanSCAN outperforms existing algorithms in clustering quality and

efficiency.

Key words: K-MeanSCAN; density-based; K-Means; clustering; connectivity

摘要: K-Means聚类算法只能保证收敛到局部最优,从而导致聚类结果对初始代表点的选择非常敏感.许多研究

工作都着力于降低这种敏感性.然而,K-Means的局部最优和结果敏感性却构成了K-MeanSCAN聚类算法的基

础.K-MeanSCAN算法对数据集进行多次采样和K-Means预聚类以产生多组不同的聚类结果,来自不同聚类结果的

子簇之间必然会存在交集.算法的核心思想是,利用这些交集构造出关于子簇的加权连通图,并根据连通性合并子

簇.理论和实验证明,K-MeanScan算法可以在很大程度上提高聚类结果的质量和算法的效率.

关键词: K-MeanSCAN;基于密度;K-Means;聚类;连通性

中图法分类号: TP18文献标识码: A

? Supported by the National High-Tech Research and Development Plan of China under Grant No.2006AA12Z217 (国家高技术研究发

展计划(863)); the Foundation of China University of Mining and Technology under Grant No.OD080313 (中国矿业大学科技基金)

Received 2006-10-09; Accepted 2007-07-17

1684 Journal of Software软件学报 V ol.19, No.7, July 2008

聚类分析在统计学、机器学习、数据挖掘、生物学、空间数据库、Web搜索、分布式网络、市场营销等领域得到广泛的研究和应用,在文献[1]中对聚类方法进行了很好的综述.一般地,假设d维数据空间A中有n个样本,每个样本可以视为d维空间的一个点,聚类是将这n个点分组,每组就形成一个类簇,要求属于同一类簇的点尽可能相近,不同类簇间的点尽可能远离.

常用的聚类算法主要有划分方法、层次方法、基于密度的方法、基于网格的方法和基于模型的方法.本文提出一种新的聚类算法——K-MeanSCAN,集成多种聚类方法的性质,特别是K-Means算法的局部最优特征和结果敏感性.理论分析和实验结果表明,K-MeanSCAN算法具有如下特点:

(1) 可以发现任意形状的类簇.K-MeanSCAN算法充分借鉴了基于密度聚类方法的思想,能够发现任意

形状的类簇,并对异常点和噪声数据不敏感.

(2) 考虑了子簇之间的连通强度.避免了基于密度聚类算法中由于密度连通关系的传递性导致绝大多数

的样本点聚集到非常少的几个类簇中(通常是一类).

(3) 算法具有很好的时间性能和伸缩性.算法结合采样技术、K-Means预聚类技术和图搜索算法提供高

效的聚类性能,其时间复杂度为O(n),且对大数据集有很强的伸缩性.

(4) 算法引入了钝参数的概念,减轻了聚类结果对参数阈值的敏感性,使得算法无需过多的先验知识.

此外,算法仅使用一个参数对类簇的密度进行建模,与DBSCAN(density based spatial clustering of application with noise)[2]的Eps和MinPts两个参数相比,易于交互式或自动计算以确定密度阈值.

本文第1节对现有的一些聚类算法进行综述.第2节详细阐述K-MeanSCAN算法的基本思想及其形式化定义,并给出具体的算法描述和复杂性分析.第3节提供详细的实验以证明K-MeanSCAN算法的聚类质量和执行效率.最后是结论和下一步工作说明.

1 常用聚类算法综述

划分聚类算法通过迭代重定位策略优化特定的目标函数,尝试确定数据集的一个划分.最常用的目标函数是误差平方和准则,如K-Means算法.K-Means算法对类球形且大小差别不大的类簇有很好的表现,但不能发现形状任意和大小差别很大的类簇,且聚类结果易受噪声数据影响.此外,K-Means算法仅保证快速收敛到局部最优结果,从而导致聚类结果对初始代表点的选择非常敏感,本文称其为结果敏感性,是许多研究工作所要着力解决的问题.

层次聚类算法以自顶向下(分裂)或自底向上(凝聚)的方式将数据对象划分成一个层次树结构,即类簇树.算法的聚类效果很大程度上依赖于度量类簇之间相异度的距离函数.此外,一般层次聚类算法的伸缩性不强,其时间复杂度通常为O(n2).BIRCH(balanced iterative reducing and clustering using hierarchies)[3]和CURE(clustering using representatives)[4]算法试图提高层次聚类结果的质量,解决其算法伸缩性问题.BIRCH算法具有O(n)的计算复杂度,在有限内存下可以很好地工作.但是,算法使用的相异度度量导致BIRCH只能发现球形类簇.CURE使用固定数量的代表点来定义类簇,可以发现复杂形状和不同大小的类簇,对噪声具有很好的免疫能力.然而,CURE算法的收缩方式隐含地依赖于球形类簇假设,故在处理特殊形状的类簇时比较困难.

基于密度的聚类算法中类簇被定义为连通的稠密子区域.因此,算法能够发现任意形状的类簇,并对异常点和噪声有自然的免疫能力.DBSCAN是典型的面向低维空间数据聚类的基于密度的算法,其关键概念是由对象最近邻域的局部分布度量的密度及其连通性.DBSCAN算法本质上只是提供了一个根据密度阈值参数进行聚类结果搜索的过程,聚类结果在用户指定密度阈值那一刻已经唯一地确定,算法本身并不对聚类的结果负责.其主要缺陷包括:

(1) 算法通常对参数值的设置非常敏感,聚类结果的质量很大程度上依赖于密度阈值参数的合理选取,

因而对用户的经验和专业素养提出很高的要求;

(2) 真实的数据集合经常分布不均匀,导致这种全局性的密度参数通常不能刻画数据内在的聚类结构;

(3) 算法中通过密度连通性来合并高密子簇,由于密度连通关系的传递性,往往使得绝大多数的样本点

雷小锋 等:一种基于K -Means 局部最优性的高效聚类算法

1685

C 聚集到非常少的几个类簇中(通常是一类). OPTICS(ordering points to identify the clustering structure)[5]算法针对DBSCAN 算法的缺陷进行了改进. 2 K -MeanSCAN 算法

2.1 算法思想

2.1.1 从搜索到构造

许多聚类算法的基本框架是搜索与合并.如在层次方法中需要搜索两个距离最近的类簇然后合并;而基于密度的聚类算法则不断地搜索高密子区域,然后利用连通性将其合并到当前聚类结果中.很明显,搜索过程需要面对整个样本集合,通常会导致算法低效.如DBSCAN 需要测试每个对象是否是核心对象,并对每个核心对象搜索其直接密度可达的对象,如果没有空间索引的辅助,DBSCAN 算法的复杂度为O (n 2).实际上,现有的很多聚类算法已经关注到这个问题,如CURE 算法利用采样方法减小搜索空间,而Chameleon [6]算法则通过图划分算法将样本对象聚类为大量相对较小的子簇.具体到本文,我们采用了随机采样和K -Means 算法高效地聚出大量的高密子簇,后续处理都基于这些构造出的高密子簇进行,无须直接面对所有的样本.我们称这种算法框架为构造与合并.因此,K -MeanSCAN 算法的处理流程为:随机采样、预聚类、合并和后处理.聚类算法的本质是密度估计问题,K -MeanSCAN 算法的核心思想是,增加K -Means 算法中高斯混合模型的高斯分量数目以提升密度估计的精度,并利用K -Means 聚类的局部最优和结果敏感性的特征进行高斯分量(即高密子簇)的合并剪枝,克服过拟合问题,最终实现有效的聚类.

2.1.2 K -Means 算法的概率模型

K -Means 算法实质上是一种将聚类视为密度估计问题的概率方法.在概率方法中,假设样本来自于如下形式的混合模型: ,

1:(|)()(|,)j j j j j k p P C p Θθ==∑x x 式中,Θ=(θ1,…,θk )是待估计的参数向量;条件概率密度p (x |θj ,C j )称为分量密度,表示类别j 的概率密度形式,且参数向量θj 未知;先验概率P (C j )称为混合因子.为了简化问题,K-Means 算法进一步假设:(1) 每个类别的概率密度形式为球形高斯分布,即θj =(μj ,Σ)且Σ1=…=Σk =σ2I ,μj ,σ2未知;(2) 每个样本唯一地属于一个类别;(3) 假设所有类别的混合因子相等.于是,混合模型简化为 22/221:1:11(|)max (|,,)max exp ||||(2)2j j j d j k j k p C ΘφμΣμσσ==???==??????π???

?x x x ? (1) 该简化模型可以通过最大似然方法求解,对于观测样本X =(x 1,…,x n ),相应的对数似然函数为

2/222111(|)ln (|)ln[(2)]||||2i j n k

d i i j l X p n ΘΘσσ====?π?

?∑x x i j C μ∈∑∑x j (2)

最大化该对数似然函数等价于最小化上式的欧氏距离平方项,即得到K -Means 的误差平方和准则:

(3)

21||||i j k

e i j C J μ=∈=?∑∑x x 通过迭代优化上述的误差平方和准则,K -Means 算法最终可以估计出每个高斯分量的均值向量和协方差矩阵Σ=σ2I .式中,n j 是类簇C j 的样本数目.

1i j j i C j n μ∈=∑x x ,2

11||||i j k e i j j C 2J nd nd σμ=∈=?∑∑x x = (4) 2.1.3 K -MeanSCAN 的过拟合-合并剪枝策略

要获得更有效的样本密度估计,J e 的值自然是越小越好.但是,J e 的值不仅取决于样本的分类情况,而且与类别数目k 有关.当类别数目k 给定时,J e 的值由样本的分类情况所决定,且存在一个最小值J k -min 对应于最优的样本类别划分.如果类别数目k 和高斯混合模型假设与实际问题相匹配时,最小值J k -min 必定很小,从而可以很好地近似样本密度;而如果模型假设不合理,则最小值J k -min 可能依然很大,对样本分布的近似效果较差.

1686

Journal of Software 软件学报 V ol.19, No.7, July 2008

对于任意形状的类簇,很明显不能直接要求数据分布满足高斯混合模型的假设,否则会导致最小的误差平方和J k -min 很大.实际上,高斯混合模型具有很强的表达能力,如果高斯分量密度的数目k 足够大,则高斯混合模型几乎可以近似任意一种概率分布.换言之,随着类别数目k 的增加,相应的J k -min 会减小.简单证明如下:

类别数目k 的增加,必然导致最终每个类簇的形状缩小,对应于高斯分量的σ2减小;而从公式(3)和公式(4)可以得出J k -min =nd σ2,即最小的误差平方和正比于σ2;因此,k 的增加会导致最小的误差平方和J k -min 的减小.

极端情况下,k =n ,则每个样本点都是一个类簇,即J k -min =0,说明此时的经验误差为0,但是此时,模型的推广能力极差.根据统计学习理论,经验误差最小并不等于期望误差最小,经验风险只有在样本数无穷大时才趋近于期望风险.因此,经验误差最小不能保证分类器的推广能力,需要找到经验风险最小和推广能力最大的平衡点.同样,利用足够多的高斯分量组成的混合模型来描述数据会导致过拟合的问题,影响模型的推广能力.因此,在K -MeanSCAN 算法中,我们采用过拟合-剪枝的策略进行聚类,即首先使用分量足够多的高斯混合模型来较好地近似样本分布,然后通过合并一些高斯分量的剪枝策略来处理过拟合问题.

除了提高对样本分布的近似精度以外,增加类别数目还有其他好处.已知K -Means 算法通过迭代重定位技术最小化误差平方和准则,最终快速收敛到一个局部最优的解.形象地,可以认为K -Means 算法是在对数似然函数空间上的随机爬山算法,对于具有k 个全局最高点和大量局部极高点的数据集,K -Means 聚类算法很可能陷入局部极高点,从而导致对于不同的初始类簇代表点,算法会收敛到不同的局部极值点,即聚类结果对初始代表点的选择非常敏感,本文称其为“结果敏感性”.类别数目k 的增大类似于开辟更多的爬山路径,如果k ′>>k 个路径,则到达全局最高点的可能性自然会增大,当然过拟合问题不可避免.

2.1.4 类簇的合并剪枝

在K -MeanSCAN 算法中,利用K -Means 的结果敏感性对类簇进行合并剪枝来处理过拟合问题.假设在样本集上进行两次K -Means 聚类,得到两组结果分别是R 1={C 11,C 12,…,C 1k ′}和R 2={C 21,C 22,…,C 2k ′},且因结果敏感性使得R 1≠R 2,则至少存在一个属于R 1(或R 2)的类簇C 1m 与R 2(或R 1)中至少两个类簇之间都存在交集(证明略).

实际中,K -Means 算法的结果敏感性导致不同聚类结果中大量的类簇之间存在交集.如图1所示,对于 图1(a)的样本集合,图1(b)、图1(c)分别是两次K -Means 聚类的结果,图1(c)说明两次聚类结果之间存在交集.如果不同聚类结果中两个类簇之间交集的基数足够大,则我们宁愿相信这两个类簇中的样本不应该分为两类,而应合并为一个类簇.通过这种方式,可以建立如图2所示的类簇间的连通关系,并根据连通关系将类簇合并. S C 1

C 21C ′2

C

′(a) (b) (c) (d)

Fig.1 A demo of the sensitivity of K -Means algorithm

图1 K -Means 算法结果敏感性的示意

C 11

C 12C 13C 14C 151112131415(a) (b)

Fig.2 Building the connection relationships between clusters

图2 建立类簇之间的连通关系

R 1

Pre-Clustering Connectivity

6

雷小锋 等:一种基于K -Means 局部最优性的高效聚类算法

1687

n 上述思路构成了K -MeanSCAN 算法实现类簇合并剪枝的基础.基于K -Means 算法预聚类的结果, K -MeanSCAN 算法的主要步骤包括:(1) 在多次预聚类结果上构造类簇之间的加权连通图;(2) 利用图搜索算法合并连通的类簇;(3) 算法最后还包括一个后处理阶段,利用凝聚层次聚类算法对步骤(2)生成的合并类簇再进行一次聚类,以进一步保证聚类结果的质量.此外,后处理步骤还需要对所有在合并剪枝中剔除的样本进行重新计算,确定其最终的类别标记或者标记为噪声.

在描述具体算法之前,我们首先引入一些形式化的概念和定义.以下用k 表示实际的类簇数目,用k ′表示预聚类的类簇数目.

2.2 概念和定义

设P =(R 1,R 2,…,R h )表示h 次K -Means 聚类结果,且R i ={C i 1,C i 2,…,C ik ′}∈P ,并称C ij 为聚类结果R i 的一个子簇. 定义1(子簇密度和高密子簇). 假设C ij 为一个子簇,其密度应正比于子簇中的样本数量,反比于子簇的空间范围,形式化定义如下:

den (C ij )=||C ij ||/r d ,max((,.))l ij

l ij C r dist C mea ∈=x x . 式中,||*||表示集合*的基数,r 为所有样本到子簇均值中心的最大距离.如果den (C ij )大于给定阈值denh ,则称该子簇为高密子簇.在K -MeanSCAN 算法中,只有高密子簇才参与合并.

定义2(直接连通). 假设C ij ∈R i 和C st ∈R s 是两个高密子簇,且二者的交集非空,则称C ij 与C st 是直接连通的,并定义C ij 与C st 之间的直接连通强度为两个子簇交集的基数与其并集基数的比值,

dcn (C ij ,C st )=||C ij ,∩C st ||/||C ij ,∪C st ||.

直接连通关系具有自反、对称和传递性,是一种等价关系.可以看到,来自同一聚类结果的任意两个子簇之间都不存在交集,不可能直接连通或者连通强度为0.如果两个直接连通的子簇的直接连通强度大于给定的阈值dcnh ,则称两个子簇是强直接连通的.

定义3(间接连通). 假设C i 和C j 是任意两个高密子簇,且二者的交集为空,如果存在一个子簇的序列C 1,C 2,…,C s ,且C 1=C i ,C s =C j ,使得C t +1与C t 之间是强直接连通的,则称C i 与C j 是强间接连通的,并且间接连通的连通强度为所有强直接连通强度的最小值.

定义4(合并簇). 基于上述的连通关系,可以构造关于所有高密子簇的加权连通图(weighted connected graph,简称WCG),其中,一个高密子簇对应于图中的一个顶点,并且为每条边分配一个连通强度作为权值.于是,一个合并簇C 就定义为所有强连通(包括直接连通和间接连通)的子簇的并集,最终产生的合并簇满足两个条件:(1) C 中任意两个子簇必定是强连通的;(2) 如果C i 属于C ,且与C j 是强连通的,则C j 也必定属于C .

2.3 算法描述

K -MeanSCAN 算法在构造与合并的算法框架下实现.在构造过程中,算法首先从样本数据集中随机抽取一组样本.然后,算法利用K -Means 对随机样本进行预聚类,预聚类的类簇数目为k ′>>k .重复采样和预聚类过程h 次,得到h 组在随机样本上的聚类结果,每组聚类结果包括k ′个类簇中心.此时,对整个样本集进行单遍扫描,将每个样本对象分配给相应的距离最近的h 个类簇中心.至此,产生h 组关于数据集的划分.

基于这些数据集的划分,K -MeanSCAN 算法计算来自不同划分的子簇之间的连通性,并构造加权连通图,然后利用广度优先的图搜索算法求得最大连通的子图,从而将相应的高密子簇合并,即上文定义的合并簇.最后,利用凝聚的层次聚类算法对合并簇进一步处理,得到最终聚类结构.在层次聚类过程中使用的距离度量定义为两个待合并簇中所有子簇中心的最小距离,假设MC 1和MC 2是两个合并簇,则

1122

1212,(,)min (.,.C MC C MC dist MC MC dist C mean C mean ∈∈=). 最后,根据最终的聚类结构对所有未参与合并剪枝的样本进行重新标记,确定其类别或者标记为噪声.以下通过伪代码给出K -MeanSCAN 算法的流程说明.

Algorithm program K -MeanSCAN(SetOfPoints ,h =2,k ′)

var RandomSample: rndsmp ;

1688

Journal of Software 软件学报 V ol.19, No.7, July 2008

Clusters: cluss , mergedcluss , finalcluss ;

Cluster: clus ; Connection: conns ;

Integer: iterations ; Float: denh , dcnh ;

begin

//pre-clustering

repeat

rndsmp =DrawSample ();

clus =K-Means (rndsmp ,k ′);

cluss .add (clus ); iterations ++;

until iterations =h

AssignEachObject (SetOfPoints ,cluss );

denh =ComputeDenh (cluss );

conns =BuildWCG (cluss );

dcnh =ComputeDcnh (conns );

mergedcluss =MergedByBFS (cluss ,conns ); finalcluss =MergedByAgglom (mergedcluss );

return finalcluss ;

end. //K -MeanSCAN

算法中,参数h 是采样和预聚类的次数,也是构造过程产生的划分数.参数k ′是K -Means 预聚类时的类簇数目.在K -MeanSCAN 算法中,局部变量denh 和dcnh 分别是密度阈值和连通强度阈值.函数AssignEachObject ()在样本集上执行单遍扫描,将每个样本对象分配给相应的子簇;函数BuildWCG ()计算子簇之间的连通关系,并构造加权连通图;函数MergedByBFS ()通过广度优先的图搜索算法合并子簇;最后,函数MergedByAgglom ()通过层次聚类算法产生最终的聚类结构,并对被剔除的样本重新标记.限于篇幅,本文略去关于这些函数更为详细的 描述.

2.4 算法参数设置

2.4.1 采样大小

在文献[4]中已经阐明合理的随机采样大小能够相当精确地反映类簇的几何结构,并通过如下定理给出了相应的采样精度保证.假设对于类簇u ,如果样本集包含至少f |u |个来自类簇u 的样本点,0≤f ≤1,则在聚类中丢失该类簇的概率很小.

定理1. 对于一个类簇u ,如果采样大小s 满足如下约束:则随机样本集中来自类簇u 的样本数小于f |u |的概率小于δ,0≤δ≤1. 211log log 2||log ||||n n s fn f u u u 1δδδ????????≥+++??????????????

??. 假设u min 是需要关注的最小类簇,根据定理1可以得到相应的s min .对于k 个类簇,在样本大小为s min 时,从任意类簇u 中采样数目小于f |u |的概率具有上界k δ.

2.4.2 预聚类次数h 和类簇数k ′

参数h 是预聚类或采样的次数,很明显,h ≥2.根据K -MeanSCAN 算法的原理,h 较大,则属于同一类簇的子簇之间被合并的几率就较大,从而可以产生更高质量的聚类结果,不过同时也会增加计算代价.本文的实验测试表明,h =3~10通常已经足够.

预聚类的另一个重要参数是类簇数目k ′.对于该参数的约束是要求k ′远远大于实际的类簇数目k ,小于样本集的大小n .为了能够捕捉到感兴趣的最小类簇u min ,k ′必须大于?n /|u min |?.在文献[7]中研究了k 近邻分类算法中参

雷小锋 等:一种基于K -Means 局部最优性的高效聚类算法 1689 数k 的设置,给出一个法则:k ≈n 3/8.参考这一结论,我们推荐k ′值的选取满足如下约束:min(α?n /|u min |?,n 5/8),α取值一般小于等于10.需要说明的是,在满足上述约束条件时,k ′的取值对于聚类结果不敏感,我们称这种对结果不敏感的参数为“钝参数”,可以降低对先验知识和用户专业素养的要求,下文的实验将对这一事实进行说明.

2.4.3 子簇密度阈值denh 和连通强度阈值dcnh

参数denh 是子簇密度阈值,只有密度大于denh 的子簇才参与K -MeanSCAN 算法的合并过程,而密度小于denh 的子簇必包含大量的噪声.直观地,对于包含噪声或完全由噪声样本形成的子簇,其样本数目少,而空间分布范围却较大,故其密度很小;而对实际存在的类簇,则子簇比较紧缩,密度较大.假设h 次预聚类形成的hk ′个子簇的密度集合为dens ={den i |i =1,…,hk ′},以升序排序得到sort _dens ,其曲线模式如图3(a)所示.可以看出,从低密区域到高密区域存在一个急剧的跃迁,即可确定密度阈值.

为了自动求解密度阈值,首先对sort _dens 进行差分运算得到diff _dens .绘制差分曲线,与密度曲线的跃迁处相对应,在差分曲线上存在一个较大的峰值.取前一半的差分运算值,并利用高斯函数形式对其进行曲线拟合,差分曲线的峰值处就对应于高斯函数的均值mu ,是密度阈值在sort _dens 中对应的索引值,如图3(b)所示.于是,密度阈值为denh =sort _dens [round (mu )].

实验测试表明,这种自动密度阈值计算方法效果很好.而连通强度阈值dcnh 的设置取决于实际用户的主观倾向.一般情况下,可直接设置dcnh =0,或者取所有的连通强度的均值.

0.20

(a) Pattern of sort _dens (b) Finding denh on diff _dens

(a) 子簇密度变化的曲线模式 (b) 差分曲线上的密度阈值求解

Fig.3 Density threshold denh

图3 密度阈值denh

2.5 算法复杂性分析

K -Means 算法是相当高效的,其计算复杂度为O (nkdt ),其中,n 为所有样本对象的数目,k 是设定的类簇数目,d 是样本数据的维度,t 是迭代的次数.通常,k <

3 实验评估

本节我们通过实验比较来研究K -MeanSCAN 算法的性能和有效性.实验采用的数据包括在各种聚类算法评估中常用的模拟数据(如图4所示),以及DBSCAN 算法中使用的来自真实地球科学领域的SEQUOIA 2000基准测试数据[8].实验的硬件环境为P4 1.86Ghz 的CPU 和512MB 的内存,软件环境为Microsoft Windows XP Sub-Clusters of high density 0.180.16

0.14

0.12

0.10

0.08

0.06

0.04

denh D e n s i t y 0.02

0.00sort _dens 160 180

diff _dens

0 10 20 30 80 0.000mu Gaussian fitting curve 0.0150.0050.010

1690 Journal of Software 软件学报 V ol.19, No.7, July 2008 (professional)操作系统,所有代码均用Visual C++ 6.0实现

.

(a) Data 1 (b) Data 2 (c) Data 3 (d) Data 4

Fig.4 Synthetic datasets for evaluating clustering algorithms

图4 常用的评估聚类算法的模拟数据

3.1 聚类结果

图5~图8分别给出了上述4组数据经过预聚类、合并剪枝后的结果,以及相应的DBSCAN 聚类结果.实验中,预聚类的类簇数目均设置为k ′≈n 5/8,预聚类次数h =5,连通强度阈值dcnh =0.在每个图中,图(a)是K -MeanSCAN 聚类结果,图(b)是相应的密度曲线和密度阈值,图(c)是密度差分序列和高斯函数拟合曲线,图(d)是DBSCAN 聚类结果.

denh Gaussian fitting curve (a) (b) sort_dens (c) diff_dens (d) Eps =21, Min Pts =4

Fig.5 Clustering result of data 1 and its threshold denh

图5 Data 1聚类结果及其密度阈值

Gaussian fitting curve denh (a) (b) sort_dens (c) diff_dens (d) Eps =18.64, Min Pts =4

Fig.6 Clustering result of data 2 and its threshold denh

图6 Data 2聚类结果及其密度阈值

(a) (b) sort_dens (c) diff_dens (d) Eps =15.38, Min Pts =4

Fig.7 Clustering result of data 3 and its threshold denh

图7 Data 3聚类结果及其密度阈值

denh Gaussian fitting curve

雷小锋 等:一种基于K -Means 局部最优性的高效聚类算法

1691

(a) (b) sort_dens (c) diff_dens (d) Eps =10.58, Min Pts =4

Fig.8 Clustering result of data 4 and its threshold denh (dcnh =0)

图8 Data 4聚类结果及其密度阈值(dcnh =0)

可以看出,对于上述4组数据,K -MeanSCAN 算法无需后处理步骤即可得到高质量的聚类结果.对于数据集Data 4而言,当将其连通阈值设置为所有连通强度的均值时,无后处理步骤的K -MeanSCAN 聚类结果如图9所示.此时,下方的两个子簇得到区分,经后处理过程即可得到高质量的聚类效果.此外,DBSCAN 算法亦可取得不错的结果,但其密度参数设置需要多次调试,且对于Data 4而言,无法区分下方的两个子簇.

同时可以看出密度曲线的变化模式,即对于有噪声的数据集,其密度曲线的跃迁区域远离y 轴;而对于无噪声的数据集,则其密度曲线的跃迁区域非常靠近y 轴.

(a) (b) sort_dens (c) diff_dens

Fig.9 Clustering result of data 4 and its threshold denh (dcnh =average connectivity)

图9 Data 4聚类结果及其密度阈值(dcnh =平均连通强度)

3.2 参数敏感性和算法伸缩性评估

在K -MeanSCAN 算法中,一个重要的参数是预聚类时的子簇数目k ′.前文已经说明该参数对聚类结果不敏感,是“钝参数”.这里,我们在Data 4上对参数k ′进行敏感性分析.实验中,k ′≈206,h =5,dcnh =0.最终结果中,簇数的变化在图10中给出.可以看出,在k ′>30之后,K -MeanSCAN 算法均可获得满意的聚类结果.

在SEQUOIA 2000的点数据集上执行DBSCAN,CURE 和K -MeanSCAN 这3种算法的时间代价在图11中给出.其中,DBACAN 算法在R*树索引基础上实现.在样本数量较少时(<10000),DBSCAN 算法性能较高;当样本数量继续增加时,采样技术使得CURE 和K -MeanSCAN 算法具有更好的伸缩性.

Fig.10 Sensitivity analysis of k ′ Fig.11 Comparison of algorithm scalability

图10 参数k ′敏感性分析 图11 算法的伸缩性比较实验

denh Gaussian fitting

curve denh Gaussian fitting curve

2506

42

200150100500T i m e (s ) 0 10000 20000 30000 40000 50000 60000 Num of pints DBSCAN K -MeanSCAN CURE o f c l u s t e r s k ′

1692 Journal of Software软件学报 V ol.19, No.7, July 2008 4 结论和下一步工作

本文简要综述了几种主要类型的聚类算法,特别是K-Means算法的概率方法本质和局部最优及结果敏感性特征.集成多种聚类方法的性质,提出了一种新的聚类算法——K-MeanSCAN,可以发现任意形状的类簇,并对异常点和噪声数据不敏感.同时,引入了连通强度的概念,避免由于密度连通关系的传递性导致绝大多数的样本点聚集到非常少的几个类簇中(通常是一类)的问题.此外,算法引入了钝参数的概念,减轻了聚类结果对参数阈值的敏感性;算法的时间复杂度约为O(n).

References:

[1] Han JW, Kamber M. Data Mining: Concepts and Techniques. 2nd ed., San Francisco: Morgan Kaufmann Publishers, 2001.

223?250.

[2] Ester M, Kriegel HP, Sander J, Xu XW. A density-based algorithm for discovering clusters in large spatial database with noise. In:

Simoudis E, Han J, Fayyad UM, eds. Proc. of the 2nd Int’l Conf. on Knowledge Discovery and Data Mining. Portland: AAAI Press, 1996. 226?231.

[3] Zhang T, Ramakrishnan R, Linvy M. BIRCH: An efficient data clustering method for very large databases. In: Jagadish HV,

Mumick IS, eds. Proc. of the ACM SIGMOD Int’l Conf. on Management of Data. Montreal: ACM Press, 1996. 103?114.

[4] Guha S, RastogiR, Shim K. CURE: An efficient clustering algorithm for large databases. In: Haas LM, Tiwary A, eds. Proc. of the

ACM SIGMOD Int’l Conf. on Management of Data. New York: ACM Press, 1998. 73?84.

[5] Ankerst M, Breuning M, Kriegel HP, Sander J. OPTICS: Ordering points to identify the clustering structure. In: Delis A, Faloutsos

C, Ghandeharizadeh S, eds. Proc. of the ACM SIGMOD Int’l Conf. on Management of Data. Philadelphia: ACM Press, 1999.

49?60.

[6] Karypis G, Han EH, Kumar V. CHAMELEON: A hierarchical clustering algorithm using dynamic modeling. Computer, 1999,32(8):

68?75.

[7] Hand DJ, Vinciotti V. Choosing k for two-class nearest neighbour classifiers with unbalanced classes. Pattern Recognition Letters,

2003,24(9):1555?1562.

[8] Stonebraker M, Frew J, Gardels K, Meredith J. The SEQUOIA 2000 storage benchmark. In: Buneman P, ed. Proc. of the ACM

SIGMOD Int’l Conf. on Management of Data. Washington: ACM Press, 1993. 2?11.

雷小锋(1975-),男,陕西合阳人,博士,主要研究领域为数据库,数据挖掘,机器学习.

林帆(1983-),男,硕士生,主要研究领域为时空数据挖掘

.

谢昆青(1957-),男,博士,教授,博士生导

师,主要研究领域为智能信息处理,时空数

据库,数据挖掘.

夏征义(1974-),男,工程师,主要研究领域

为计算机应用,信息系统分析设计.

聚类分析K-means算法综述

聚类分析K-means算法综述 摘要:介绍K-means聚类算法的概念,初步了解算法的基本步骤,通过对算法缺点的分析,对算法已有的优化方法进行简单分析,以及对算法的应用领域、算法未来的研究方向及应用发展趋势作恰当的介绍。 关键词:K-means聚类算法基本步骤优化方法应用领域研究方向应用发展趋势 算法概述 K-means聚类算法是一种基于质心的划分方法,输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类。 评定标准:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算。 解释:基于质心的划分方法就是将簇中的所有对象的平均值看做簇的质心,然后根据一个数据对象与簇质心的距离,再将该对象赋予最近的簇。 k-means 算法基本步骤 (1)从n个数据对象任意选择k 个对象作为初始聚类中心 (2)根据每个聚类对象的均值(中心对象),计算每个对象与这些中心对象的距离;并根据最小距离重新对相应对象进行划分 (3)重新计算每个(有变化)聚类的均值(中心对象) (4)计算标准测度函数,当满足一定条件,如函数收敛时,则算法终止;如果条件不满足则回到步骤(2) 形式化描述 输入:数据集D,划分簇的个数k 输出:k个簇的集合 (1)从数据集D中任意选择k个对象作为初始簇的中心; (2)Repeat (3)For数据集D中每个对象P do (4)计算对象P到k个簇中心的距离 (5)将对象P指派到与其最近(距离最短)的簇;

(6)End For (7)计算每个簇中对象的均值,作为新的簇的中心; (8)Until k个簇的簇中心不再发生变化 对算法已有优化方法的分析 (1)K-means算法中聚类个数K需要预先给定 这个K值的选定是非常难以估计的,很多时候,我们事先并不知道给定的数据集应该分成多少个类别才最合适,这也是K一means算法的一个不足"有的算法是通过类的自动合并和分裂得到较为合理的类型数目k,例如Is0DAIA算法"关于K一means算法中聚类数目K 值的确定,在文献中,根据了方差分析理论,应用混合F统计量来确定最佳分类数,并应用了模糊划分嫡来验证最佳分类数的正确性。在文献中,使用了一种结合全协方差矩阵RPCL算法,并逐步删除那些只包含少量训练数据的类。文献中针对“聚类的有效性问题”提出武汉理工大学硕士学位论文了一种新的有效性指标:V(k km) = Intra(k) + Inter(k) / Inter(k max),其中k max是可聚类的最大数目,目的是选择最佳聚类个数使得有效性指标达到最小。文献中使用的是一种称为次胜者受罚的竞争学习规则来自动决定类的适当数目"它的思想是:对每个输入而言不仅竞争获胜单元的权值被修正以适应输入值,而且对次胜单元采用惩罚的方法使之远离输入值。 (2)算法对初始值的选取依赖性极大以及算法常陷入局部极小解 不同的初始值,结果往往不同。K-means算法首先随机地选取k个点作为初始聚类种子,再利用迭代的重定位技术直到算法收敛。因此,初值的不同可能导致算法聚类效果的不稳定,并且,K-means算法常采用误差平方和准则函数作为聚类准则函数(目标函数)。目标函数往往存在很多个局部极小值,只有一个属于全局最小,由于算法每次开始选取的初始聚类中心落入非凸函数曲面的“位置”往往偏离全局最优解的搜索范围,因此通过迭代运算,目标函数常常达到局部最小,得不到全局最小。对于这个问题的解决,许多算法采用遗传算法(GA),例如文献中采用遗传算法GA进行初始化,以内部聚类准则作为评价指标。 (3)从K-means算法框架可以看出,该算法需要不断地进行样本分类调整,不断地计算调整后的新的聚类中心,因此当数据量非常大时,算法的时间开销是非常大 所以需要对算法的时间复杂度进行分析,改进提高算法应用范围。在文献中从该算法的时间复杂度进行分析考虑,通过一定的相似性准则来去掉聚类中心的候选集,而在文献中,使用的K-meanS算法是对样本数据进行聚类。无论是初始点的选择还是一次迭代完成时对数据的调整,都是建立在随机选取的样本数据的基础之上,这样可以提高算法的收敛速度。

蚁群聚类算法综述

计算机工程与应用2006.16 引言 聚类分析是数据挖掘领域中的一个重要分支[1],是人们认 和探索事物之间内在联系的有效手段,它既可以用作独立的 据挖掘工具,来发现数据库中数据分布的一些深入信息,也 以作为其他数据挖掘算法的预处理步骤。所谓聚类(clus- ring)就是将数据对象分组成为多个类或簇(cluster),在同一 簇中的对象之间具有较高的相似度,而不同簇中的对象差别大。传统的聚类算法主要分为四类[2,3]:划分方法,层次方法, 于密度方法和基于网格方法。 受生物进化机理的启发,科学家提出许多用以解决复杂优 问题的新方法,如遗传算法、进化策略等。1991年意大利学A.Dorigo等提出蚁群算法,它是一种新型的优化方法[4]。该算不依赖于具体问题的数学描述,具有全局优化能力。随后他 其他学者[5~7]提出一系列有关蚁群的算法并应用于复杂的组优化问题的求解中,如旅行商问题(TSP)、调度问题等,取得 著的成效。后来其他科学家根据自然界真实蚂蚁群堆积尸体分工行为,提出基于蚂蚁的聚类算法[8,9],利用简单的智能体 仿蚂蚁在给定的环境中随意移动。这些算法的基本原理简单懂[10],已经应用到电路设计、文本挖掘等领域。本文详细地讨现有蚁群聚类算法的基本原理与性能,在归纳总结的基础上 出需要完善的地方,以推动蚁群聚类算法在更广阔的领域内 到应用。 2聚类概念及蚁群聚类算法 一个簇是一组数据对象的集合,在同一个簇中的对象彼此 类似,而不同簇中的对象彼此相异。将一组物理或抽象对象分组为类似对象组成的多个簇的过程被称为聚类。它根据数据的内在特性将数据对象划分到不同组(或簇)中。聚类的质量是基于对象相异度来评估的,相异度是根据描述对象的属性值来计算的,距离是经常采用的度量方式。聚类可用数学形式化描述为:设给定数据集X={x 1 ,x 2 ,…,x n },!i∈{1,2,…,n},x i ={x i1 ,x i2 , …,x

k-means聚类算法的研究全解

k-means聚类算法的研究 1.k-means算法简介 1.1 k-means算法描述 给定n个对象的数据集D和要生成的簇数目k,划分算法将对象组织划分为k个簇(k<=n),这些簇的形成旨在优化一个目标准则。例如,基于距离的差异性函数,使得根据数据集的属性,在同一个簇中的对象是“相似的”,而不同簇中的对象是“相异的”。划分聚类算法需要预先指定簇数目或簇中心,通过反复迭代运算,逐步降低目标函数的误差值,当目标函数收敛时,得到最终聚类结果。这类方法分为基于质心的(Centroid-based)划分方法和基于中心的(Medoid-based)划分方法,而基于质心的划分方法是研究最多的算法,其中k-means算法是最具代表和知名的。 k-means算法是1967年由MacQueen首次提出的一种经典算法,经常用于数据挖掘和模式识别中,是一种无监督式的学习算法,其使用目的是对几何进行等价类的划分,即对一组具有相同数据结构的记录按某种分类准则进行分类,以获取若干个同类记录集。k-means聚类是近年来数据挖掘学科的一个研究热点和重点,这主要是因为它广泛应用于地球科学、信息技术、决策科学、医学、行为学和商业智能等领域。迄今为止,很多聚类任务都选择该算法。k-means算法是应用最为广泛的聚类算法。该算法以类中各样本的加权均值(成为质心)代表该类,只用于数字属性数据的聚类,算法有很清晰的几何和统计意义,但抗干扰性较差。通常以各种样本与其质心欧几里德距离总和作为目标函数,也可将目标函数修改为各类中任意两点间欧几里德距离总和,这样既考虑了类的分散度也考虑了类的紧致度。k-means算法是聚类分析中基于原型的划分聚类的应用算法。如果将目标函数看成分布归一化混合模型的似然率对数,k-means算法就可以看成概率模型算法的推广。 k-means算法基本思想: (1)随机的选K个点作为聚类中心; (2)划分剩余的点; (3)迭代过程需要一个收敛准则,此次采用平均误差准则。 (4)求质心(作为中心); (5)不断求质心,直到不再发生变化时,就得到最终的聚类结果。 k-means聚类算法是一种广泛应用的聚类算法,计算速度快,资源消耗少,但是k-means算法与初始选择有关系,初始聚类中心选择的随机性决定了算法的有效性和聚

利用K-Means聚类进行航空公司客户价值分析

利用K-Means聚类进行航空公司客户价值分析 1.背景与挖掘目标 1.1背景航空公司业务竞争激烈,从 产品中心转化为客户中心。针对不同类型客户,进行精准营 销,实现利润最大化。建立客户价值评估模型,进行客户分 类,是解决问题的办法 1.2挖掘目标借助航空公司客户数据, 对客户进行分类。对不同的客户类别进行特征分析,比较不 同类客户的客户价值对不同价值的客户类别提供个性化服 务,制定相应的营销策略。详情数据见数据集内容中的 air_data.csv和客户信息属性说明 2.分析方法与过程 2.1分析方法首先,明确目标是客户价值识别。识别客户价值,应用 最广泛的模型是三个指标(消费时间间隔(Recency),消费频率(Frequency),消费金额(Monetary))以上指标简称RFM 模型,作用是识别高价值的客户消费金额,一般表示一段时 间内,消费的总额。但是,因为航空票价收到距离和舱位等 级的影响,同样金额对航空公司价值不同。因此,需要修改 指标。选定变量,舱位因素=舱位所对应的折扣系数的平均 值=C,距离因素=一定时间内积累的飞行里程=M。再考虑到,航空公司的会员系统,用户的入会时间长短能在一定程度上 影响客户价值,所以增加指标L=入会时间长度=客户关系长度总共确定了五个指标,消费时间间隔R,客户关系长度L,消费频率F,飞行里程M和折扣系数的平均值C以上指标,

作为航空公司识别客户价值指标,记为LRFMC模型如果采用传统的RFM模型,如下图。它是依据,各个属性的平均 值进行划分,但是,细分的客户群太多,精准营销的成本太 高。 综上,这次案例,采用聚类的办法进行识别客户价值,以LRFMC模型为基础本案例,总体流程如下图 2.2挖掘步骤从航空公司,选择性抽取与新增数据抽取,形 成历史数据和增量数据对步骤一的两个数据,进行数据探索 性分析和预处理,主要有缺失值与异常值的分析处理,属性 规约、清洗和变换利用步骤2中的已处理数据作为建模数据,基于旅客价值的LRFMC模型进行客户分群,对各个客户群 再进行特征分析,识别有价值客户。针对模型结果得到不同 价值的客户,采用不同的营销手段,指定定制化的营销服务,或者针对性的优惠与关怀。(重点维护老客户) 2.3数据抽取选取,2014-03-31为结束时间,选取宽度为两年的时间段, 作为观测窗口,抽取观测窗口内所有客户的详细数据,形成 历史数据对于后续新增的客户信息,采用目前的时间作为重 点,形成新增数据 2.4探索性分析本案例的探索分析,主要 对数据进行缺失值和异常值分析。发现,存在票价为控制, 折扣率为0,飞行公里数为0。票价为空值,可能是不存在 飞行记录,其他空值可能是,飞机票来自于积分兑换等渠道,查找每列属性观测值中空值的个数、最大值、最小值的代码

K-means-聚类算法研究综述

K-means聚类算法研究综述 摘要:总结评述了K-means聚类算法的研究现状,指出K-means聚类算法是一个NP难优化问题,无法获得全局最优。介绍了K-means聚类算法的目标函数,算法流程,并列举了一个实例,指出了数据子集的数目K,初始聚类中心选取,相似性度量和距离矩阵为K-means聚类算法的3个基本参数。总结了K-means聚类算法存在的问题及其改进算法,指出了K-means 聚类的进一步研究方向。 关键词:K-means聚类算法;NP难优化问题;数据子集的数目K;初始聚类中心选取;相似性度量和距离矩阵 Review of K-means clustering algorithm Abstract: K-means clustering algorithm is reviewed. K-means clustering algorithm is a NP hard optimal problem and global optimal result cannot be reached. The goal,main steps and example of K-means clustering algorithm are introduced. K-means algorithm requires three user-specified parameters: number of clusters K,cluster initialization,and distance metric. Problems and improvement of K-means clustering algorithm are summarized then. Further study directions of K-means clustering algorithm are pointed at last. Key words: K-means clustering algorithm; NP hard optimal problem; number of clusters K; cluster initialization; distance metric K-means聚类算法是由Steinhaus1955年、Lloyed1957年、Ball & Hall1965年、McQueen1967年分别在各自的不同的科学研究领域独立的提出。K-means聚类算法被提出来后,在不同的学科领域被广泛研究和应用,并发展出大量不同的改进算法。虽然K-means聚类算法被提出已经超过50年了,但目前仍然是应用最广泛的划分聚类算法之一[1]。容易实施、简单、高效、成功的应用案例和经验是其仍然流行的主要原因。 文中总结评述了K-means聚类算法的研究现状,指出K-means聚类算法是一个NP难优化问题,无法获得全局最优。介绍了K-means聚类算法的目标函数、算法流程,并列举了一个实例,指出了数据子集的数目K、初始聚类中心选取、相似性度量和距离矩阵为K-means聚类算法的3个基本参数。总结了K-means聚类算法存在的问题及其改进算法,指出了K-means聚类的进一步研究方向。 1经典K-means聚类算法简介 1.1K-means聚类算法的目标函数 对于给定的一个包含n个d维数据点的数据集 12 {x,x,,x,,x} i n X=??????,其中d i x R ∈,以及要生成的数据子集的数目K,K-means聚类算法将数据对象组织为 K个划分{c,i1,2,} k C K ==???。每个划分代表一个类c k,每个类c k有一个类别中心iμ。选取欧氏距离作为相似性和 距离判断准则,计算该类内各点到聚类中心 i μ的距离平方和 2 (c) i i k i k x C J xμ ∈ =- ∑(1) 聚类目标是使各类总的距离平方和 1 (C)(c) K k k J J = =∑最小。 22 1111 (C)(c) i i K K K n k i k ki i k k k x C k i J J x d x μμ ==∈== ==-=- ∑∑∑∑∑ (2)其中, 1 i i ki i i x c d x c ∈ ? =? ? ? 若 若 ,显然,根据最小二乘 法和拉格朗日原理,聚类中心 k μ应该取为类别 k c类各数据点的平均值。 K-means聚类算法从一个初始的K类别划分开始,然

第9章rapidminer_k_means聚类.辨别分析v1

第9章K-Means 聚类、辨别分析 9.1理解聚类分析 餐饮企业经常会碰到这样的问题: 1)如何通过餐饮客户消费行为的测量,进一步评判餐饮客户的价值和对餐饮客户进行细分,找到有价值的客户群和需关注的客户群? 2)如何合理对菜品进行分析,以便区分哪些菜品畅销毛利又高,哪些菜品滞销毛利又低? 餐饮企业遇到的这些问题,可以通过聚类分析解决。 9.1.1常用聚类分析算法 与分类不同,聚类分析是在没有给定划分类别的情况下,根据数据相似度进行样本分组的一种方法。与分类模型需要使用有类标记样本构成的训练数据不同,聚类模型可以建立在无类标记的数据上,是一种非监督的学习算法。聚类的输入是一组未被标记的样本,聚类根据数据自身的距离或相似度将他们划分为若干组,划分的原则是组样本最小化而组间(外部)距离最大化,如图9-1所示。 图9-1 聚类分析建模原理 常用聚类方法见表9-1。 表9-1常用聚类方法 类别包括的主要算法

常用聚类算法见图9-2。 表9-2常用聚类分析算法 9.1.2K-Means聚类算法 K-Means算法是典型的基于距离的非层次聚类算法,在最小化误差函数的基础上将数据划分为预定的类数K,采用距离作为相似性的评价指标,即认为两个对象的距离越近,其相似度就越大。 1.算法过程 1)从N个样本数据中随机选取K个对象作为初始的聚类中心; 2)分别计算每个样本到各个聚类中心的距离,将对象分配到距离最近的聚类中; 3)所有对象分配完成后,重新计算K个聚类的中心; 4)与前一次计算得到的K个聚类中心比较,如果聚类中心发生变化,转2),否则转 5); 5)当质心不发生变化时停止并输出聚类结果。 聚类的结果可能依赖于初始聚类中心的随机选择,可能使得结果严重偏离全局最优分类。实践中,为了得到较好的结果,通常以不同的初始聚类中心,多次运行K-Means算法。在所有对象分配完成后,重新计算K个聚类的中心时,对于连续数据,聚类中心取该簇的均值,但是当样本的某些属性是分类变量时,均值可能无定义,可以使用K-众数方

matlab实现Kmeans聚类算法

matlab实现Kmeans聚类算法 1.简介: Kmeans和应用于混合高斯模型的受限EM算法是一致的。高斯混合模型广泛用于数据挖掘、模式识别、机器学习、统计分析。Kmeans 的迭代步骤可以看成E步和M步,E:固定参数类别中心向量重新标记样本,M:固定均值只考虑(估计)了均值,而没有估计类别的方差,所以聚类的结构比较适合于特征协方差相等的类别。 Kmeans在某种程度也可以看成Meanshitf的特殊版本,Meanshift 是所以Meanshift可以用于寻找数据的多个模态(类别),利用的是梯度上升法。在06年的一篇CVPR文章上,证明了Meanshift方法是牛顿拉夫逊算法的变种。Kmeans和EM算法相似是指混合密度的形式已知(参数形式已知)情况下,利用迭代方法,在参数空间中搜索解。而Kmeans和Meanshift相似是指都是一种概率密度梯度估计的方法,不过是Kmean选用的是特殊的核函数(uniform kernel),而与混合概率密度形式是否已知无关,是一种梯度求解方式。 k-means是一种聚类算法,这种算法是依赖于点的邻域来决定哪些点应该分在点,也可以对高维的空间(3维,4维,等等)的点进行聚类,任意高维的空间都可以。 上图中的彩色部分是一些二维空间点。上图中已经把这些点分组了,并使用了不同的颜色对各组进行了标记。这就是聚类算法要做的事情。 这个算法的输入是: 1:点的数据(这里并不一定指的是坐标,其实可以说是向量)

2:K,聚类中心的个数(即要把这一堆数据分成几组) 所以,在处理之前,你先要决定将要把这一堆数据分成几组,即聚成几类。但并不是在所有情况下,你都事先就能知道需要把数据聚成几类的。意味着使用k-means就不能处理这种情况,下文中会有讲解。 把相应的输入数据,传入k-means算法后,当k-means算法运行完后,该算法的输出是: 1:标签(每一个点都有一个标签,因为最终任何一个点,总会被分到某个类,类的id号就是标签) 2:每个类的中心点。 标签,是表示某个点是被分到哪个类了。例如,在上图中,实际上有4中“标签”,每个“标签”使用不同的颜色来表示。所有黄色点我们可以用标签以看出,有3个类离的比较远,有两个类离得比较近,几乎要混合在一起了。 当然,数据集不一定是坐标,假如你要对彩色图像进行聚类,那么你的向量就可以是(b,g,r),如果使用的是hsv颜色空间,那还可以使用(h,s,v),当然肯定可以有不同的组合例如(b*b,g*r,r*b) ,(h*b,s*g,v*v)等等。 在本文中,初始的类的中心点是随机产生的。如上图的红色点所示,是本文随机产生的初始点。注意观察那两个离得比较近的类,它们几乎要混合在一起,看看算法是如何将它们分开的。 类的初始中心点是随机产生的。算法会不断迭代来矫正这些中心点,并最终得到比较靠5个中心点的距离,选出一个距离最小的(例如该点与第2个中心点的距离是5个距离中最小的),那么该点就归属于该类.上图是点的归类结果示意图. 经过步骤3后,每一个中心center(i)点都有它的”管辖范围”,由于这个中心点不一定是这个管辖范围的真正中心点,所以要重新计算中心点,计算的方法有很多种,最简单的一种是,直接计算该管辖范围内所有点的均值,做为心的中心点new_center(i). 如果重新计算的中心点new_center(i)与原来的中心点center(i)的距离大于一定的阈值(该阈值可以设定),那么认为算法尚未收敛,使用new_center(i)代替center(i)(如图,中心点从红色点

基于聚类的图像分割方法综述

信息疼术2018年第6期文章编号=1009 -2552 (2018)06 -0092 -03 DOI:10.13274/https://www.360docs.net/doc/739446006.html,ki.hdzj.2018. 06.019 基于聚类的图像分割方法综述 赵祥宇\陈沫涵2 (1.上海理工大学光电信息与计算机学院,上海200093; 2.上海西南位育中学,上海200093) 摘要:图像分割是图像识别和机器视觉领域中关键的预处理操作。分割理论算法众多,文中 具体介绍基于聚类的分割算法的思想和原理,并将包含的典型算法的优缺点进行介绍和分析。经过比较后,归纳了在具体应用中如何对图像分割算法的抉择问题。近年来传统分割算法不断 被科研工作者优化和组合,相信会有更多的分割新算法井喷而出。 关键词:聚类算法;图像分割;分类 中图分类号:TP391.41 文献标识码:A A survey of image segmentation based on clustering ZHAO Xiang-yu1,CHEN Mo-han2 (1.School of Optical Electrical and Computer Engineering,University of Shanghai for Science and Technology,Shanghai200093,China;2.Shanghai Southwest Weiyu Middle School,Shanghai200093,China) Abstract:Image segmentation is a key preprocessing operation in image recognition and machine vision. There are many existing theoretical methods,and this paper introduces the working principle ol image segmentation algorithm based on clustering.Firstly,the advantages and disadvantages ol several typical algorithms are introduced and analyzed.Alter comparison,the paper summarizes the problem ol the selection ol image segmentation algorithm in practical work.In recent years,the traditional segmentation algorithms were improved and combined by the researchers,it believes that more new algorithms are blown out. Key words:clustering algorithm;image segmentation;classilication 0引百 近年来科学技术的不断发展,计算机视觉和图像 识别发挥着至关重要的作用。在实际应用和科学研 究中图像处理必不可少,进行图像处理必然用到图像 分割方法,根据检测图像中像素不重叠子区域,将感 兴趣目标区域分离出来。传统的图像分割方法:阈值 法[1]、区域法[2]、边缘法[3]等。近年来传统分割算法 不断被研究人员改进和结合,出现了基于超像素的分 割方法[4],本文主要介绍超像素方法中基于聚类的经 典方法,如Mean Shift算法、K-m eans 算法、Fuzzy C-mean算法、Medoidshilt算法、Turbopixels算法和 SLIC 算法。简要分析各算法的基本思想和分割效果。 1聚类算法 1.1 Mean Shil't算法 1975年,Fukunaga[5]提出一种快速统计迭代算法,即Mean Shilt算法(均值漂移算法)。直到1995 年,Cheng[6]对其进行改进,定义了核函数和权值系 数,在全局优化和聚类等方面的应用,扩大了 Mean shil't算法适用范围。1997至2003年间,Co-maniciu[7-9]提出了基于核密度梯度估计的迭代式 搜索算法,并将该方法应用在图像平滑、分割和视频 跟踪等领域。均值漂移算法的基本思想是通过反复 迭代计算当前点的偏移均值,并挪动被计算点,经过 反复迭代计算和多次挪动,循环判断是否满足条件, 达到后则终止迭代过程[10]。Mean shil't的基本形 式为: 收稿日期:2017-06 -13 基金项目:国家自然科学基金资助项目(81101116) 作者简介:赵祥宇(1992-),男,硕士研究生,研究方向为数字图像处理。 —92 —

数据挖掘中的聚类算法综述

收稿日期:2006201204;修返日期:2006203219基金项目:国家自然科学基金资助项目(60473117) 数据挖掘中的聚类算法综述 3 贺 玲,吴玲达,蔡益朝 (国防科学技术大学信息系统与管理学院,湖南长沙410073) 摘 要:聚类是数据挖掘中用来发现数据分布和隐含模式的一项重要技术。全面总结了数据挖掘中聚类算法的研究现状,分析比较了它们的性能差异和各自存在的优点及问题,并结合多媒体领域的应用需求指出了其今后的发展趋势。 关键词:数据挖掘;聚类;聚类算法 中图法分类号:TP391 文献标识码:A 文章编号:100123695(2007)0120010204 Survey of Clustering A lgorith m s in Data M ining HE L ing,WU L ing 2da,CA I Yi 2chao (College of Infor m ation Syste m &M anage m ent,N ational U niversity of D efense Technology,Changsha Hunan 410073,China ) Abstract:Clustering is an i m portant technique in Data M ining (DM )f or the discovery of data distributi on and latent data pattern .This paper p r ovides a detailed survey of current clustering algorith m s in DM at first,then it makes a comparis on a mong the m,illustrates the merits existing in the m,and identifies the p r oblem s t o be s olved and the ne w directi ons in the fu 2ture according t o the app licati on require ments in multi m edia domain .Key works:Data M ining;Clustering;Clustering A lgorith m 1 引言 随着信息技术和计算机技术的迅猛发展,人们面临着越来越多的文本、图像、视频以及音频数据,为帮助用户从这些大量数据中分析出其间所蕴涵的有价值的知识,数据挖掘(Data M ining,DM )技术应运而生。所谓数据挖掘,就是从大量无序 的数据中发现隐含的、有效的、有价值的、可理解的模式,进而发现有用的知识,并得出时间的趋向和关联,为用户提供问题求解层次的决策支持能力。与此同时,聚类作为数据挖掘的主要方法之一,也越来越引起人们的关注。 本文比较了数据挖掘中现有聚类算法的性能,分析了它们各自的优缺点并指出了其今后的发展趋势。 2 DM 中现有的聚类算法 聚类是一种常见的数据分析工具,其目的是把大量数据点的集合分成若干类,使得每个类中的数据之间最大程度地相似,而不同类中的数据最大程度地不同。在多媒体信息检索及数据挖掘的过程中,聚类处理对于建立高效的数据库索引、实现快速准确的信息检索具有重要的理论和现实意义。 本文以聚类算法所采用的基本思想为依据将它们分为五类,即层次聚类算法、分割聚类算法、基于约束的聚类算法、机器学习中的聚类算法以及用于高维数据的聚类算法,如图1所示。 聚类 层次聚类算法 聚合聚类:Single 2L ink,Comp lete 2L ink,Average 2L ink 分解聚类 分割聚类算法基于密度的聚类基于网格的聚类 基于图论的聚类 基于平方误差的迭代重分配聚类:概率聚类、最近邻 聚类、K 2medoids 、K 2means 基于约束的聚类算法 机器学习中的聚类算法 人工神经网络方法 基于进化理论的方法:模拟退火、遗传算法用于高维数据的聚类算法 子空间聚类 联合聚类 图1 聚类算法分类示意图 211 层次聚类算法 层次聚类算法通过将数据组织成若干组并形成一个相应的树状图来进行聚类,它又可以分为两类,即自底向上的聚合层次聚类和自顶向下的分解层次聚类。聚合聚类的策略是先将每个对象各自作为一个原子聚类,然后对这些原子聚类逐层进行聚合,直至满足一定的终止条件;后者则与前者相反,它先将所有的对象都看成一个聚类,然后将其不断分解直至满足终止条件。 对于聚合聚类算法来讲,根据度量两个子类的相似度时所依据的距离不同,又可将其分为基于Single 2L ink,Comp lete 2L ink 和Average 2L ink 的聚合聚类。Single 2L ink 在这三者中应用最为广泛,它根据两个聚类中相隔最近的两个点之间的距离来评价这两个类之间的相似程度,而后两者则分别依据两类中数据点之间的最远距离和平均距离来进行相似度评价。 CURE,ROCK 和CHAME LE ON 算法是聚合聚类中最具代 表性的三个方法。 Guha 等人在1998年提出了C URE 算法 [1] 。该方法不用 单个中心或对象来代表一个聚类,而是选择数据空间中固定数目的、具有代表性的一些点共同来代表相应的类,这样就可以

利用K-Means聚类进行航空公司客户价值分析.doc

利用 K-Means 聚类进行航空公司客户价值分析 1.背景与挖掘目标 1.1 背景航空公司业务竞争激烈,从 产品中心转化为客户中心。针对不同类型客户,进行精准营 销,实现利润最大化。建立客户价值评估模型,进行客户分 类,是解决问题的办法 1.2 挖掘目标借助航空公司客户数据,对客户进行分类。对不同的客户类别进行特征分析,比较不 同类客户的客户价值对不同价值的客户类别提供个性化服 务,制定相应的营销策略。详情数据见数据集内容中的 air_data.csv 和客户信息属性说明 2.分析方法与过程 2.1 分析方法首先,明确目标是客户价值识别。识别客户价值,应用 最广泛的模型是三个指标(消费时间间隔(Recency) ,消费 频率( Frequency),消费金额( Monetary ))以上指标简称RFM 模型,作用是识别高价值的客户消费金额,一般表示一段时 间内,消费的总额。但是,因为航空票价收到距离和舱位等 级的影响,同样金额对航空公司价值不同。因此,需要修改 指标。选定变量,舱位因素=舱位所对应的折扣系数的平均 值=C,距离因素 =一定时间内积累的飞行里程 =M 。再考虑到,航空公司的会员系统,用户的入会时间长短能在一定程度上 影响客户价值,所以增加指标 L= 入会时间长度 =客户关系长度总共确定了五个指标,消费时间间隔 R,客户关系长度 L ,消费频率 F,飞行里程 M 和折扣系数的平均值 C 以上指标,

作为航空公司识别客户价值指标,记为LRFMC 模型如果采用传统的 RFM 模型,如下图。它是依据,各个属性的平均 值进行划分,但是,细分的客户群太多,精准营销的成本太 高。 综上,这次案例,采用聚类的办法进行识别客户价值,以LRFMC 模型为基础本案例,总体流程如下图 2.2 挖掘步骤从航空公司,选择性抽取与新增数据抽取,形 成历史数据和增量数据对步骤一的两个数据,进行数据探索 性分析和预处理,主要有缺失值与异常值的分析处理,属性 规约、清洗和变换利用步骤 2 中的已处理数据作为建模数据, 基于旅客价值的 LRFMC 模型进行客户分群,对各个客户群再 进行特征分析,识别有价值客户。针对模型结果得到不同 价值的客户,采用不同的营销手段,指定定制化的营销服务,或者针对性的优惠与关怀。(重点维护老客户) 2.3 数据抽取选取, 2014-03-31 为结束时间,选取宽度为两年的时间段,作为观测窗口,抽取观测窗口内所有客户的详细数据,形成 历史数据对于后续新增的客户信息,采用目前的时间作为重 点,形成新增数据 2.4 探索性分析本案例的探索分析,主要对 数据进行缺失值和异常值分析。发现,存在票价为控制,折扣 率为 0,飞行公里数为 0。票价为空值,可能是不存在飞行记录,其他空值可能是,飞机票来自于积分兑换等渠道,查找 每列属性观测值中空值的个数、最大值、最小值的代码

K-means文本聚类算法

最大距离法选取初始簇中心的K-means文本聚类算法的研究 的评论 背景 随着计算机技术和网络技术的飞速发展,人们的生活方式产生了极大的改变。计算机从一个有几个房子大小的巨无霸,已经变成了小巧的笔记本。网络设备也已经从PC端走向移动端。越来越丰富的网络设备,让人们能在网络里畅游,网络对于人们来说触手可及,同时也产生了巨大的数据流量。人们如何从海量的数据中找到有用的信息,成为了现在计算机学科的研究热点。聚类是数据挖掘中重要的一支。由于聚类具有无需先验知识的优势,可以根据数据自然分部而获取知识。聚类成为数据挖掘领域一个非常活跃的领域,而且得到了广泛的应用。聚类就是把一个数据集合分成几个簇,在同一个簇里,数据相关性最高,但是在2个不同的簇里,数据相关性最低。K-means聚类算法主要针对处理大数据集时,处理快速简单,并且算法具有高效性和可伸缩性。但是,K-means聚类算法随机的选择初始簇中心会导致以下缺点:(1)得到的聚类结果中容易出现局部最优,而不是全局最优;(2)聚类结果不具有稳定性,很大程度上依赖于初始簇中心;(3)聚类过程中的迭代次数增加使聚类过程中的总耗时增加。 传统的k-means聚类算法 传统的聚类算法思想:首先从N个数据对象集合中随机选择k个对象,然后计算剩余的N-k个对象与k个对象的距离(相似度),与k个对象中哪个对象的距离最小,就把分给那个对象;然后在计算每个簇中的簇中心,即是每个簇中对象的均值;不断重复这一过程步骤,直到标准测度函数E开始收敛为止。 K-means算法描述如下: 输入:迭代终止条件ε,最大的迭代次数为max,簇的总数目是k,样本集有N个数据对象。 输出:满足迭代终止条件的k个簇和迭代次数s。 随机初始化k个簇中心: 对每个数据对象,分别计算该对象与k个簇中心均值的距离,并选择距离最小的簇将该对象加个到该簇里; 重新计算k个簇的中心,利用函数E计算出此时的函数值; 如果带到最大迭代次数或满足:

聚类中K-means算法综述讲解

攻读硕士学位研究生试卷(作业)封面(2015 至2016 学年度第一学期) 题目论文选读 科目聚类分析中K-means算法综述 姓名王苑茹 专业计算机技术 入学年月2015年8月 简短评语 成绩:授课教师签字:

聚类分析中K-means算法综述 摘要:聚类分析是数据挖掘中一个极其重要的研究方向,是一个将数据划分成簇的方法或手段。聚类分析可广泛利用在商务智能,Web搜索,生物学以及图像模式识别等众多方面。本文主要叙述聚类分析中的K-means聚类算法,总结了K-means聚类算法的研究现状,并针对K-means算法的相关改进做了综述。 关键词:K-means聚类算法;数据子集;聚类中心;相似性度量和距离矩阵 Overview of K-means algorithm in clustering analysis Abstract:Clustering is major field in data mining which also is an important method of data partition or grouping. Clustering now has been applied into various ways in business intelligence,Web classification,biology,market and so on.In this paper, we introduce the spatial clustering rules,At the same time, the classical K-means algorithm is describe,And some related improvements to K-means algorithm are summarized. Key words: K-means clustering algorithm; number of clusters K; cluster initialization; distance metric

基于K―means聚类的客户细分案例分析

基于K―means聚类的客户细分案例分析 【摘要】当今流行的客户细分理论的视角主要关注在消费市场的细分上,现有的客户细分理论中根据客户购买的产品特征进行细分的分析和研究相对较少,因此本文的研究就是把某品牌鞋子的风格特征作为细分变量,基于某企业的销售数据来进行分析,选择K-means聚类分析方法结合企业的实际情况,划分出不同的客户群,企业可以根据不同客户群的需求和对企业的贡献制定不同的宣传营销策略,降低企业的销售成本,提高企业的竞争力。 【关键词】客户细分K-means聚类案例分析营销策略 一、案例介绍 某公司是一个以鞋类的研发制造及品牌管理为主的时 尚集团公司,业务遍及大中华区(中国大陆、香港、台湾)、亚洲、欧洲及北美洲,是中国最成功的国内品牌之一。该公司在中国经营的组织架构为:总公司――分公司――专卖店。其中,总公司负责拓展策略和公司年度工作计划的制定,以及成本控制和分公司事务管理。分公司负责执行总公司的战略,对专卖店、专卖店人员实施管理,工作内容包括:新开专卖店寻址、申请开店、签约、开店;对分公司人员管理、分公司销售指标达成、执行总公司促销活动等。

二、数据处理 (一)数据准备 原始数据包括两张表:客户交易记录表和鞋子具体属性表,其中客户交易记录表与鞋子属性表连接的变量是鞋子ID,交易记录数据的时间是过去一年2013年9月1日到2014年9月1日。 (二)数据清洗 该企业一年的交易记录有几千万条,所以原始的交易数据量非常大,这样就很容易出现噪声数据、空缺数据和不一致数据,所以必须要经过一系列的分析与处理,包括对缺失值的处理和异常值的处理,例如:去除客户属性为空的客户记录、剔除消费额和消费次数不在正常范围内的客户记录等。 (1)剔除异常的正负交易。从客户交易记录表中选出过去一年交易ID不为空的正常交易记录,交易记录表中的金额有正负之分,正表示购买记录,负表示退货记录,要剔除掉没有正交易与之对应的退货记录。 (2)剔除异常的购买数量和金额。由于有些客户不是会员,专卖店的销售员会帮客户刷自己的会员卡,这样就会出现一个会员ID在一段时间内交易数量和交易金额超出正常范围。本文用3δ准则剔除不在正常范围内异常客户。 (三)数据转换和整合

(完整版)X-means:一种针对聚类个数的K-means算法改进

X-means:一种针对聚类个数的K-means算法改进 摘要 尽管K-means很受欢迎,但是他有不可避免的三个缺点:1、它的计算规模是受限的。2、它的聚类个数K必须是由用户手动指定的。3、它的搜索是基于局部极小值的。在本文中,我们引入了前两种问题的解决办法,而针对最后一个问题,我们提出了一种局部补救的措施。根据先前有关算法改进的工作,我们引入了一种根据BIC(Bayesian Information Criterion)或者AIC(Akaike information criterion)得分机制而确定聚类个数的算法,本文的创新点包括:两种新的利用充分统计量的方式,还有一种有效地测试方法,这种方法在K-means算法中可以用来筛选最优的子集。通过这样的方式可以得到一种快速的、基于统计学的算法,这种算法可以实现输出聚类个数以及他们的参量值。实验表明,这种技术可以更科学的找出聚类个数K值,比利用不同的K值而重复使用K-means算法更快速。 1、介绍 K-means算法在处理量化数据中已经用了很长时间了,它的吸引力主要在于它很简单,并且算法是局部最小化收敛的。但是它有三点不可避免的缺点:首先,它在完成每次迭代的过程中要耗费大量的时间,并且它所能处理的数据量也是很少的。第二,聚类个数K值必须由用户自身来定义。第三,当限定了一个确定的K值时,K-means算法往往比一个动态K值的算法表现的更差。我们要提供针对这些问题的解决办法,通过嵌入树型的数据集以及将节点存储为充分统计变量的方式来大幅度提高算法的计算速度。确定中心的分析算法要考虑到泰森多边形边界的几何中心,并且在估计过程的任何地方都不能存在近似的方法。另外还有一种估计方法,“黑名单”,这个列表中将会包含那些需要在指定的区域内被考虑的图心。这种方法不仅在准确度上以及处理数据的规模上都表现的非常好,而这个快速算法在X-means 聚类算法当中充当了结构算法的作用,通过它可以很快的估计K值。这个算法在每次使用 K-means算法之后进行,来决定一个簇是否应该为了更好的适应这个数据集而被分开。决定的依据是BIC得分。在本文中,我们阐述了“黑名单”方法如何对现有的几何中心计算BIC 得分,并且这些几何中心所产生的子类花费不能比一个单纯的K-means聚类算法更高。更进一步的,我们还通过缓存状态信息以及估计是否需要重新计算的方法来改善估计方法。 我们已经用X-means算法进行了实验,验证了它的确比猜K值更加科学有效。X-means 算法可以在人造的或者是真实数据中表现的更好,通过BIC得分机制。它的运行速度也是比K-means更快的。 2、定义 我们首先描述简单的K-means算法应该考虑哪些因素。通过K-means可以把一定量的数据集分为K个数据子集,这K个数据子集分别围绕着K个聚类中心。这种算法保持着K个聚类中心不变,并且通过迭代不断调整这K个聚类中心。在第一次迭代开始之前,K个聚类中心都是随机选取的,算法当聚类中心不再变化的时候返回最佳的结果,在每一次迭代中,算法都要进行如下的动作: 1、对于每一个节点向量,找到距离它最近的聚类中心,归入此类。 2、重新评估每一个图心的位置,对于每一个图心,必须是簇的质心。 K-means聚类算法通过局部最小化每个向量到对应图心的距离来实现聚类。同时,它处理真实数据时是非常慢的。许多情况下,真实的数据不能直接用K-means进行聚类,而要经过二次抽样筛选之后再进行聚类。Ester曾经提出了一种可以从树形数据中获得平衡的抽样数据的方法。Ng和Han曾经提出了一种可以指导概率空间对输入向量的检索模拟模型。

相关文档
最新文档