PAM聚类算法的分析与实现.docx
《PAM聚类算法的分析与实现.docx》由会员分享,可在线阅读,更多相关《PAM聚类算法的分析与实现.docx(21页珍藏版)》请在冰豆网上搜索。
PAM聚类算法的分析与实现
毕业论文(设计)
论文(设计)题目:
PAM聚类算法的分析与实现
系别:
专业:
学号:
姓名:
指导教师:
时间:
毕业论文(设计)开题报告
系别:
计算机与信息科学系专业:
网络工程
学号
姓名
高华荣
论文(设计)题目
PAM聚类算法的分析与实现
命题来源
教师命题□学生自主命题□教师课题
选题意义(不少于300字):
随着计算机技术、网络技术的迅猛发展与广泛应用,人们面临着日益增多的业务数据,这些数据中往往隐含了大量的不易被人们察觉的宝贵信息,为了得到这些信息,人们想尽了一切办法。
数据挖掘技术就是在这种状况下应运而生了。
而聚类知识发现是数据挖掘中的一项重要的内容。
在日常生活、生产和科研工作中,经常要对被研究的对象经行分类。
而聚类分析就是研究和处理给定对象的分类常用的数学方法。
聚类就是将数据对象分组成多个簇,同一个簇中的对象之间具有较高的相似性,而不同簇中的对象具有较大的差异性。
在目前的许多聚类算法中,PAM算法的优势在于:
PAM算法比较健壮,对“噪声”和孤立点数据不敏感;由它发现的族与测试数据的输入顺序无关;能够处理不同类型的数据点。
研究综述(前人的研究现状及进展情况,不少于600字):
PAM(PartitioningAroundMedoid,围绕中心点的划分)算法是是划分算法中一种很重要的算法,有时也称为k-中心点算法,是指用中心点来代表一个簇。
PAM算法最早由Kaufman和Rousseevw提出,Medoid的意思就是位于中心位置的对象。
PAM算法的目的是对n个数据对象给出k个划分。
PAM算法的基本思想:
PAM算法的目的是对成员集合D中的N个数据对象给出k个划分,形成k个簇,在每个簇中随机选取1个成员设置为中心点,然后在每一步中,对输入数据集中目前还不是中心点的成员根据其与中心点的相异度或者距离进行逐个比较,看是否可能成为中心点。
用簇中的非中心点到簇的中心点的所有距离之和来度量聚类效果,其中成员总是被分配到离自身最近的簇中,以此来提高聚类的质量。
由于PAM算法对小数据集非常有效,但对大的数据集合没有良好的可伸缩性,就出现了结合PAM的CLARA(ClusterLARgerApplication)算法。
CLARA是基于k-中心点类型的算法,能处理更大的数据集合。
CLARA先抽取数据集合的多个样本,然后用PAM方法在抽取的样本中寻找最佳的k个中心点,返回最好的聚类结果作为输出。
后来又出现了CLARNS(ClusterLargerApplicationbaseduponRANdomizedsearch,也称随机搜索聚类算法),CLARNS是另外一种k-中心点方法,它将采样技术和PAM结合起来,对CLARA的聚类质量和可伸缩性进行了改进。
不像CLARA那样每个阶段选取一个固定样本,CLARANS在搜索的每一步都带一定随机性地选取一个样本。
研究的目标和主要内容(不少于400字)
对PAM聚类算法的基本思想、PAM聚类算法的替换代价和PAM聚类算法的性能等进行分析,根据PAM算法描述,使用matlab软件编写PAM聚类算法代码,实现PAM聚类算法。
使用编写好的代码运用到一个实例中,使同一个簇中的对象越近越好,而不同簇中的对象越远越好,对实例中的数据进行聚类后,把聚类后的结果作为进一步进行分析的基础。
本选题研究的主要内容如下:
(1)PAM聚类算法的分析,分析PAM聚类算法的主要内容如下:
1)PAM聚类算法的基本思想:
了解PAM聚类算法的基础,能够让人简单的了解PAM聚类算法的整个过程,对于最后的算法实现有很重要的意义。
2)PAM聚类算法的替换代价:
分四种情况计算替换代价,通过最后的总代价,来分析是否要进行替换的根据。
3)PAM聚类算法的算法描述:
使用matlab软件编写PAM聚类算法的代码的根据。
4)PAM聚类算法的性能:
包含了PAM聚类算法的优点和缺点。
(2)PAM聚类算法的实现,实现PAM聚类算法的主要内容如下:
1)算法实现:
根据PAM聚类算法描述,使用matlab软件编写PAM聚类算法代码。
2)把编写好PAM聚类算法的代码运用到一个实例中。
拟采用的研究方法
在指导老师的指导下,查找并阅读相关资料,利用相关资料对PAM算法进行详细分析,从而根据分析实现PAM算法。
使用matlab软件来编写代码。
研究工作的进度安排
2010年11月20号-11月29号,与指导老师沟通交流,完成毕业论文选题;
2010年11月29号-12月31号,收集整理资料,完成文献综述和开题报告;
2011年01月—2011年03月,继续整理资料;
2011年03月—2011年04月,完成初稿;
2011年04月—2011年05月,对初稿进行检查和修改;
2011年05月—2011年06月,完成(论文)撰写、装订,参加答辩
参考文献目录(作者、书名或论文题目、出版社或刊号、出版年月日或出版期号)
[1]毛国君,等.数据挖掘原理与算法(第二版)[M].北京:
清华大学出版社,2007.12
[2]JiaweiHan,MichelineKamber.数据挖掘:
概念与技术[M].北京:
机械工业出版社,2001.
[3]陈京民,等.数据仓库与数据挖掘技术[M].北京:
电子工业出版社,2002.
[4]刘同明,等.数据挖掘技术及其应用[M].北京:
国防工业出版社,2001.
[5]DavidHand,等.数据挖掘原理[M].张银奎,等译.北京:
机械工业出版社,中信出版社,2004.
指导教师意见
签名:
年月日
教研室主任意见
签名:
年月日
摘要………………………………………………………………………………1
关键词…………………………………………………………………………………1
Abstract…………………………………………………………………………1
Keywords……………………………………………………………………………1
引言………………………………………………………………………………1
1PAM聚类算法分析…………………………………………………………………2
1.1数据挖掘相关知识……………………………………………………………2
1.1.1数据挖掘简介…………………………………………………………2
1.1.2聚类…………………………………………………………………2
1.1.3聚类分析概述…………………………………………………………3
1.2PAM算法分析…………………………………………………………………5
1.2.1PAM算法详细论述……………………………………………………5
1.2.2PAM算法描述…………………………………………………………7
1.2.3PAM算法性能分析……………………………………………………7
2PAM聚类算法的实现………………………………………………………………7
2.1简要说明……………………………………………………………………7
2.2matlab简介…………………………………………………………………8
2.2.1matlab基本功能……………………………………………………8
2.3算法实现……………………………………………………………………8
2.4PAM聚类算法在学生成绩中的应用…………………………………………13
3小结……………………………………………………………………………14
致谢………………………………………………………………………………14
参考文献……………………………………………………………………………14
PAM聚类算法分析与实现
网络工程专业高华荣指导教师:
吴启明
[摘要]“物以类聚,人以群分”。
当有一个分类指标时,分类比较容易。
但是当有多个指标,要进行分类就不是很容易了。
对于多指标分类,由于不同的指标项对重要程度或依赖关系是相互不同的,所以也不能用平均的方法,因为这样会忽视相对重要程度的问题。
所以需要进行多元分类,即聚类分析。
本文主要介绍一种聚类分析算法,它就是PAM聚类算法。
首先是数据挖掘简介包括数据挖掘的基本概念,说明聚类是数据挖掘的一个很重要的功能。
同时进一步解释什么是聚类分析。
然后详细分析PAM聚类算法,最后给出了一个实现PAM聚类算法的例子。
[关键词]:
PAM聚类算法;中心点;聚类分析;代价
PAMClusteringAlgorithmAnalysisandImplementation
Major:
NetworkengineeringGaoHuarongSupervisor:
WuQiming
[Abstract]Birdsofafeatherflocktogether.Whenthereisaclassificationindex,classificationiseasier.Butwhenmorethanoneindex,wanttoundertakeclassificationisnotveryeasy.Formulti-indexclassification,duetothedifferentindexstudyofimportantdegreeordependentrelationshipismutualdifferent,soalsocannotuseaveragemethod,becausethatwillignoretherelativeimportance.Sotheneedofmultipleclassification,namelyclusteringanalysis.Thispapermainlyintroducesakindoftheclusteranalysisalgorithm,itisPAMclusteringalgorithm.Firstintroducesthebasicconceptofdataminingthatclusteringisanimportantdataminingthefunction.Andfurtherexplainedwhatclusteringanalysisis.ThendetailedanalysisofPAMclusteringalgorithm,andfinallypresentsarealizingexamplesofPAMclusteringalgorithm.
[Keywords]PAMclusteringalgorithm;center;Clusteringanalysis;cost
引言
如今数据挖掘的理论越来越广泛的应用在商业、制造业、金融业、医药业、电信业等等许多领域。
数据挖掘的目标之一是进行聚类分析。
聚类就是把一组个体按照相似性归成若干类别,它的目的是使得属于同一类别的个体之间的差别尽可能的小,而不同种类别上的个体间的差别尽可能的大。
PAM聚类算法是众多聚类算法的之一。
PAM算法的优势在于:
PAM算法比K-平均算法更健壮,对“噪声”和孤立点数据不敏感;它能够处理不同类型的数据点;它对小的数据集非常有效。
1PAM聚类算法的分析
1.1数据挖掘相关知识
1.1.1数据挖掘简介
数据挖掘是一个多学科交叉研究领域,它融合了数据库技术、人工智能、机器学习、统计学、知识工程、面向对象方法、信息检索、高性能计算以及数据可视化等最新技术的研究成果。
经过十几年的研究,产生了许多新概念和新方法。
特别是最近几年,一些基本概念和方法趋向于清晰,它的研究正向着更深入的方向发展。
数据挖掘之所以被称为未来信息处理的骨干技术之一,主要在于它以一种全新的概念改变着人类利用数据的方式。
20世纪,数据库技术取得了决定性的成果并且已经得到广泛的应用。
但是,数据库技术作为一种基本的信息储存和管理方式,仍然以联机事务处理为核心应用,缺少对决策、分析、预测等高级功能的支持机制。
众所周知,随着数据库容量的膨胀,特别是数据仓库以及Web等新型数据源的日益普及,联机分析处理、决策支持以及分类、聚类等复杂应用成为必然。
面对这一挑战,数据挖掘和知识发现技术应运而生,并显示出强大的生命力。
数据挖掘和知识发现使数据处理技术进入了一个更更高级的阶段。
它不仅能对过去的数据进行查询,并且能够找出过去数据之间的潜在联系,进行更高层次的分析,以便更好地做出理想的决策、预测未来的发展趋势等。
通过数据挖掘,有价值的知识、规则或高层次的信息就能从数据库的相关数据集合中抽取出来,从而使大型数据库作为一个丰富、可靠的资源为知识的提取服务。
1.1.2聚类
聚类是把一组个体按照相似性归成若干类别,它的目的是使得属于同一类别的个体之间的差别尽可能的小,而不同类别上的个体间的差别尽可能的大。
数据挖掘的目标之一是进行聚类分析。
通过聚类技术可以对源数据库中的记录划分为一系列有意义的子集,进而实现对数据的分析。
聚类与分类技术不同,前者总是在特定的类标识下寻求新元素属于哪个类,而后者则是通过对数据的分析比较生成新的类标识。
聚类分析生成的类标识刻画了数据所蕴含的类知识。
当然,数据挖掘中的分类和聚类技术都是在已有的技术基础上发展起来的,它们互有交叉和补充。
目前,数据挖掘研究中的聚类技术研究也是一个热点问题。
1999年,Jain等给出了聚类研究中的主要问题和方法。
聚类技术主要是以统计方法、机器学习、神经网络等方法为基础的。
作为统计学的一个重要分支,聚类分析已经被广泛地研究和应用。
比较有代表性的聚类技术是基于几何距离度量的聚类方法,如欧式距离、曼哈坦距离、明考斯基距离等。
在很多情况下,聚类的结果是形成一个概念,即当一组数据对象可以由一个概念来描述时,就形成一个簇。
因此,有的文献中又称其为概念聚类。
所以,一些问题可能不再是传统统计方法中的几何距离所能描述的,而是根据概念的描述来确定。
1.1.3聚类分析概述
聚类分析源于许多研究领域,包括数据挖掘、统计学、机器学习、模式识别等。
它是数据挖掘中的一个功能,但也能作为一个独立的工具来获得数据分布的情况,概况出每个簇的特点,或者集中注意力对特定的某些簇作进一步的分析。
此外,聚类分析也可以作为其他分析算法的预处理步骤,这些算法在生成的簇上进行处理。
数据挖掘技术的一个突出的特点是处理巨大的、复杂的数据集,这对聚类分析技术提出了特殊的挑战,要求算法具有可伸缩性、处理不同类型属性的能力、发现任意形状的类的能力、处理高维数据的能力等。
根据潜在的各项应用,数据挖掘对聚类分析方法提出了不同要求。
典型要求可以通过以下几个方面来刻画。
1.可伸缩性
可伸缩性是指聚类算法不论对于小数据集还是对于大数据集,都应是有效的。
在很多聚类算法当中,数据对象小于几百个的小数据集合上鲁棒性很好,而对于包含上万个数据对象的大规模数据库进行聚类时,将会导致不同的偏差结果。
研究大容量数据集的高效聚类方法是数据挖掘必须面对的挑战。
2.具有处理不同类型属性的能力
既可处理数据型数据,又可处理非数据型数据,既可以处理离散数据,又可以处理连续域内的数据,如布尔型,序数型,枚举型或这些数据类型的混合。
3.能够发现任意形状的聚类
许多聚类算法经常使用欧几里得距离来作为相似性度量方法,但基于这样的距离度量的算法趋向于发现具有相近密度和尺寸的球状簇。
但对于一个簇可能是任意形状的情况,提出能发现任意形状簇的算法是很重要的。
4.输入参数对领域知识的弱依赖性
在聚类分析当中,许多聚类算法要求用户输入一定的参数,如希望得到的簇的数目。
聚类结果对于输入的参数很敏感,通常参数较难确定,尤其是对于含有高维对象的数据集更是如此。
要求用人工输入参数不但加重了用户的负担,也使得聚类质量难以控制。
一个好的聚类算法应该对这个问题给出一个好的解决方法。
5.对于输入记录顺序不敏感
一些聚类算法对于输入数据的顺序是敏感的。
例如,对于同一个数据集合,以不同的顺序提交给同一个算法时,可能产生差别很大的聚类结果。
研究和开发对数据输入顺序不敏感的算法具有重要的意义。
6.挖掘算法应具有处理高维数据的能力
既可处理属性较少的数据,又能处理属性较多的数据。
很多聚类算法擅长处理低维数据,一般只涉及两到三维,人类对两三维数据的聚类结果很容易直观地判断聚类的质量。
但是,高维数据聚类结果的判断就不是直观了。
数据对象在高维空间的聚类是非常具有挑战性的,尤其是考虑到这样的数据可能高度偏斜并且非常稀疏。
7.处理噪声数据的能力
在现实应用中绝大多数的数据都包含了孤立点、空缺、未知数据或者错误的数据。
如果聚类算法对于这样的数据敏感,将会导致质量较低的聚类结果。
8.基于约束的聚类
在实际应用当中可能需要在各种约束条件下进行聚类。
既要找到满足特定的约束,又要具有良好聚类特性的数据分组是一项具有挑战性的任务。
9.挖掘出来的信息是可理解的和可用的
这点是容易理解的,但在实际挖掘中有时往往不能令人满意。
聚类分析在数据挖掘中的应用主要有以下几个方面:
1.聚类分析可以作为其他算法的预处理步骤
利用聚类进行数据预处理,可以获得数据的基本概况,在此基础上进行特征抽取或分类就可以提高精确度和挖掘效率。
也可将聚类结果用于进一步关联分析,以进一步获得有用的信息。
2.可以作为一个独立的工具来获得数据的分布情况
聚类分析是获得数据分析情况的有效方法。
例如,在商业上,聚类分析可以帮助市场分析人员从客户基本库当中发现不同的客户群,并且用购买模式来刻画不同的客户群的特征。
通过观察聚类得到的每个簇的特点,可以集中对特定的某些簇作进一步分析。
这在诸如市场细分、目标顾客定位、业绩评估、生物种群划分等方面具有广阔的应用前景。
3.聚类分析可以完成孤立点挖掘
许多数据挖掘算法试图使孤立点影响最小化,或者排除它们。
然而孤立点本身可能是非常有用的。
如在欺诈探测中,孤立点可能预示着欺诈行为的存在。
1.2PAM算法分析
1.2.1PAM算法详细论述
PAM(PartitioningAroundMedoid,围绕中心点的划分)是聚类分析算法中划分法的一个聚类方法,是最早提出的k-中心点算法之一。
PAM聚类算法的基本思想为:
选用簇中位置最中心的对象,试图对n个对象给出k个划分;代表对象也被称为是中心点,其他对象则被称为非代表对象;最初随机选择k个对象作为中心点,该算法反复地用非代表对象来代替代表对象,试图找出更好的中心点,以改进聚类的质量;在每次迭代中,所有可能的对象对被分析,每个对中的一个对象是中心点,而另一个是非代表对象。
对可能的各种组合,估算聚类结果的质量;一个对象Oi可以被使最大平方-误差值减少的对象代替;在一次迭代中产生的最佳对象集合成为下次迭代的中心点。
为了判定一个非代表对象Oh是否是当前一个代表对象Oi的好的替代,对于每一个非中心点对象Oj,下面的四种情况被考虑:
●第一种情况:
假设Oi被Oh代替作为新的中心点,Oj当前隶属于中心点对象Oi。
如果Oj离某个中心点Om最近,i≠m,那么Oj被重新分配给Om。
●第二种情况:
假设Oi被Oh代替作为新的中心点,Oj当前隶属于中心点对象Oi。
如果Oj离这个新的中心点Oh最近,那么Oj被分配给Oh。
●第三种情况:
假设Oi被Oh代替作为新的中心点,但是Oj当前隶属于另一个中心点对象Om,m≠i。
如果Oj依然离Om最近,那么对象的隶属不发生变化。
●第四种情况:
假设Oi被Oh代替作为新的中心点,但是Oj当前隶属于另一个中心点对象Om,m≠i。
如果Oj离这个新的中心点Oh最近,那么Oi被重新分配给Oh。
每当重新分配发生时,平方-误差E所产生的差别对代价函数有影响。
因此,如果一个当前的中心点对象被非中心点对象所代替,代价函数计算平方-误差值所产生的差别。
替换的总代价是所有非中心点对象所产生的代价之和。
如果总代价是负的,那么实际的平方-误差将会减小,Oi可以被Oh替代。
如果总代价是正的,则当前的中心点Oi被认为是可接受的,在本次迭代中没有变化。
PAM算法需用簇中位置最靠近中心的对象作为代表对象,然后反复地用非代表对象来代替代表对象,试图找出更好的中心点,在反复迭代的过程中,所有可能的“对象对”被分析,每个对中的一个对象是中心点,另一个是非代表对象。
一个对象代表可以被最大平方-误差值减少的对象代替。
一个非代表对象Oh是否是当前一个代表对象Oi的一个好的替代,对于每个非中心点对象Oj,有以下四种情况需要考虑:
(1)Oj当前隶属于Oi,如果Oi被Oh替换,且Oj离另一个Om最近,i!
=m,那么Oj被分配给Om,则替换代价为Cjih=d(j,m)-d(j,i)。
(2)Oj当前隶属于Oi,如果Oi被Oh替换,且Oj离Oh最近,那么Oj被分配给Oh,则替换代价为Cjih=d(j,h)-d(j,i)。
(3)Oj当前隶属于Om,m!
=i,如果Oi被Oh替换,且Oj仍然离Om最近,那么Oj被分配给Om,则替换代价为Cjih=0。
(4)Oj当前隶属于Om,m!
=i,如果Oi被Oh替换,且Oj离Oh最近,那么Oj被分配给Oh,则替换代价为Cjih=d(j,h)-d(j,m)。
1.2.2PAM算法描述
输入:
簇的数目k和包含n个对象的数据库
输出:
k个簇,使得所有对象与其最近中心点的相异度总和最小
(1)任意选择k个对象作为初始的簇中心点
(2)Repeat
(3)指派每个剩余对象给离他最近的中心点所表示的簇
(4)Repeat
(5)选择一个未被选择的中心点Oi
(6)Repeat
(7)选择一个未被选择过的非中心点对象Oh
(8)计算用Oh代替Oi的总代价并记录在S中
(9)Until所有非中心点都被选择过
(10)Until所有的中心点都被选择过
(11)If在S中的所有非中心点代替所有中心点后的计算出总代价有小于0的存在,then找出S中的用非中心点替代中心点后代价最小的一个,并用该非中心点替代对应的中心点,形成一个新的k个中心点的集合;
(12)Until没有再发生簇的重新分配,即所有的S都大于0.
1.2.3PAM算法性能分析
(1)消除了k-平均算法对于孤立点的敏感性。
(2)K-中心点方法比k-平均算法的代价要高
(3)必须指定k
(4)PAM对小的数据集非常有效,对大数据集效率不高。
特别是n和k都很大的时候。
2PAM算法的实现
2.1简要说明
通过一个实例来描述PAM聚类算法的实现过程,实例中使用matlab工具来编写PAM聚类算法的实现过程代码。
使用excel数据作为模拟数据。
通过导入模拟数据然后进行聚类。
2.2matlab简介
MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
2.2.1matlab基本功能
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和