Web聚类Hamming算法与K均值算法的研究与实现.docx
《Web聚类Hamming算法与K均值算法的研究与实现.docx》由会员分享,可在线阅读,更多相关《Web聚类Hamming算法与K均值算法的研究与实现.docx(40页珍藏版)》请在冰豆网上搜索。
![Web聚类Hamming算法与K均值算法的研究与实现.docx](https://file1.bdocx.com/fileroot1/2023-2/2/bdcf000b-c371-4e0a-8fdc-69a8a4c39b85/bdcf000b-c371-4e0a-8fdc-69a8a4c39b851.gif)
Web聚类Hamming算法与K均值算法的研究与实现
本科生毕业设计(论文)
题目:
Web聚类Hamming算法与K均值算法的
研究与实现
姓名:
陈云峰
学号:
030300714
学院:
数学与计算机科学学院
专业:
年级:
2003级
指导教师:
(签名)
2007年6月16日
Web聚类Hamming算法与K均值算法的研究与实现
摘要
聚类分析也称群分析、点群分析,它是研究分类的一种多元统计方法。
我们所研究的样品或指标之间存在程度不同的相似性。
于是根据一批样品的多个观测指标,具体找出一些能够度量样品或指标之间相似程度的统计量,以这些统计量为划分类型的依据。
把一些相似程度较大的样品或指标聚合为一类,把另外一些彼此之间相似程度较大的样品或指标又聚合为另一类,关系密切的聚合到一个小的分类单位,关系疏远的聚合到一个大的分类单位,直到把所有的样品或指标聚合完毕,这就是聚类的基本思想。
随着科学技术的不断发展,网络成为了人们生活中必不可少的重要组成部分。
因此,关于网页数据的种种研究都有着其重要的现实意义。
特别是网页聚类,它关系着人们网上获取信息效率的高低,同时也是网页信息组织的主要依据。
本文通过对Web日志数据的挖掘研究,应用两种聚类的算法,Hamming算法和K均值算法,将用户所访问的网页进行聚类。
在这两种算法中,首先以Web站点URL为行,UserID为列建立URL-UserID关联矩阵.两种不同算法构造的矩阵中的元素值不同,文中会详细说明,然后对行向量进行相似性分析,可以得到相似的Web群体类,从而完成对Web网页的聚类。
关键词:
网页聚类,数据挖掘,Web日志,K均值算法,Hamming算法
WebPolymerization:
TheReaserchandRealizationofHammingAlgorithmsandKmeansAlgorithms
Abstract
Clusteranalysisisalsocalledclusteranalysis,clusteranalysispoint,itisaclassificationstudyofmultivariatestatisticalmethods.Thesamplesorindicatorswestudiesexistdifferentdegreesofsimilarity.Inaccordancewiththenumberofsamplesoverobservationindicators,wecanfindsomespecificsamplestomeasureorindicatorthedegreeofsimilaritybetweenthestatisticswhicharetreatedthebasisforthetypeofdivision.Somesampleorindicatorswhichhavethehighsimilarfunctionsdividedintothesamepolymerization,anothersimilaritysamplesalsodothesamething.Lowerpolymerizationisclassifiedintoasmallunit,whiletheclosingpolymerizationisputintoalargeunit,untilpolymerizationofallthesamplesorindicatorsarefinished--thatisthebasicideaofclustering.Withscientificandtechnologicaldevelopment,networkhasbecometheessentialcomponentofpeople'slive.Therefore,thedataonthewebsiteofthevariousstudieshaveimportantpracticalsignificance.Particularlyinthefiledofwebsiteclustering,whichrelatedtotheefficiencyofpeoplegettingtheinformationonthewebsite,isthebasisofwebsiteinformationorganization.Basedonweblogdataminingresearchandapplicationofthetwopolymerizationalgorithm,Hammingalgorithmsandkmeansalgorithmms,polymerizingthewebsiteswhichusersvisited.Inbothalgorithms,makingtheURLofwebsiteaslineandUsers’IDasrowfortheestablishmentofURL-Users’IDcorrelationmatrix.Twodifferentalgorithmsgivebirthtodifferentvaluesofthematrixelementswhichwillbeexplainedindetailinthetext,andthenanalysisthesimilarityamongthemtogetthesimilarwebcategory.Andthatistheendofwebpolymerization.
Keywords:
WebClustering,DataMining,WebLog,K-MeansAlgorithm,TheAlgorithmHamming
第1章绪论
1.1聚类和聚类分析的概念及其相关分类
1.1.1聚类和聚类分析的相关概念
所谓类,通俗地说,就是指相似元素的集合。
那么我们所讲的聚类,从字面上就可以看出,就是将某个领域内的一些同一属性的事物,根据它们个体之间的相似性,将其分为几个群集[1]。
聚类分析又称群分析,它是研究(样品或指标)分类问题的一种多元统计方法。
严格的数学定义是较麻烦的,在不同问题中类的定义是不同的。
聚类分析起源于分类学,在考古的分类学中,人们主要依靠经验和专业知识来实现分类。
随着生产技术和科学的发展,人类的认识不断加深,分类越来越细,要求也越来越高,有时光凭经验和专业知识是不能进行确切分类的,往往需要定性和定量分析结合起来去分类,于是数学工具逐渐被引进分类学中,形成了数值分类学[2]。
后来随着多元分析的引进,聚类分析又逐渐从数值分类学中分离出来而形成一个相对独立的分支。
在社会经济领域中存在着大量分类问题,比如对我国30个省市自治区独立核算工业企业经济效益进行分析,一般不是逐个省市自治区去分析,而较好地做法是选取能反映企业经济效益的代表性指标,如百元固定资产实现利税、资金利税率、产值利税率、百元销售收入实现利润、全员劳动生产率等等,根据这些指标对30个省市自治区进行分类,然后根据分类结果对企业经济效益进行综合评价,就易于得出科学的分析。
又比如若对某些大城市的物价指数进行考察,而物价指数很多,有农用生产物价指数、服务项目价指数、食品消费物价指数、建材零售价格指数等等。
由于要考察的物价指数很多,通常先对这些物价指数进行分类。
总之,需要分类的问题很多,因此聚类分析这个有用的数学工具越来越受到人们的重视,它在许多领域中都得到了广泛的应用。
[3]
1.1.2聚类分析算法的分类
聚类分析是数据挖掘中的一个很活跃的研究领域,在这个领域里人们已经提出并实现了许多不同的聚类算法。
这些算法可以被分为划分方法、层次方法、基于密度方法、基于网格方法和基于模型方法[4]。
1、划分方法(PAM:
Partitioningmethod)[5],首先创建k个划分,k为要创建的划分个数,然后利用一个循环定位技术通过将对象从一个划分移到另一个划分来帮助改善划分质量。
典型的划分方法包括k-means,k-medoids,CLARA(ClusteringLARgeApplication),
CLARANS(ClusteringLargeApplicationbaseduponRANdomizedSearch)EM(ExpectationMaximization)则是不将对象明显地分到几个簇,而是根据表示可能性的权来分配对象.
2、层次方法(hierarchicalmethod),创建一个层次以分解给定的数据集。
该方法可以分为自上而下(分解)和自下而上(合并)两种操作方式。
为弥补分解与合并的不足,层次合并经常要与其它聚类方法相结合,如循环定位[6]。
典型的这类方法中第一个是BIRCH(BalancedIterativeReducingandClusteringusingHierarchies)方法,它首先利用树的结构对对象集进行划分;然后再利用其它聚类方法对这些聚类进行优化。
第二个是CURE(ClusteringUsingREprisentatives)方法,它利用固定数目代表对象来表示相应聚类,然后对各聚类进行收缩处理。
第三个是ROCK方法,它利用聚类间的连接进行聚类合并。
最后一个CHEMALOEN,它则是在层次聚类时构造动态模型。
3、基于密度方法,根据密度完成对象的聚类[7]。
它根据对象周围的密度(如DBSCAN)不断增长聚类。
典型的基于密度方法包括:
GDBSCAN,DBCLASD,DENCLUE(DENsity-basedCLUstEring),DBSCAN(Densit-basedSpatialClusteringofApplicationwithNoise)。
DBSCAN算法通过不断生长足够高密度区域来进行聚类,它能从含有噪声的空间数据库中发现任意形状的聚类。
此方法将一个聚类定义为一组“密度连接”的点集。
OPTICS(OrderingPointsToIdentifytheClusteringStructure)并不明确产生一个聚类,而是为自动交互的聚类分析计算出一个增强聚类顺序[8]。
4、基于网格方法,首先将对象空间划分为有限个单元以构成网格结构;然后利用网格结构完成聚类。
STING(STatisticalINformationGrid)就是一个利用网格单元保存的统计信息进行基于网格聚类的方法[9]。
CLIQUE(ClusteringInQUEst)和Wave-Cluster则是一个将基于网格与基于密度相结合的方法。
5、基于模型方法,它假设每个聚类的模型并发现适合相应模型的数据[10]。
典型的基于模型方法有统计方法COBWEB,它是一个常用的且简单的增量式概念聚类方法。
它的输入对象是采用符号量(属性-值)对来加以描述的。
采用分类树的形式来创建一个层次聚类。
CLASSIT是COBWEB的另一个版本。
它可以对连续取值属性进行增量式聚类。
它为每个结点中的每个属性保存相应的连续正态分布(均值与方差),并利用一个改进的分类能力描述方法,即不像COBWEB那样计算离散属性(取值)而是对连续属性求积分[11]。
但是CLASSIT方法也存在与COBWEB类似的问题。
因此它们都不适合对大数据库进行聚类处理.还有就是AutoClass,它采用贝叶斯统计分析来估算结果簇的数目.
1.1.3本次设计所用算法介绍
本次设计中,主要用到两个聚类算法,一个就是以上提到的K均值聚类算法,而别一个则是Hamming聚类算法[12]。
K均值算法:
有多个对象组成的数据集,将其划分为k个类,k是人为指定的。
先随机地从数据集中取出k个对象,每个对象初始地代表一个簇的平均值(或中心点)。
对剩下的每个对象,根据与各中心的距离,将其赋给最近的簇。
每个簇就增加了一些对象,用每个簇这些对象重新计算每个簇平均值,得到新的簇平均值,再重新计算每个对象到各新平均值的距离,每个对象重新分簇,直到对象重新分簇不再变化。
Hamming算法:
我们认为一些网页页面具有相似性,可以归为一类,而这种分类是根据这些网页之间的Hamming距离的大小来进行衡量的。
我们说一个URL-UserID关联矩阵可以构造出一个URL-URL关联矩阵,此矩阵又能根据一定的算法算出一个阈值。
如果根据算出的两个元素间的hamming距离小于这个阈值,我们便认为这两个页面具有相似性,可以归为一类。
下面说明一下hamming距离的定义式:
设X,Y为n维向量,其中
分别表示n维向量X,Y的第i个元素的值,而Hamming距离H(X,Y)可以表示为
(X,Y)=
所以这次设计的主要算法之一也就是上面所介绍的hamming聚类算法,我们算出URL-UserID关联矩阵中每两个URL向量间的hamming距离,再与算出的阈值做比较,如果小于此阈值,我们便把这两个页面认为是相似的,归为同一类,聚为同一个类别。
1.2数据挖掘技术的发展研究现状
数据挖掘是一个新兴的边缘学科,它汇集了来自机器学习、模式识别、数据库、统计学、人工智能以及管理信息系统等各学科的成果。
多学科的相互交融和相互促进,使得这一新学科得以蓬勃发展,而且已初具规模。
[13]人工智能研究领域的科学家也普遍认为,下一个人工智能应用的重要课题之一,将是以机器学习算法为主要工具的大规模的数据库知识发现。
尽管数据挖掘还是一个很新的研究课题,但它所固有的为企业创造巨大经济效益的潜力,已使其很快有了许多成功的应用,具有代表性的应用有市场预测、投资、制造业、银行、通讯等几个方面。
美国钢铁公司和神户钢铁公司利用基于数据挖掘技术的ISPA系统,研究分析产品性能规律和进行质量控制,取得了显著效果。
[14]通用电器公司(GE)与法国飞机发动机制造公司(sNEcMA),利用数据挖掘技术研制了CASSIOP.EE质量控制系统,被三家欧洲航空公司用于诊断和预测波音737的故障,带来了可观的经济效益。
而在这些数据挖掘的技术中,Web日志数据挖掘的研究逐渐被人们所关注。
特别是计算机网络技术的高术发展,对Web日志进行数据挖掘显得越来越重要。
当今社会,网络已经成为人们生活中的重要组成部分,网络是人们获取信息的一个相当重要的途径,随着电子网务技术的发展,网上购物也逐渐被人们所接纳且终将成为世界经济发展的广阔市场。
所以人们对网页相关科技的发展也越来越关注。
网页聚类技术,作为当前网络科技研究的一大方向,一直都因有着巨大的作用而被人们关注。
一个正确的,高效的网页聚类方案的实现,将从根本上解决大部分的网络获取信息中遇到的难题。
比如,网页松散而又海量,人们有时难以从这样海量的数据中寻找自己要的信息。
即使有搜索工具进行辅助,也必须有好的预处理网页的聚类方案,才能使搜索更加准确而有效,所以Web聚类技术的研究虽然发展不是很久,但处在这样一个科技高速发展的形式下,倍受人们的关注。
1.3设计出发点及主要设计任务和目标
为便于从大量组织松散动态性强的Web网页中快速有效地发现知识,很早人们便提出了网页搜索技术,但是由于网上信息的海量、动态和无结构性,使得用户信息迷向,影响检索效率。
这是因为:
搜索引擎无法覆盖全部万维网信息;万维网具有动态性,搜索引擎索引中包含的“断链接”和“过时网页”削弱了搜索引擎的作用;搜索引擎返回的结果中相关信息和无关信息混杂;自然语言中存在的“一义多词”与“一词多义”现象,也导致用户提出的查询信息往往不能清楚地表达自己的真正需要。
于是人们便开始提出用聚类的方法自动组织搜索引擎的搜索结果,同时个性化服务于该系统,主动对外界反馈信息做出响应,方便用户发现真正需要的万维网信息。
所以本次设计的主要任务是以聚类算法为核心,根据若干用户访问网页的Web日志信息,将这些网页通过具体的聚类算法进行分类。
通过聚类得到的若干个网页的类体,这些类型的网页有着不同程度的某种相关性,在此基础上我们可以实现如何安排网页连接,使用户用起来更方便,更有效率。
同时,对两种聚类算法得出的分类结果进行对比分析,列出其异同点,指出各算法的不足之处,希望能对现实生活中的工作需求有所帮助,从而使本次的设计有其现实的意义。
1.4论文的组织
本论文主要有以下五个部分:
第1章绪论。
主要介绍关于web聚类分析的概念和发展现状、课题任务等。
第2章开发环境技术背景。
主要介绍课题的开发环境和技术背景。
第3章设计部分。
主要介绍课题的概要设计和详细设计。
第4章系统实现及结果分析。
主要介绍系统的具体实现和核心代码段和聚类分析。
最后致谢与参考文献
第2章开发环境和技术背景
2.1开发技术
本课题是利用VC++语言完成的。
主要用到了数据存储技术、MFC编程框架技术等。
利用MFC编程框架可以比较方便的调用MFC库来产生Windows环境下的可视化界面。
2.2关键技术
2.2.1MFC编程框架
MFC(MicrosoftFoundationClass)中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
MicrosoftVisualC++提供了相应的工具来完成这个工作:
AppWizard可以用来生成初步的框架文件(代码和资源等);资源编辑器用于帮助直观地设计用户接口;ClassWizard用来协助添加代码到框架文件;最后,编译,则通过类库实现了应用程序特定的逻辑。
(1)封装性
构成MFC框架的是MFC类库。
MFC类库是C++类库。
这些类或者封装了Win32应用程序编程接口,或者封装了应用程序的概念,或者封装了OLE特性,或者封装了ODBC和DAO数据访问的功能,等等。
(2)继承性
首先,MFC抽象出众多类的共同特性,设计出一些基类作为实现其他类的基础。
这些类中,最重要的类是CObject和CCmdTarget。
CObject是MFC的根类,绝大多数MFC类是其派生的,包括CCmdTarget。
针对每种不同的对象,MFC都设计了一组类对这些对象进行封装,每一组类都有一个基类,从基类派生出众多更具体的类。
这些对象包括以下种类:
窗口对象,基类是CWnd;应用程序对象,基类是CwinThread;文档对象,基类是Cdocument,等等。
(3)虚拟函数和动态约束
MFC以“C++”为基础,自然支持虚拟函数和动态约束[15]。
但是作为一个编程框架,有一个问题必须解决:
如果仅仅通过虚拟函数来支持动态约束,必然导致虚拟函数表过于臃肿,消耗内存,效率低下。
MFC建立了消息映射机制,以一种富有效率、便于使用的手段解决消息处理函数的动态约束问题。
这样,通过虚拟函数和消息映射,MFC类提供了丰富的编程接口。
程序员继承基类的同时,把自己实现的虚拟函数和消息处理函数嵌入MFC的编程框架。
(4)MFC的宏观框架体系
如前所述,MFC实现了对应用程序概念的封装,把类、类的继承、动态约束、类的关系和相互作用等封装起来。
这样封装的结果对程序员来说,是一套开发模板(或者说模式)。
针对不同的应用和目的,程序员采用不同的模板。
2.3课题开发环境和技术综述
本课题是在MicrosoftVisualC++6.0开发环境下利用C++语言和MFC编程框架完成的。
由于MFC编程框架技术的稳定性和简易性,将会使程序更加健壮和便于维护。
第3章设计部分
本部分包括概要设计和详细设计部分。
3.1概要设计
网页聚类分析的设计算法有很多种,以上概论中已经有详细的说明。
而本次设计采取了两种算法来进行网页的聚类和分析。
分析的结果精确度和所取的数据量的大小有很大的关系,数据量越大,聚类的结果就越准确,越有应用价值。
由于需要处理的数据,数据量很大,我们需要对数据进行预处理。
当数据处理完后,进行数据的输入,进而在编程环境下进行编程实现对数据的分类,即对网页进行聚类,当结果出来后,对相应算法的结果进行分析和对比,阐述两种算法的优缺点和现实应用价值,对以后的科学研究和应用提供一点参考。
设计的概要框架如图3-0所示:
图3-0设计概要框架图
3.2详细设计
3.2.1数据预处理与数据存储
3.2.1.1Log日志的源数据格式及包含的信息
网络日志LOG文件记录了,用户访问网页的详细信息,是我们研究网页聚类和用户聚类的一个很有价值的数据资源。
本次设计所用的处理数据就是网络日志,从对网络日志进行数据挖掘,来对网页进行聚类分析。
下面是本次设计所用网络日志文件中源数据的截图和信息说明,如图3-1:
图3-1Log日志源文件截图
我们发现每条日志记录都包含了几块相同的信息:
1.访问用户的IP,在第一条记录的开头都记录访问用的IP地址,如“125.41.34.6”
2.用户访问的具体时间及访问端口号,包括年,月,日,时,分,秒的精确表示,如“[30/Apr/2007:
00:
00:
02+0800]”
3.用户访问网页的URL地址,如:
"GET/skins/green/images/fzuc2007_green_search_01.gifHTTP/1.1"
4.访问请求是否成功的代码表示等信息.
3.2.1.2数据预处理
从上面的LOG日志文件中我们看到,这些文件中有本次设计所需要的两大块信息,用户IP和用户访问的网页的URL地址,而其它的信息对我们来讲就是多余的,不必要的。
又因为数据量非常之大,本次设计所用的网络日志文件有7万多条记录。
如果不进行数据的预处理,将造成程序运行相当缓慢,所以数据预处理这一块是本次设计工作量比较大的一部分。
本次的数据预处理过程分为以下几个步聚:
1.将用户访问的URL地址用数字代号(以#XXXX表示,如#0001)一一对映的进行替换,同时将URL地址与对应的数字代码存储在txt文档中,以便后续聚类结果分析的对比分析。
如下图3-2和3-3所示:
图3-2URL整理替换后的源数据
图3-3URL与对应的编号
2.将用户IP地址用数字代号(以@XXXX表示,如@0001)一一对映的进行替换,同时将IP地址与对应的数字代码存储在txt文档中,以便后续聚类结果分析的对比分析。
如图3-4和3-5所示:
图3-4用户IP整理后的源数据
图3-5用户IP与对应的编号
3.最后去掉不需要的多余数据,剩下用户IP编码和其访问的URL地址编码,如图3-6所示:
图3-6最终输入数据
整理完成后,对用户IP和URL进行统计,共有IP地址1506个,URL地址1700个,去掉访问请求未成功的记录,一共有访问记录5万多条。
3.2.1.3数据存储
数据存储方式:
本次设计采用矩阵存储的方式进行数据存储,首先定义一个足够大的静态整形二维数组做为URL-IP数据存储矩阵URL-IP[][]。
其中矩阵元素的初值根据不同算法有不同的