张 军
(江苏海事职业技术学院信息工程学院 江苏 211170)
数据挖掘是一个涉及到很多领域的学科,因为大数据的出现使得数据挖掘需要运用统计学,人工智能等等来对数据进行处理分析。而聚类算法作为数据挖掘的核心方法之一,已经在科研和具体实践中得到了广泛的应用。聚类算法是数据挖掘中相对而言较复杂的算法,比分类算法在理解和处理上都有难度。聚类算法在实践中,要想有意义,就必须具有可伸缩性,即对不同大小的数据集合,处理效果要是一致的;聚类分析可以处理不同类型的数据,并且对于不同形状的簇,也要有合理的效果;聚类算法还可以识别其噪声数据,抛弃不相干的的噪声,聚类结果有逻辑上的意义,有可解释性;聚类还可以处理高纬度的数据,而且在合理的时间内处理完成。
所谓聚类就是将一些数据集合进行分组,每一组的对象之间是有相似的属性。聚类分析就是将给定的数据对象集合分成不同的簇,所谓的簇即是聚类产生的对象的集合,而簇的特点是每个簇内其属性相似,簇间属性不同。目标就是使类之间差异尽可能大,类内部的相似度尽可能大。
聚类和分类是完全不同的,分类的目标类别是已知的,而聚类的结果是未知的,需要不停的尝试聚类的结果类别数(除特殊情况,如已知总共的类别数)。聚类分析可以通过建模的方式简化数据,建模方法有分解法,模糊聚类等方法。从数据挖掘的角度来说,聚类算法是一种无监督学习的方式,所产生的簇是隐含的,这是与分类算法最大的不同点。在无监督学习中,用来训练的样本是没有进行标记的,事先不知道类别,通过聚类算法后,每个元素被分到某个类中,才有了类别。
聚类分析的过程是不断探索的,因此开始时,不必事先确定分类标准,聚类算法能够从样本自身中进行挖掘,进行分类。使用不同的聚类方法,其结果往往不同,同样的聚类算法,对不同的数据,聚类结果也可能不同。
在运用到实际生活中,其聚类分析是数据挖掘的核心,聚类可以独立获得其散布,观察其数据的特点,对其进行分析。
传统的聚类分析计算方法有以下几种类型:
(1)划分法
对于一个数据集,其大小为M,划分结果为K个类,K小于M。结果中每个类至少包含一个元素;每一个元素仅属于一个类。一般情况下K未知,算法首先给出一个初始的分组(有时为随机划分),然后通过某种确定的方法,衡量分组的好坏。得到一个衡量值。再通过迭代的方法改变分组里的元素,再次计算衡量值,选择其中最大衡量值的分组方式,思想是:同一组中的元素距离尽可能的近,而不同分组之间的距离尽可能的远。使用这种思想的最简单易懂应用最广泛的的算法是K-MEANS算法。
(2)层次聚类
有些数据可以进行层次分解,这种聚类方法要求数据满足层次性。不是所有的数据都适应。划分层次时,需要设定一个停止条件。在实际执行中,层次聚类可分为“自底向上”和“自顶向下”两种。“自底向上”算法的意思是,每一个元素刚开始都是一个单独的类,在下一轮迭代中,算法把最相近的元素归为一个类,此处需要事先设定好一个相似度,大于此相似度的才归类,否则仍然自己单独一类,如果不满足要求,则继续进行迭代。再次迭代时,相似度要相应的降低,以便聚类,直到所产生的类满足要求。这种思想的典型算法是BIRCH算法。
(3)基于密度的聚类
以上两种方法,在度量相似度时候,都是基于各种距离的,而基于密度的聚类不考虑元素之间的距离。基于距离的算法,其缺点是只能发现“类圆形”的簇,对于特殊形状的簇效果很差。基于密度的算法的思想是,只要某一个区域中点的密度大于事先设定好的值,就把这个点归到和它最相近的类中。基于密度的典型算法有DBSCAN算法等;
(1)K原型算法
该算法通过改进其K均值算法,使得该算法能够处理符号属性的数据。
(2)层次算法(CURE)
CURE算法选择类是以数据点作为依据,合并类是按照距离最近的类将其合并,直到其合并的个数满足要求位置。层次算法不在使用半径或所有点表示类别,而是从了类别选择数量一定并且分布比较好的点来描述该类别,并且为了使这些点更加靠近中心,乘以一个因子,而这个因子还可以将噪音的影响降到最低。将一个类用代表点来表示,使得类在扩展时,并不一定要按照球形的方式来扩展,采用随机抽样的方法提升空间,可以调整类的形状,来表示更大形状范围的簇。
(3)划分算法(CLARANS)
划分算法的过程是,先随机选一个点,随机对周围设定不超过最大邻居的邻接点,假如找出一个比它更好的点,就将其移入到该点中,如果没有更好的点则该点就作为其局部最小量。然后再随机选择一个点,去寻找另一个局部最小的点。
(4)基于密度算法
这种方法也叫DBSCAN算法,主要是利用类的密度连通性对类进行研究分析。其思想是,对于任意一个对象,在其给定的半径空间内,含有的对象数不能少于某一数值。只要区域的密度符合要求,就归为一类(一簇),而不关心类的形状和大小,其优点的其聚类的速度快,能够处理噪声,能够处理各种奇形怪状的簇。但其缺点也比较明显,一旦遇到大数据的样本则需要的内存也随之增加,其很消耗I/O。如果簇的密度不均匀,则效果也不够好。
在商业领域内,聚类较早的应用时发现客户群,对客户进行聚类,每个类之间的购买模式不同,针对不同客户群,采取不同的措施。
聚类算法可以用来细化细分市场,用来分析消费者的消费特点,归纳出新的潜在市场。互联网公司纷纷研究大数据和聚类分析,就是为了研究客户的行为特点,提高用户体验。
聚类算法还可以进行动植物分类,基因工程的大幅度进展,也跟大数据技术,分类聚类技术有关,对基因进行分类和聚类,是当前研究的热点。
聚类分析应用在保险领域,可以通过消费水平来对购买了汽车保险的人进行分组,或者根据住宅的类型,住宅的位置,住宅的价值等属性,来对一个城市的房产所有人进行分组,针对不同的分组,推荐不同的保险措施。
聚类分析在Internet上广泛用来文本归类。
聚类分析在电子商务中也有更加广泛的应用。数据挖掘通过用户浏览网页所产生的互动数据,如点击,购买,加入购物车等行为,对客户进行聚类分析。对不同类别的客户,给以不同的推荐和激励措施,极大的提高了用户体验,极大帮助了电子商务的发展。
数据挖掘是现如今广泛研究的热点课题,数据挖掘可以从大量的数据中挖掘有价值的数据,并制定用户可以理解的模式。聚类分析做为数据挖掘的核心功能之一,本文对聚类分析做出了深入的分析,通过分析几种聚类算法在数据挖掘中的应用,可以对大数据进行处理,并可以将其运用到各行各业当中。
[1]Margart H.Dunham,DATA MINING Introductory and Advanced Topics,北京:清华大学出版社,2011.
[2]郭军华,数据挖掘中聚类分析的研究:[硕士学位论文],湖北:武汉理工大学,2012.