摘要:“物以聚类,人以群分”,文章结合自己对现有知识的总结理解从多元统计学的角度阐述聚类分析方法的实际应用意义,并基于海量数据挖掘的聚类算法思想,详细介绍K-means聚类算法、及其延伸的K-mode聚类算法和K-prototype聚类算法的基本原理、实现流程、算法评估和三种方法的优劣对比,针对数值属性变量、分类属性变量和混合属性变量等具体应用场景,给出更为精确的聚类度量方法。
关键词:聚类分析;K-means算法;K-mode算法;K-prototype算法
一、引 言
从本科阶段我们初识多元统计学时,我们一开始便接触了聚类分析方法的思想,到研究生阶段学过机器学习,便又给了它一个名字——聚类算法。百变不离其宗,所谓聚类,就是将相似的事物聚集在一起,而将不相似的事物划分到不同的类别的过程,是数据分析之中十分重要的一种手段,属于无监督学习方法的一种.聚类分析适用于很多不同类型的数据集合,很多研究领域,如工程、生物、医药、语言、人类学、心理学和市场学等,都对聚类技术的发展和应用起到了推动作用。
多元统计学中,涉及聚类方法的章节讲的较为浅显,不过麻雀虽小五脏俱全,包含系统聚类方法、K均值聚类方法、层次聚类等。可以说,聚类分析是一种建立分类的多元统计分析方法,它能够将一批样本(或变量)数据根据其诸多特征,按照在性质上的亲疏程度(各变量取值上的总体差异程度)在没有先验知识(没有事先指定的分类标准)的情况下进行自动分类,产生多个分类结果。类内部的个体在特征上具有相似性,不同类间个体特征的差异性较大。
数据挖掘的方法中聚类是对记录分组,把相似的记录放在一个类别里。聚类和分类的区别是聚类不依赖于预先定义好的类,不需要训练集。聚类分析中,首先需要确定基本聚类分析原则,在各聚集内部数据对象间之间,追求的是相似度最大化。而在各聚集对象之间,追求的是相似度最小化。其中,相异度是基于描述对象的属性值来计算,而距离是经常采用的度量方式。
二、聚类分析方法综述
关于聚类分析方法的探讨,已经较为成熟,传统的统计聚类分析方法包括系统聚类法、分解法、加入法、动态聚类法、有序样品聚类、有重叠聚类和模糊聚类等。采用k-均值、k-中心点等算法的聚类分析工具已被加入到许多著名的统计分析软件包中,如SPSS、SAS、python-sklearn-cluster等。
在过去的几年中聚类分析发展方向有两个:加强现有的聚类算法和发明新的聚类算法。现在已经有一些加强的算法用来处理大型数据库和高维度数据,例如小波变换使用多分辨率算法,网格从粗糙到密集从而提高聚类簇的质量。然而,对于数据量大、维度高并且包含许多噪声的集合,要找到一个“全能”的聚类算法是非常困难的,文章则根据模型建立和实际应用中最实用最精准的聚类方法进行对比。
(一)K-means聚类算法
k-means聚类算法是一种简单易行,时间复杂度低的聚类算法,特别是针对大规模的数据集,也是采取最多的聚类方法。但其只能处理数值属性限制了他的应用范围,如果处理其他类型的数据,则会造成一定的偏差。k-means聚类算法是基于划分的相关聚类算法,自从该算法被开发出来后,就一直被拿来研究和改进。该算法的主要思想是大家非常了解的,首先随机选取K个对象作为中心点,然后遍历每个数据对象,直到收敛为止。它的具体算法步骤如下:
(1)确立最终聚类处理得到簇的个数,如果有先验知识,如知道一个数据集为有3类,则可设k=3。如果不清楚,有一些指导性方法可确定估计值;
(2)选取k条初始记录作为质心,k条记录的欧式具体尽量大,说明记录的相关性低,提高聚类效果;
(3)从数据集读取一条记录,计算与k个质心的欧式距离,并归并到距离最短的一个簇内,并更新簇的质心;重复第三部直至将数据集读取完;
(4)重新调整记录所属的簇,这一步也是比较难理解的。因为每个簇的质心随着加入记录而更新改变,因此导致原先属于这个簇的记录由于与现在改变后的另外一个簇的质心距离更短,所以也应该重新将它分配到更短距离的那个簇上。分配后更新所有簇的质心,不断重复第四步知道没有记录重新分配。
其中,K-means算法2个核心问题:(1)度量记录之间的相关性的计算公式,此处采用欧式距离(2)更新簇内质心的方法,此处采用平均值法,即means;
(二)K-mode聚类算法
k-modes算法是在数据挖掘中对分类属性型数据的采用的聚类算法。k-modes算法是对k-means算法的扩展。k-means算法是在数据挖掘领域中普遍应用的聚类算法,它只能处理数值型数据,而不能处理分类属性型数据。例如表示人的属性有:姓名、性别、年龄、家庭住址等属性。而k-modes算法就能够处理分类属性型数据。
k-modes算法采用差异度来代替k-means算法中的距离。k-modes算法中差异度越小,则表示距离越小。一个样本和一个聚类中心的差异度就是它们各个属性不相同的个数,不相同则记为一,最后计算一的总和。这个和就是某个样本到某个聚类中心的差异度。该样本属于差异度最小的聚类中心。
K-modes算法是按照k-means算法的核心内容进行修改,针对分类属性的的度量和更新质心的问题而改进。具体如下:
(1)度量记录之间的相关性D的计算公式是比较两记录之间,属性相同为0,不同为1,并所有相加。因此D越大,即他的不相关程度越强(与欧式距离代表的意义是一样的);(2)更新modes,使用一个簇的每个属性出现频率最大的那个属性值作为代表簇的属性值(如{[a,b] [a,c] [c,b] [b,c]})代表模式为[a,b]或者[a,c];
(三)K-prototype聚类算法
K-Prototype算法是结合K-Means与K-modes算法,针对混合属性的,解决2个核心问题如下:(1)度量具有混合属性的方法是,数值属性采用K-means方法得到P1,分类属性采用K-modes方法P2,那么D=P1+a*P2,a是权重,如果觉得分类属性重要,则增加a,否则减少a,a=0时即只有数值属性;(2)更新一个簇的中心的方法,方法是结合K-Means与K-modes的更新方法
综合来看,k-means算法是在数据挖掘领域中普遍应用的聚类算法,它只能处理数值型数据,而不能处理分类属性型数据。例如表示人的属性有:姓名、性别、年龄、家庭住址等属性。而k-modes算法就能够处理分类属性型数据。k-modes算法采用差异度来代替k-means算法中的距离。k-modes算法中差异度越小,则表示距离越小。一个样本和一个聚类中心的差异度就是它们各个属性不相同的个数,不相同则记为一,最后计算一的总和。这个和就是某个样本到某个聚类中心的差异度。该样本属于差异度最小的聚类中心。而K-Prototype算法则是结合K-Means与K-modes算法的优劣,针对混合属性,对于很多数据类型的聚类问题都可通用。
三、聚类分析方法的评估及应用
(一)聚类分析方法的性能评估
说到聚类性能比较好,就是说同一簇的样本尽可能的相似,不同簇的样本尽可能不同,即是说聚类结果“簇内相似度”高,而“簇间相似度”低,也就是我们常说的“组间差异大,组内差异小”。
聚类性能的评估(度量)分为两大类:一种是分析外部信息,另一种是分析内部信息。外部信息就是能看得见的直观信息,这里指的是聚类结束后的类别号。虽然是个办法,但是这种办法没法应用。还有一种分析内部信息的办法,大致意思就是聚完类后会通过一些模型生成这个类聚的怎么样的参数,诸如熵和纯度这种数学评价指标。我们为了能让簇内样本距离尽量的近,簇与簇之间的样本尽量的远,我们需要用以下两种指标来评价。
(1)紧凑度:紧凑度是衡量一个簇内样本点之间的是否足够紧凑的,比如到簇中心的平均距离、方差等。
(2)分离度:分离度是衡量该样本是否到其他簇的距离是否足够的远,大致思路为,从所有的簇中心中至少有一个密度值要大于midpoint的密度值(这个本人不太懂,会用就行),然后通过SD算法的紧凑度算法做出一个权重值判断聚类的好坏。
(二)聚类分析方法的应用
聚类分析作为数据挖掘的方法之一,非常适合基于数值型的数据挖掘和算法实现,由于其建立模型和评价模型的快速性,聚类分析的应用还是很广泛的,其价值也是相当大的,聚类分析方法已经在模式识别图像处理、市场分析和数据分析等领域得到了广泛应用。针对典型的K-means算法,K-modes算法,K-Prototype算法等聚类算法,其在很多领域都有应用:
• 在图像分析中,人们希望将图像分割成具有类似性质的区域
• 在文本处理中,人们希望发现具有相同主题的文本子集
• 在顾客行为分析中,人们希望发现消费方式类似的顾客群,以便制订有针对性的客户管理方式和提高营销效率
具体来看在商业上,聚类分析被用来发现不同的客户群,并且通过购买模式刻画不同的客户群的特征。聚类分析是细分市场的有效工具,同时也可用于研究消费者行为,寻找新的潜在市场、选择实验的市场,并作为多元分析的预处理。 在生物上,聚类分析被用来动植物分类和对基因进行分类,获取对种群固有结构的认识 。在地理上,聚类能够帮助在地球中被观察的数据库商趋于的相似性。
在保险行业上,聚类分析通过一个高的平均消费来鉴定汽车保险单持有者的分组,同时根据住宅类型,价值,地理位置来鉴定一个城市的房产分组 。在因特网应用上,聚类分析被用来在网上进行文档归类来修复信息。
在电子商务上,聚类分析在电子商务中网站建设数据挖掘中也是很重要的一个方面,通过分组聚类出具有相似浏览行为的客户,并分析客户的共同特征,可以更好的帮助电子商务的用户了解自己的客户,向客户提供更合适的服务。
四、总结
聚类分析是数据挖掘领域的研究热点之一,主要用于发现数据之间的分布信息及内在结构,聚类分析既可以作为一个独立的分析数据的技术,又可以为其他数据挖掘算法完成数据预处理的步骤。因此,聚类分析是一项在实际应用中十分重要的研究课题。
综合来看,文章中的三种方法将只针对数值属性的k-means算法扩展到可以解决分类属性与混合属性,实验结果表明k-modes的算法时间复杂度比其余两者低。三者时间复杂度成线性增长。但存在三个问题仍需根据具体问题选取较为合适的方法来确定:(1)K值的确立(2)k-prototype中权重a的确立(3)k条初始记录的选取。可以尝试把算法应用到具体的实际问题中,扩展应用领域,来检验算法的可行性。同时意识到各个学科之间的联系及其重要性,每个学科都与生活存在密切的联系,在做项目时,首先需要联系实际生活,切合实际,然后将所学知识运用到生活,在生活中实现其价值。