畢業(yè)論文Web聚類(lèi)Hamming算法與K均值算法的研究與實(shí)現(xiàn)
《畢業(yè)論文Web聚類(lèi)Hamming算法與K均值算法的研究與實(shí)現(xiàn)》由會(huì)員分享,可在線閱讀,更多相關(guān)《畢業(yè)論文Web聚類(lèi)Hamming算法與K均值算法的研究與實(shí)現(xiàn)(32頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 本科生畢業(yè)設(shè)計(jì)(論文) 題 目: Web聚類(lèi)Hamming算法與K均值算法的 研究與實(shí)現(xiàn) 姓 名: 陳云峰 學(xué) 號(hào): 030300714 學(xué) 院: 數(shù)學(xué)與計(jì)算機(jī)科學(xué)學(xué)院 專(zhuān) 業(yè):
2、 年 級(jí): 2003級(jí) 指導(dǎo)教師: (簽名) 2007 年 6 月 16 日 Web聚類(lèi)Hamming算法與K均值算法的研究與實(shí)現(xiàn) 摘要 聚類(lèi)分析也稱(chēng)群分析、點(diǎn)群分析,它是研究分類(lèi)的一種多元統(tǒng)計(jì)方法。我們所研究的樣品或指標(biāo)之間存在程度不同的相似性。于是根據(jù)一批樣品的多個(gè)觀測(cè)指標(biāo),具體找出一些能夠度量樣品或指標(biāo)之間相似程度的統(tǒng)計(jì)量,以這些統(tǒng)計(jì)量為劃分類(lèi)型的依據(jù)。把一些相似程度較大的樣品或指
3、標(biāo)聚合為一類(lèi),把另外一些彼此之間相似程度較大的樣品或指標(biāo)又聚合為另一類(lèi),關(guān)系密切的聚合到一個(gè)小的分類(lèi)單位,關(guān)系疏遠(yuǎn)的聚合到一個(gè)大的分類(lèi)單位,直到把所有的樣品或指標(biāo)聚合完畢,這就是聚類(lèi)的基本思想。隨著科學(xué)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)成為了人們生活中必不可少的重要組成部分。因此,關(guān)于網(wǎng)頁(yè)數(shù)據(jù)的種種研究都有著其重要的現(xiàn)實(shí)意義。特別是網(wǎng)頁(yè)聚類(lèi),它關(guān)系著人們網(wǎng)上獲取信息效率的高低,同時(shí)也是網(wǎng)頁(yè)信息組織的主要依據(jù)。本文通過(guò)對(duì)Web日志數(shù)據(jù)的挖掘研究,應(yīng)用兩種聚類(lèi)的算法,Hamming算法和K均值算法,將用戶所訪問(wèn)的網(wǎng)頁(yè)進(jìn)行聚類(lèi)。在這兩種算法中,首先以Web站點(diǎn)URL為行,UserID為列建立URL-UserID關(guān)
4、聯(lián)矩陣.兩種不同算法構(gòu)造的矩陣中的元素值不同,文中會(huì)詳細(xì)說(shuō)明,然后對(duì)行向量進(jìn)行相似性分析,可以得到相似的Web群體類(lèi),從而完成對(duì)Web網(wǎng)頁(yè)的聚類(lèi)。 關(guān)鍵詞:網(wǎng)頁(yè)聚類(lèi), 數(shù)據(jù)挖掘, Web日志, K均值算法, Hamming算法 Web Polymerization: The Reaserch and Realization of Hamming Algorithms and Kmeans Algorithms Abstract Cluster analysis is also called cluster analysis, cluster analysis
5、point, it is a classification study of multivariate statistical methods. The samples or indicators we studies exist different degrees of similarity. In accordance with the number of samples over observation indicators, we can find some specific samples to measure or indicator the degree of similarit
6、y between the statistics which are treated the basis for the type of division. Some sample or indicators which have the high similar functions divided into the same polymerization, another similarity samples also do the same thing. Lower polymerization is classified into a small unit, while the clos
7、ing polymerization is put into a large unit, until polymerization of all the samples or indicators are finished --that is the basic idea of clustering. With scientific and technological development, network has become the essential component of peoples live. Therefore, the data on the website of the
8、 various studies have important practical significance. Particularly in the filed of website clustering, which related to the efficiency of people getting the information on the website, is the basis of website information organization. Based on web log data mining research and application of the tw
9、o polymerization algorithm, Hamming algorithms and kmeans algorithmms,polymerizing the websites which users visited. In both algorithms, making the URL of web site as line and Users’ ID as row for the establishment of URL-Users’ ID correlation matrix. Two different algorithms give birth to different
10、 values of the matrix elements which will be explained in detail in the text, and then analysis the similarity among them to get the similar web category. And that is the end of web polymerization. Keywords : Web Clustering, Data Mining, Web Log, K-Means Algorithm, The Algorithm H
11、amming 第1章 緒論 1.1 聚類(lèi)和聚類(lèi)分析的概念及其相關(guān)分類(lèi) 1.1.1 聚類(lèi)和聚類(lèi)分析的相關(guān)概念 所謂類(lèi),通俗地說(shuō),就是指相似元素的集合。 那么我們所講的聚類(lèi),從字面上就可以看出,就是將某個(gè)領(lǐng)域內(nèi)的一些同一屬性的事物,根據(jù)它們個(gè)體之間的相似性,將其分為幾個(gè)群集[1]。聚類(lèi)分析又稱(chēng)群分析,它是研究(樣品或指標(biāo))分類(lèi)問(wèn)題的一種多元統(tǒng)計(jì)方法。嚴(yán)格的數(shù)學(xué)定義是較麻煩的,在不同問(wèn)題中類(lèi)的定義是不同的。聚類(lèi)分析起源于分類(lèi)學(xué),在考古的分類(lèi)學(xué)中,人們主要依靠經(jīng)驗(yàn)和專(zhuān)業(yè)知識(shí)來(lái)實(shí)現(xiàn)分類(lèi)。隨著生產(chǎn)技術(shù)和科學(xué)的發(fā)展,人類(lèi)的認(rèn)識(shí)不斷加深,分類(lèi)越來(lái)越細(xì),要求也越來(lái)越高,有時(shí)光憑經(jīng)驗(yàn)和專(zhuān)業(yè)知識(shí)
12、是不能進(jìn)行確切分類(lèi)的,往往需要定性和定量分析結(jié)合起來(lái)去分類(lèi),于是數(shù)學(xué)工具逐漸被引進(jìn)分類(lèi)學(xué)中,形成了數(shù)值分類(lèi)學(xué)[2]。后來(lái)隨著多元分析的引進(jìn),聚類(lèi)分析又逐漸從數(shù)值分類(lèi)學(xué)中分離出來(lái)而形成一個(gè)相對(duì)獨(dú)立的分支。 在社會(huì)經(jīng)濟(jì)領(lǐng)域中存在著大量分類(lèi)問(wèn)題,比如對(duì)我國(guó)30個(gè)省市自治區(qū)獨(dú)立核算工業(yè)企業(yè)經(jīng)濟(jì)效益進(jìn)行分析,一般不是逐個(gè)省市自治區(qū)去分析,而較好地做法是選取能反映企業(yè)經(jīng)濟(jì)效益的代表性指標(biāo),如百元固定資產(chǎn)實(shí)現(xiàn)利稅、資金利稅率、產(chǎn)值利稅率、百元銷(xiāo)售收入實(shí)現(xiàn)利潤(rùn)、全員勞動(dòng)生產(chǎn)率等等,根據(jù)這些指標(biāo)對(duì)30個(gè)省市自治區(qū)進(jìn)行分類(lèi),然后根據(jù)分類(lèi)結(jié)果對(duì)企業(yè)經(jīng)濟(jì)效益進(jìn)行綜合評(píng)價(jià),就易于得出科學(xué)的分析。又比如若對(duì)某些大城市的
13、物價(jià)指數(shù)進(jìn)行考察,而物價(jià)指數(shù)很多,有農(nóng)用生產(chǎn)物價(jià)指數(shù)、服務(wù)項(xiàng)目?jī)r(jià)指數(shù)、食品消費(fèi)物價(jià)指數(shù)、建材零售價(jià)格指數(shù)等等。由于要考察的物價(jià)指數(shù)很多,通常先對(duì)這些物價(jià)指數(shù)進(jìn)行分類(lèi)??傊枰诸?lèi)的問(wèn)題很多,因此聚類(lèi)分析這個(gè)有用的數(shù)學(xué)工具越來(lái)越受到人們的重視,它在許多領(lǐng)域中都得到了廣泛的應(yīng)用。[3] 1.1.2 聚類(lèi)分析算法的分類(lèi) 聚類(lèi)分析是數(shù)據(jù)挖掘中的一個(gè)很活躍的研究領(lǐng)域,在這個(gè)領(lǐng)域里人們已經(jīng)提出并實(shí)現(xiàn)了許多不同的聚類(lèi)算法。這些算法可以被分為劃分方法、層次方法、基于密度方法、基于網(wǎng)格方法和基于模型方法[4]。 1 、劃分方法(PAM:Partitioning method)[5], 首先創(chuàng)建k個(gè)
14、劃分,k為要?jiǎng)?chuàng)建的劃分個(gè)數(shù),然后利用一個(gè)循環(huán)定位技術(shù)通過(guò)將對(duì)象從一個(gè)劃分移到另一個(gè)劃分來(lái)幫助改善劃分質(zhì)量。典型的劃分方法包括k-means,k-medoids,CLARA(Clustering LARge Application), CLARANS(Clustering Large Application based upon RANdomized Search)EM(Expectation Maximization)則是不將對(duì)象明顯地分到幾個(gè)簇,而是根據(jù)表示可能性的權(quán)來(lái)分配對(duì)象. 2、 層次方法(hierarchical method),創(chuàng)建一個(gè)層次以分解給定的數(shù)據(jù)集。該方法可以分為自上
15、而下(分解)和自下而上(合并)兩種操作方式。為彌補(bǔ)分解與合并的不足,層次合并經(jīng)常要與其它聚類(lèi)方法相結(jié)合,如循環(huán)定位[6]。典型的這類(lèi)方法中第一個(gè)是BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies) 方法,它首先利用樹(shù)的結(jié)構(gòu)對(duì)對(duì)象集進(jìn)行劃分;然后再利用其它聚類(lèi)方法對(duì)這些聚類(lèi)進(jìn)行優(yōu)化。第二個(gè)是CURE(Clustering Using REprisentatives) 方法,它利用固定數(shù)目代表對(duì)象來(lái)表示相應(yīng)聚類(lèi),然后對(duì)各聚類(lèi)進(jìn)行收縮處理。第三個(gè)是ROCK方法,它利用聚類(lèi)間的連接進(jìn)行聚類(lèi)合并。最后一個(gè)CHEMALOE
16、N,它則是在層次聚類(lèi)時(shí)構(gòu)造動(dòng)態(tài)模型。 3、 基于密度方法,根據(jù)密度完成對(duì)象的聚類(lèi)[7]。它根據(jù)對(duì)象周?chē)拿芏龋ㄈ鏒BSCAN)不斷增長(zhǎng)聚類(lèi)。典型的基于密度方法包括:GDBSCAN,DBCLASD,DENCLUE(DENsity-based CLUstEring),DBSCAN(Densit-based Spatial Clustering of Application with Noise)。DBSCAN算法通過(guò)不斷生長(zhǎng)足夠高密度區(qū)域來(lái)進(jìn)行聚類(lèi),它能從含有噪聲的空間數(shù)據(jù)庫(kù)中發(fā)現(xiàn)任意形狀的聚類(lèi)。此方法將一個(gè)聚類(lèi)定義為一組“密度連接”的點(diǎn)集。OPTICS(Ordering Points To I
17、dentify the Clustering Structure)并不明確產(chǎn)生一個(gè)聚類(lèi),而是為自動(dòng)交互的聚類(lèi)分析計(jì)算出一個(gè)增強(qiáng)聚類(lèi)順序[8]。 4、 基于網(wǎng)格方法,首先將對(duì)象空間劃分為有限個(gè)單元以構(gòu)成網(wǎng)格結(jié)構(gòu);然后利用網(wǎng)格結(jié)構(gòu)完成聚類(lèi)。STING(STatistical INformation Grid) 就是一個(gè)利用網(wǎng)格單元保存的統(tǒng)計(jì)信息進(jìn)行基于網(wǎng)格聚類(lèi)的方法[9]。CLIQUE(Clustering In QUEst)和Wave-Cluster 則是一個(gè)將基于網(wǎng)格與基于密度相結(jié)合的方法。 5、基于模型方法,它假設(shè)每個(gè)聚類(lèi)的模型并發(fā)現(xiàn)適合相應(yīng)模型的數(shù)據(jù)[10]。典型的基于模型方法有統(tǒng)計(jì)方
18、法COBWEB,它是一個(gè)常用的且簡(jiǎn)單的增量式概念聚類(lèi)方法。它的輸入對(duì)象是采用符號(hào)量(屬性-值)對(duì)來(lái)加以描述的。采用分類(lèi)樹(shù)的形式來(lái)創(chuàng)建一個(gè)層次聚類(lèi)。CLASSIT是COBWEB的另一個(gè)版本。它可以對(duì)連續(xù)取值屬性進(jìn)行增量式聚類(lèi)。它為每個(gè)結(jié)點(diǎn)中的每個(gè)屬性保存相應(yīng)的連續(xù)正態(tài)分布(均值與方差),并利用一個(gè)改進(jìn)的分類(lèi)能力描述方法,即不像COBWEB那樣計(jì)算離散屬性(取值)而是對(duì)連續(xù)屬性求積分[11]。但是CLASSIT方法也存在與COBWEB類(lèi)似的問(wèn)題。因此它們都不適合對(duì)大數(shù)據(jù)庫(kù)進(jìn)行聚類(lèi)處理.還有就是AutoClass,它采用貝葉斯統(tǒng)計(jì)分析來(lái)估算結(jié)果簇的數(shù)目. 1.1.3 本次設(shè)計(jì)所用算法介紹 本次設(shè)
19、計(jì)中,主要用到兩個(gè)聚類(lèi)算法,一個(gè)就是以上提到的K均值聚類(lèi)算法,而別一個(gè)則是Hamming聚類(lèi)算法[12]。 K均值算法:有多個(gè)對(duì)象組成的數(shù)據(jù)集,將其劃分為k個(gè)類(lèi),k是人為指定的。先隨機(jī)地從數(shù)據(jù)集中取出k個(gè)對(duì)象,每個(gè)對(duì)象初始地代表一個(gè)簇的平均值(或中心點(diǎn))。對(duì)剩下的每個(gè)對(duì)象,根據(jù)與各中心的距離,將其賦給最近的簇。每個(gè)簇就增加了一些對(duì)象,用每個(gè)簇這些對(duì)象重新計(jì)算每個(gè)簇平均值,得到新的簇平均值,再重新計(jì)算每個(gè)對(duì)象到各新平均值的距離,每個(gè)對(duì)象重新分簇,直到對(duì)象重新分簇不再變化。 Hamming算法:我們認(rèn)為一些網(wǎng)頁(yè)頁(yè)面具有相似性,可以歸為一類(lèi),而這種分類(lèi)是根據(jù)這些網(wǎng)頁(yè)之間的Hamming距離的大
20、小來(lái)進(jìn)行衡量的。我們說(shuō)一個(gè)URL-UserID關(guān)聯(lián)矩陣可以構(gòu)造出一個(gè)URL-URL關(guān)聯(lián)矩陣,此矩陣又能根據(jù)一定的算法算出一個(gè)閾值。如果根據(jù)算出的兩個(gè)元素間的hamming距離小于這個(gè)閾值,我們便認(rèn)為這兩個(gè)頁(yè)面具有相似性,可以歸為一類(lèi)。下面說(shuō)明一下hamming距離的定義式: 設(shè)X,Y為n維向量,其中,分別表示n維向量X,Y的第i個(gè)元素的值,而Hamming距離H(X,Y)可以表示為 (X,Y)= 所以這次設(shè)計(jì)的主要算法之一也就是上面所介紹的hamming聚類(lèi)算法,我們算出URL-UserID關(guān)聯(lián)矩陣中每?jī)蓚€(gè)URL向量間的hamming距離,再與算出的閾值做比較,如果小于此閾值,我們便把這
21、兩個(gè)頁(yè)面認(rèn)為是相似的,歸為同一類(lèi),聚為同一個(gè)類(lèi)別。 1.2 數(shù)據(jù)挖掘技術(shù)的發(fā)展研究現(xiàn)狀 數(shù)據(jù)挖掘是一個(gè)新興的邊緣學(xué)科,它匯集了來(lái)自機(jī)器學(xué)習(xí)、模式識(shí)別、數(shù)據(jù)庫(kù)、統(tǒng)計(jì)學(xué)、人工智能以及管理信息系統(tǒng)等各學(xué)科的成果。多學(xué)科的相互交融和相互促進(jìn),使得這一新學(xué)科得以蓬勃發(fā)展,而且已初具規(guī)模。[13]人工智能研究領(lǐng)域的科學(xué)家也普遍認(rèn)為,下一個(gè)人工智能應(yīng)用的重要課題之一,將是以機(jī)器學(xué)習(xí)算法為主要工具的大規(guī)模的數(shù)據(jù)庫(kù)知識(shí)發(fā)現(xiàn)。盡管數(shù)據(jù)挖掘還是一個(gè)很新的研究課題,但它所固有的為企業(yè)創(chuàng)造巨大經(jīng)濟(jì)效益的潛力,已使其很快有了許多成功的應(yīng)用,具有代表性的應(yīng)用有市場(chǎng)預(yù)測(cè)、投資、制造業(yè)、銀行、通訊等幾個(gè)方面。美國(guó)鋼鐵公司和
22、神戶鋼鐵公司利用基于數(shù)據(jù)挖掘技術(shù)的ISPA系統(tǒng),研究分析產(chǎn)品性能規(guī)律和進(jìn)行質(zhì)量控制,取得了顯著效果。[14]通用電器公司(GE)與法國(guó)飛機(jī)發(fā)動(dòng)機(jī)制造公司(sNEcMA),利用數(shù)據(jù)挖掘技術(shù)研制了CASSIOP.EE質(zhì)量控制系統(tǒng),被三家歐洲航空公司用于診斷和預(yù)測(cè)波音737的故障,帶來(lái)了可觀的經(jīng)濟(jì)效益。 而在這些數(shù)據(jù)挖掘的技術(shù)中,Web日志數(shù)據(jù)挖掘的研究逐漸被人們所關(guān)注。特別是計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的高術(shù)發(fā)展,對(duì)Web日志進(jìn)行數(shù)據(jù)挖掘顯得越來(lái)越重要。當(dāng)今社會(huì),網(wǎng)絡(luò)已經(jīng)成為人們生活中的重要組成部分,網(wǎng)絡(luò)是人們獲取信息的一個(gè)相當(dāng)重要的途徑,隨著電子網(wǎng)務(wù)技術(shù)的發(fā)展,網(wǎng)上購(gòu)物也逐漸被人們所接納且終將成為世界經(jīng)濟(jì)發(fā)
23、展的廣闊市場(chǎng)。所以人們對(duì)網(wǎng)頁(yè)相關(guān)科技的發(fā)展也越來(lái)越關(guān)注。網(wǎng)頁(yè)聚類(lèi)技術(shù),作為當(dāng)前網(wǎng)絡(luò)科技研究的一大方向,一直都因有著巨大的作用而被人們關(guān)注。 一個(gè)正確的,高效的網(wǎng)頁(yè)聚類(lèi)方案的實(shí)現(xiàn),將從根本上解決大部分的網(wǎng)絡(luò)獲取信息中遇到的難題。比如,網(wǎng)頁(yè)松散而又海量,人們有時(shí)難以從這樣海量的數(shù)據(jù)中尋找自己要的信息。即使有搜索工具進(jìn)行輔助,也必須有好的預(yù)處理網(wǎng)頁(yè)的聚類(lèi)方案,才能使搜索更加準(zhǔn)確而有效,所以Web聚類(lèi)技術(shù)的研究雖然發(fā)展不是很久,但處在這樣一個(gè)科技高速發(fā)展的形式下,倍受人們的關(guān)注。 1.3 設(shè)計(jì)出發(fā)點(diǎn)及主要設(shè)計(jì)任務(wù)和目標(biāo) 為便于從大量組織松散動(dòng)態(tài)性強(qiáng)的Web網(wǎng)頁(yè)中快速有效地發(fā)現(xiàn)知識(shí),很早人們便提
24、出了網(wǎng)頁(yè)搜索技術(shù),但是由于網(wǎng)上信息的海量、動(dòng)態(tài)和無(wú)結(jié)構(gòu)性,使得用戶信息迷向,影響檢索效率。這是因?yàn)椋核阉饕鏌o(wú)法覆蓋全部萬(wàn)維網(wǎng)信息;萬(wàn)維網(wǎng)具有動(dòng)態(tài)性,搜索引擎索引中包含的“斷鏈接”和“過(guò)時(shí)網(wǎng)頁(yè)”削弱了搜索引擎的作用;搜索引擎返回的結(jié)果中相關(guān)信息和無(wú)關(guān)信息混雜;自然語(yǔ)言中存在的“一義多詞”與“一詞多義”現(xiàn)象,也導(dǎo)致用戶提出的查詢信息往往不能清楚地表達(dá)自己的真正需要。 于是人們便開(kāi)始提出用聚類(lèi)的方法自動(dòng)組織搜索引擎的搜索結(jié)果,同時(shí)個(gè)性化服務(wù)于該系統(tǒng),主動(dòng)對(duì)外界反饋信息做出響應(yīng),方便用戶發(fā)現(xiàn)真正需要的萬(wàn)維網(wǎng)信息。 所以本次設(shè)計(jì)的主要任務(wù)是以聚類(lèi)算法為核心,根據(jù)若干用戶訪問(wèn)網(wǎng)頁(yè)的Web日志信息,將
25、這些網(wǎng)頁(yè)通過(guò)具體的聚類(lèi)算法進(jìn)行分類(lèi)。通過(guò)聚類(lèi)得到的若干個(gè)網(wǎng)頁(yè)的類(lèi)體,這些類(lèi)型的網(wǎng)頁(yè)有著不同程度的某種相關(guān)性,在此基礎(chǔ)上我們可以實(shí)現(xiàn)如何安排網(wǎng)頁(yè)連接,使用戶用起來(lái)更方便,更有效率。同時(shí),對(duì)兩種聚類(lèi)算法得出的分類(lèi)結(jié)果進(jìn)行對(duì)比分析,列出其異同點(diǎn),指出各算法的不足之處,希望能對(duì)現(xiàn)實(shí)生活中的工作需求有所幫助,從而使本次的設(shè)計(jì)有其現(xiàn)實(shí)的意義。 1.4 論文的組織 本論文主要有以下五個(gè)部分: 第1章 緒論。主要介紹關(guān)于web聚類(lèi)分析的概念和發(fā)展現(xiàn)狀、課題任務(wù)等。 第2章 開(kāi)發(fā)環(huán)境技術(shù)背景。主要介紹課題的開(kāi)發(fā)環(huán)境和技術(shù)背景。 第3章 設(shè)計(jì)部分。主要介紹課題的概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。 第4章 系統(tǒng)實(shí)
26、現(xiàn)及結(jié)果分析。主要介紹系統(tǒng)的具體實(shí)現(xiàn)和核心代碼段和聚類(lèi)分析。 最后 致謝與參考文獻(xiàn) 第2章 開(kāi)發(fā)環(huán)境和技術(shù)背景 2.1 開(kāi)發(fā)技術(shù) 本課題是利用VC++語(yǔ)言完成的。主要用到了數(shù)據(jù)存儲(chǔ)技術(shù)、MFC編程框架技術(shù)等。利用MFC編程框架可以比較方便的調(diào)用MFC庫(kù)來(lái)產(chǎn)生Windows環(huán)境下的可視化界面。 2.2 關(guān)鍵技術(shù) 2.2.1 MFC編程框架 MFC (Microsoft Foundation Class)中的各種類(lèi)結(jié)合起來(lái)構(gòu)成了一個(gè)應(yīng)用程序框架,它的目的就是讓程序員在此基礎(chǔ)上來(lái)建立Windows下的應(yīng)用程序,這是一種相對(duì)SDK來(lái)說(shuō)更為簡(jiǎn)單的方法。因?yàn)榭傮w上,MFC
27、框架定義了應(yīng)用程序的輪廓,并提供了用戶接口的標(biāo)準(zhǔn)實(shí)現(xiàn)方法,程序員所要做的就是通過(guò)預(yù)定義的接口把具體應(yīng)用程序特有的東西填入這個(gè)輪廓。Microsoft Visual C++提供了相應(yīng)的工具來(lái)完成這個(gè)工作:AppWizard可以用來(lái)生成初步的框架文件(代碼和資源等);資源編輯器用于幫助直觀地設(shè)計(jì)用戶接口;ClassWizard用來(lái)協(xié)助添加代碼到框架文件;最后,編譯,則通過(guò)類(lèi)庫(kù)實(shí)現(xiàn)了應(yīng)用程序特定的邏輯。 (1)封裝性 構(gòu)成MFC框架的是MFC類(lèi)庫(kù)。MFC類(lèi)庫(kù)是C++類(lèi)庫(kù)。這些類(lèi)或者封裝了Win32應(yīng)用程序編程接口,或者封裝了應(yīng)用程序的概念,或者封裝了OLE特性,或者封裝了ODBC和DAO數(shù)據(jù)
28、訪問(wèn)的功能,等等。 (2)繼承性 首先,MFC抽象出眾多類(lèi)的共同特性,設(shè)計(jì)出一些基類(lèi)作為實(shí)現(xiàn)其他類(lèi)的基礎(chǔ)。這些類(lèi)中,最重要的類(lèi)是CObject和CCmdTarget。CObject是MFC的根類(lèi),絕大多數(shù)MFC類(lèi)是其派生的,包括CCmdTarget。 針對(duì)每種不同的對(duì)象,MFC都設(shè)計(jì)了一組類(lèi)對(duì)這些對(duì)象進(jìn)行封裝,每一組類(lèi)都有一個(gè)基類(lèi),從基類(lèi)派生出眾多更具體的類(lèi)。這些對(duì)象包括以下種類(lèi):窗口對(duì)象,基類(lèi)是CWnd;應(yīng)用程序?qū)ο螅?lèi)是CwinThread;文檔對(duì)象,基類(lèi)是Cdocument,等等。 (3)虛擬函數(shù)和動(dòng)態(tài)約束 MFC以“C++”為基礎(chǔ),自然支持虛擬函數(shù)和動(dòng)態(tài)約束[15]。但是作
29、為一個(gè)編程框架,有一個(gè)問(wèn)題必須解決:如果僅僅通過(guò)虛擬函數(shù)來(lái)支持動(dòng)態(tài)約束,必然導(dǎo)致虛擬函數(shù)表過(guò)于臃腫,消耗內(nèi)存,效率低下。MFC建立了消息映射機(jī)制,以一種富有效率、便于使用的手段解決消息處理函數(shù)的動(dòng)態(tài)約束問(wèn)題。這樣,通過(guò)虛擬函數(shù)和消息映射,MFC類(lèi)提供了豐富的編程接口。程序員繼承基類(lèi)的同時(shí),把自己實(shí)現(xiàn)的虛擬函數(shù)和消息處理函數(shù)嵌入MFC的編程框架。 (4)MFC的宏觀框架體系 如前所述,MFC實(shí)現(xiàn)了對(duì)應(yīng)用程序概念的封裝,把類(lèi)、類(lèi)的繼承、動(dòng)態(tài)約束、類(lèi)的關(guān)系和相互作用等封裝起來(lái)。這樣封裝的結(jié)果對(duì)程序員來(lái)說(shuō),是一套開(kāi)發(fā)模板(或者說(shuō)模式)。針對(duì)不同的應(yīng)用和目的,程序員采用不同的模板。 2.3 課題
30、開(kāi)發(fā)環(huán)境和技術(shù)綜述 本課題是在Microsoft Visual C++ 6.0 開(kāi)發(fā)環(huán)境下利用C++語(yǔ)言和MFC編程框架完成的。由于MFC編程框架技術(shù)的穩(wěn)定性和簡(jiǎn)易性,將會(huì)使程序更加健壯和便于維護(hù)。 第3章 設(shè)計(jì)部分 本部分包括概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)部分。 3.1 概要設(shè)計(jì) 網(wǎng)頁(yè)聚類(lèi)分析的設(shè)計(jì)算法有很多種,以上概論中已經(jīng)有詳細(xì)的說(shuō)明。而本次設(shè)計(jì)采取了兩種算法來(lái)進(jìn)行網(wǎng)頁(yè)的聚類(lèi)和分析。分析的結(jié)果精確度和所取的數(shù)據(jù)量的大小有很大的關(guān)系,數(shù)據(jù)量越大,聚類(lèi)的結(jié)果就越準(zhǔn)確,越有應(yīng)用價(jià)值。 由于需要處理的數(shù)據(jù),數(shù)據(jù)量很大,我們需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。當(dāng)數(shù)據(jù)處理完后,進(jìn)行數(shù)據(jù)的輸入,進(jìn)而在編程環(huán)
31、境下進(jìn)行編程實(shí)現(xiàn)對(duì)數(shù)據(jù)的分類(lèi),即對(duì)網(wǎng)頁(yè)進(jìn)行聚類(lèi),當(dāng)結(jié)果出來(lái)后,對(duì)相應(yīng)算法的結(jié)果進(jìn)行分析和對(duì)比,闡述兩種算法的優(yōu)缺點(diǎn)和現(xiàn)實(shí)應(yīng)用價(jià)值,對(duì)以后的科學(xué)研究和應(yīng)用提供一點(diǎn)參考。 設(shè)計(jì)的概要框架如圖3-0所示: 圖3-0 設(shè)計(jì)概要框架圖 3.2 詳細(xì)設(shè)計(jì) 3.2.1 數(shù)據(jù)預(yù)處理與數(shù)據(jù)存儲(chǔ) 3.2.1.1 Log日志的源數(shù)據(jù)格式及包含的信息 網(wǎng)絡(luò)日志LOG文件記錄了,用戶訪問(wèn)網(wǎng)頁(yè)的詳細(xì)信息,是我們研究網(wǎng)頁(yè)聚類(lèi)和用戶聚類(lèi)的一個(gè)很有價(jià)值的數(shù)據(jù)資源。本次設(shè)計(jì)所用的處理數(shù)據(jù)就是網(wǎng)絡(luò)日志,從對(duì)網(wǎng)絡(luò)日志進(jìn)行數(shù)據(jù)挖掘,來(lái)對(duì)網(wǎng)頁(yè)進(jìn)行聚類(lèi)分析。下面是本次設(shè)計(jì)所用網(wǎng)絡(luò)日志文件中源數(shù)據(jù)的截圖和信息說(shuō)明,如圖3
32、-1: 圖3-1 Log日志源文件截圖 我們發(fā)現(xiàn)每條日志記錄都包含了幾塊相同的信息: 1.訪問(wèn)用戶的IP,在第一條記錄的開(kāi)頭都記錄訪問(wèn)用的IP地址,如“125.41.34.6” 2.用戶訪問(wèn)的具體時(shí)間及訪問(wèn)端口號(hào),包括年,月,日,時(shí),分,秒的精確表示,如“[30/Apr/2007:00:00:02 +0800]” 3.用戶訪問(wèn)網(wǎng)頁(yè)的URL地址,如: "GET /skins/green/images/fzuc2007_green_search_01.gif HTTP/1.1" 4.訪問(wèn)請(qǐng)求是否成功的代碼表示等信息. 3.2.1.2 數(shù)據(jù)預(yù)處理 從上面的LOG
33、日志文件中我們看到,這些文件中有本次設(shè)計(jì)所需要的兩大塊信息,用戶IP和用戶訪問(wèn)的網(wǎng)頁(yè)的URL地址,而其它的信息對(duì)我們來(lái)講就是多余的,不必要的。又因?yàn)閿?shù)據(jù)量非常之大,本次設(shè)計(jì)所用的網(wǎng)絡(luò)日志文件有7萬(wàn)多條記錄。如果不進(jìn)行數(shù)據(jù)的預(yù)處理,將造成程序運(yùn)行相當(dāng)緩慢,所以數(shù)據(jù)預(yù)處理這一塊是本次設(shè)計(jì)工作量比較大的一部分。 本次的數(shù)據(jù)預(yù)處理過(guò)程分為以下幾個(gè)步聚: 1.將用戶訪問(wèn)的URL地址用數(shù)字代號(hào)(以#XXXX表示,如#0001)一一對(duì)映的進(jìn)行替換,同時(shí)將URL地址與對(duì)應(yīng)的數(shù)字代碼存儲(chǔ)在txt文檔中,以便后續(xù)聚類(lèi)結(jié)果分析的對(duì)比分析。如下圖3-2和3-3所示: 圖3-2 URL整理替換后的源數(shù)據(jù)
34、 圖3-3 URL與對(duì)應(yīng)的編號(hào) 2.將用戶IP地址用數(shù)字代號(hào)(以@XXXX表示,如@0001)一一對(duì)映的進(jìn)行替換,同時(shí)將IP地址與對(duì)應(yīng)的數(shù)字代碼存儲(chǔ)在txt文檔中,以便后續(xù)聚類(lèi)結(jié)果分析的對(duì)比分析。如圖3-4和3-5所示: 圖3-4 用戶IP整理后的源數(shù)據(jù) 圖3-5 用戶IP與對(duì)應(yīng)的編號(hào) 3.最后去掉不需要的多余數(shù)據(jù),剩下用戶IP編碼和其訪問(wèn)的URL地址編碼,如圖3-6所示: 圖3-6 最終輸入數(shù)據(jù) 整理完成后,對(duì)用戶IP和URL進(jìn)行統(tǒng)計(jì),共有IP地址1506個(gè),URL地址1700個(gè),去掉訪問(wèn)請(qǐng)求未成功的記錄,一共有訪
35、問(wèn)記錄5萬(wàn)多條。 3.2.1.3 數(shù)據(jù)存儲(chǔ) 數(shù)據(jù)存儲(chǔ)方式:本次設(shè)計(jì)采用矩陣存儲(chǔ)的方式進(jìn)行數(shù)據(jù)存儲(chǔ),首先定義一個(gè)足夠大的靜態(tài)整形二維數(shù)組做為URL-IP數(shù)據(jù)存儲(chǔ)矩陣URL-IP[ ][ ]。 其中矩陣元素的初值根據(jù)不同算法有不同的要求: 1.K均值算法中URL-IP矩陣元素的初值: 我們知道,同一個(gè)URL可能被同一個(gè)IP訪問(wèn)多次,從本是否被訪問(wèn)的角度上來(lái)講,我們只要考慮該URL_i是否有被IP_j訪問(wèn),若有則置URL-IP[i][j]=1,若無(wú)則置URL-IP[i][j]=0;而K均值聚類(lèi)的算法還將訪問(wèn)頻率,即被訪問(wèn)的次數(shù)做為分類(lèi)的參考因子,所以在K均值聚類(lèi)中URL-IP矩陣元素
36、值URL-IP[i][j]為URL_i被IP_j訪問(wèn)的次數(shù),相應(yīng)的代碼如圖3.5所示: 2.Hamming算法中URL-IP矩陣元素的初值: 在Hamming算法中,我們只考慮URL_i是否有被IP_j訪問(wèn)過(guò),若有,不管訪問(wèn)幾次只要有被訪問(wèn)就將URL-IP矩陣元素值URL-IP[i][j]置1,若無(wú)則置0. 3.2.2 URL地址存儲(chǔ) 本次網(wǎng)頁(yè)聚類(lèi)系統(tǒng)的設(shè)計(jì)中,對(duì)于聚類(lèi)結(jié)果的顯示,本設(shè)計(jì)可以顯示每個(gè)分類(lèi)中具體的URL編號(hào)對(duì)應(yīng)的具體的URL地址,所以在初始化編程數(shù)據(jù)時(shí),需要對(duì)URL對(duì)應(yīng)編號(hào)進(jìn)行存儲(chǔ),以便要顯示具體URL地址時(shí)的查找與調(diào)用顯示。 3.2.3 各模塊功能介紹 3.2.3.
37、1 K均值聚類(lèi)算法實(shí)現(xiàn)模塊 該模塊主要是在K均值初始化的數(shù)據(jù)矩陣的基礎(chǔ)上,通過(guò)計(jì)算URL-IP矩陣的行向量間的距離將所有網(wǎng)頁(yè)歸入事先定義好的類(lèi)別中,而后重新計(jì)算出每一類(lèi)也就是自定義類(lèi)別中URL(,,…)的平均值,再進(jìn)行分類(lèi),直到分類(lèi)不再變化為止,即分類(lèi)結(jié)束。 3.2.3.2 Hamming聚類(lèi)算法實(shí)現(xiàn)模塊 該模塊是與K均值聚類(lèi)算法的實(shí)現(xiàn)不一樣,沒(méi)有事先自定義分為幾類(lèi),而是在初始化矩陣的數(shù)據(jù)基礎(chǔ)上,構(gòu)造出一個(gè)新的URL-URL矩陣,其中每個(gè)元素的值URL-URL[i][j]為URLi和URLj中不同元素的個(gè)數(shù),而后算出Hamming閾值,然后根據(jù)閾值來(lái)進(jìn)行URL聚類(lèi),如果大元素值URL-
38、URL[i][j]小于閾值,則URLi和URLj為一類(lèi)。 3.2.3.3 聚類(lèi)結(jié)果顯示模塊 由于聚類(lèi)的結(jié)果是要將分類(lèi)后的URL顯示給用戶,然而我們知道URL一共有1700個(gè),如果全部一起顯示給用戶會(huì)使用戶無(wú)法清晰地分析聚類(lèi)的結(jié)果,所以我們先在LIST中顯示出分類(lèi)后的URL代號(hào),每一類(lèi)的URL都顯示在LIST中的一行,由于顯示的窗口大小有限,所以有些類(lèi)含URL很多無(wú)法在一行中全部顯示給用戶,所以用戶雙擊這一行,則會(huì)顯示出全部的URL代號(hào),而后點(diǎn)擊詳細(xì)顯示,則顯示詳細(xì)的URL編號(hào)與地址。 第4章 系統(tǒng)實(shí)現(xiàn) 本章主要包括兩種聚類(lèi)算法K均值聚類(lèi)和Hamming聚類(lèi)的實(shí)現(xiàn),以及聚類(lèi)結(jié)果的
39、分析顯示,還有相關(guān)的數(shù)據(jù)處理的詳細(xì)過(guò)程和代碼分析。 4.1 初始化數(shù)據(jù)模塊 4.1.1 數(shù)據(jù)結(jié)構(gòu)的選擇 數(shù)組是存儲(chǔ)數(shù)據(jù)的一種典型而又簡(jiǎn)單可靠的數(shù)據(jù)結(jié)構(gòu),數(shù)組在進(jìn)行查找,排序操作是很方便的,而且數(shù)組可以動(dòng)態(tài)分配這一方法又使數(shù)組的靈活性有所提高。數(shù)組一般用在順序存儲(chǔ)中。順序存儲(chǔ)表示是將數(shù)據(jù)元素存放于一個(gè)連續(xù)的存儲(chǔ)空間,利用物理相鄰來(lái)表示邏輯關(guān)系,實(shí)現(xiàn)順序存取或(按下標(biāo))直接存取。它的存儲(chǔ)效率高,存取速度快。但它的空間大小如果是靜態(tài)分配的,一經(jīng)定義,在整個(gè)程序運(yùn)行期間不會(huì)發(fā)生變化,因此,它不易擴(kuò)充。同時(shí),由于在插入或刪除時(shí),為保持原有順序,平均需要移動(dòng)一半(或近一半)元素,修改效率不高。
40、 鏈?zhǔn)酱鎯?chǔ)[15]表示的存儲(chǔ)空間一般在程序運(yùn)行過(guò)程中動(dòng)態(tài)分配和釋放,且只要存儲(chǔ)器中還有空間,就不會(huì)產(chǎn)生溢出的問(wèn)題。同時(shí)在插入和刪除時(shí)不需要保持?jǐn)?shù)據(jù)元素的原有物理順序,只需要保持原有的邏輯順序就行了,故不必移動(dòng)元素,只需修改它們的鏈接指針,修改效率高。但在存取表中的數(shù)據(jù)元素時(shí),只能循鏈順序進(jìn)行訪問(wèn),且需要額外的指針,存儲(chǔ)效率和訪問(wèn)效率低于順序存儲(chǔ)表示。 而本次設(shè)計(jì)主要的數(shù)據(jù)處理都是順序存儲(chǔ)的,而且關(guān)聯(lián)到很多的順序?qū)?yīng)運(yùn)算,用數(shù)組進(jìn)行數(shù)據(jù)存儲(chǔ)是最優(yōu)的選擇。 現(xiàn)給出本次設(shè)計(jì)中數(shù)據(jù)初始化中相關(guān)數(shù)組的定義,程序代碼描述如下: 幾個(gè)全局靜態(tài)數(shù)組的定義: Define int URl-IP[2
41、000][2000]: K均值初始化矩陣 define float HamU-I[2000][2000]: Hamming初始化矩陣 extern CString url[2000]: URL地址存儲(chǔ)字符串?dāng)?shù)組 4.1.2 兩種算法的矩陣數(shù)據(jù)初始化 4.1.2.1 K均值算法矩陣數(shù)據(jù)初始化 根據(jù)K值聚類(lèi)的算法描述,我們知道K均值聚類(lèi)算法中的影響因子有數(shù)據(jù)量大小,也就是URL地址數(shù)目和用戶IP數(shù)目的大小和同一IP訪問(wèn)同一URL的次數(shù),也就是訪問(wèn)頻率兩個(gè)方面。其數(shù)據(jù)矩陣初始化的編程代碼表示如圖4-1: 圖4-1 K均值數(shù)據(jù)矩陣初始化代碼 4.1.2.2 Hamming聚類(lèi)
42、算法矩陣數(shù)據(jù)初始化 和K均值算法不一樣,Hamming算法所進(jìn)么分類(lèi)的標(biāo)準(zhǔn)主要是此URL是否被某IP訪問(wèn),有被訪問(wèn)則置1,否則置0. 其數(shù)據(jù)矩陣初始化的編程代碼表示如圖4-2: 圖4-2 Hamming數(shù)據(jù)矩陣初始化代碼 4.1.2.3 URL地址字符串?dāng)?shù)組數(shù)據(jù)初始化 由于聚類(lèi)的結(jié)果是要將分類(lèi)后的URL顯示給用戶,然而我們知道URL數(shù)目很多,很難一起顯示給用戶,或者說(shuō)會(huì)使用戶無(wú)法清晰地分析聚類(lèi)的結(jié)果,所以我們先在LIST中顯示出分類(lèi)后的URL代號(hào),再顯示出對(duì)應(yīng)的具體的URL地址,因而我們需要對(duì)URL地址與其對(duì)應(yīng)的編號(hào)以字符串?dāng)?shù)組的形式進(jìn)行存儲(chǔ),以便要顯示具體URL地址時(shí)查
43、找,調(diào)用和顯示。其數(shù)據(jù)矩陣初始化的編程代碼表示如圖4-3: 圖4-3 url存儲(chǔ)數(shù)組初始化代碼 4.2 K均值算法的實(shí)現(xiàn) 4.2.1 分配一個(gè)URL向量到每個(gè)類(lèi)中作為初始化類(lèi)的平均URL向量 按照K均值算法的描述,我們要事人為指定分類(lèi)的個(gè)數(shù)K,并隨機(jī)地抽取其中的K個(gè)向量做為每一類(lèi)的平均向量,因?yàn)榈谝淮畏峙浜竺總€(gè)分類(lèi)中只有一個(gè)向量,所以這K個(gè)向量便為K個(gè)類(lèi)的平均向量。在本次設(shè)計(jì)中并沒(méi)有真正隨機(jī)分配,而是將第1,N,2N,…n個(gè)分別作為第一次初始化的各類(lèi)的平均向量。在系統(tǒng)中的程序編碼實(shí)現(xiàn)如圖4-4: 圖4-4 K均值初始化的各類(lèi)的中心向量代碼 以上代碼段中,變量kjm代
44、表要進(jìn)行分類(lèi)的URL個(gè)數(shù),定義兩個(gè)m_knum維的字符串?dāng)?shù)組*kstr,*kstr1,是由于在后面的分類(lèi)過(guò)程中需要循環(huán)地將kim個(gè)URL行向量分配到m_knum個(gè)類(lèi)中,在這個(gè)基礎(chǔ)上要再次計(jì)算分配后的每個(gè)類(lèi)的向量的平均值,就需要知道分配到每個(gè)類(lèi)的的URL行向量是哪幾個(gè),其中*kstr1記錄的是變化后的各類(lèi)中URL行向量的序號(hào),而*kstr記錄的是變化前各類(lèi)中的URL行向量的序號(hào)。同時(shí)這兩個(gè)數(shù)組也是后面判斷循環(huán)結(jié)束的條件因子之一。 4.2.2 循環(huán)迭代分類(lèi)過(guò)程 給定每一分類(lèi)的初始URL行向量后,我們就可以將kjm個(gè)URL行向量進(jìn)行篩選分配到每個(gè)類(lèi)中,并且計(jì)算每個(gè)新類(lèi)的平均URL行向量,記下分類(lèi)
45、的情況,之而要進(jìn)行新類(lèi)與舊類(lèi)的對(duì)比,若分類(lèi)有更新說(shuō)明聚類(lèi)過(guò)程仍未結(jié)束,則繼續(xù)循環(huán)迭代進(jìn)行分類(lèi),直到分類(lèi)結(jié)束。其中編程代碼如圖4-5所示: 圖4-5 K均值循環(huán)分類(lèi)過(guò)程代碼 上面的程序段中包含兩段代碼用一句話帶過(guò),具體的實(shí)現(xiàn)方式在下列進(jìn)行說(shuō)明: 進(jìn)行一次遍歷,將URL分配到各個(gè)相應(yīng)的類(lèi)中的代碼段如圖4-6所示: 圖4-6 URL分配到各個(gè)相應(yīng)的類(lèi)中的代碼 計(jì)算平均值向量的過(guò)程,從前面定義的字符串?dāng)?shù)組*str中取出對(duì)應(yīng)的第j類(lèi)中包含的URL行向量對(duì)應(yīng)的行號(hào),將其取出,將j類(lèi)中包含的所有URL行向量的對(duì)應(yīng)元素值相加再除以URL的個(gè)數(shù)算出分配后類(lèi)j的平均向量的每個(gè)元素
46、值,從而得出分配后每個(gè)類(lèi)的平均向量,為下一次分配作準(zhǔn)備,其編程代碼實(shí)現(xiàn)如圖4-7: 圖4-7 計(jì)算分配后各類(lèi)的平均向量 4.2.3 聚類(lèi)結(jié)果顯示 最后完成聚類(lèi),并進(jìn)行結(jié)果顯示,顯示的結(jié)果如圖4-8所示,因?yàn)檐浖谏巷@示窗口無(wú)法將分類(lèi)全部顯示出來(lái),只好進(jìn)行再次顯示,雙擊每一條分類(lèi),則進(jìn)行完全顯示,在二次結(jié)果顯示的窗口中單擊“詳細(xì)URL地址列表”則進(jìn)行對(duì)應(yīng)的詳細(xì)的URL地址顯示,其運(yùn)行結(jié)果及界面如圖4-8所示: 圖4-8 K均值運(yùn)行結(jié)果顯示窗口 我們看到第三行中分類(lèi)后含的URL個(gè)數(shù)沒(méi)能完全顯示出來(lái),雙擊此行則出現(xiàn)二次顯示窗口,如圖4-9: 圖4-9 K均值二
47、次顯示窗口 在二次查看窗口中,我們?nèi)允侵荒芸捶诸?lèi)后,每個(gè)類(lèi)中包含的URL的對(duì)應(yīng)編號(hào),而未能查看具體的URL地址,單擊“詳細(xì)URL列表”,則進(jìn)行URL編號(hào)和地址的詳細(xì)顯示,如圖4-10: 圖4-10 K均值具體url顯示窗口 4.3 Hamming聚類(lèi)算法實(shí)現(xiàn) 4.3.1 Hamming算法描述 如前所述,URL-IP矩陣M的行向量M[.,j]反映了客戶對(duì)本站點(diǎn)的不同頁(yè)面的訪問(wèn)情況,如果客戶對(duì)某些頁(yè)面的訪問(wèn)情況相同或相似,那么,這些頁(yè)面理應(yīng)為相關(guān)頁(yè)面,可以聚為一類(lèi)。 聚類(lèi)時(shí),同樣先對(duì)URL-IP關(guān)聯(lián)矩陣 M進(jìn)行預(yù)處理,去掉所含元素值都為0的行向量,在本次設(shè)計(jì)中無(wú)考慮此情況,因
48、為如果行向量值為0,則說(shuō)明沒(méi)有任何用戶訪問(wèn)此網(wǎng)頁(yè),那就不在我們的考慮之內(nèi),我們所研究的是用戶所訪問(wèn)的網(wǎng)頁(yè)的聚類(lèi)。對(duì)于M[i,j]>0,可先令M[i,j]=1,再根據(jù)hamming距離公式計(jì)算并構(gòu)造出行向量間的距離矩陣。在此矩陣中,表示第i個(gè)行向量和第j個(gè)行向量之間的Hamming距離,對(duì)角元素值為0. 接下來(lái)根據(jù)閾值公式求URL-URL關(guān)聯(lián)矩陣的閾值: 對(duì)于,如果<,那么就將第i個(gè)URL和所有滿足這個(gè)條件的第j個(gè)URL劃分為一個(gè)類(lèi)。 4.3.2 構(gòu)造行向量間的距離矩陣 由于本次設(shè)計(jì)不考慮URL行向量值為0的情況,所以可以根據(jù)HamU_I矩陣通過(guò)Hamming距離公式直接構(gòu)造出UR
49、L行向量間的距離矩陣,其編程實(shí)現(xiàn)過(guò)程如圖4-11所示: 圖4-11 構(gòu)造URL-URL關(guān)聯(lián)矩陣代碼 4.3.3 求URL行向量間距離矩陣的閾值 從已經(jīng)構(gòu)造好的行向量間距離矩陣中,根據(jù)閾值的計(jì)算公式,我們可以算出URL行向量矩陣的閾值,閾值是整個(gè)聚類(lèi)過(guò)程的唯一,重要的參考指標(biāo),所以說(shuō)閾值取值情況將決定Hamming聚類(lèi)的結(jié)果的精確與否。所以在閾值的求解上,我們將公式可調(diào)化,也就是說(shuō)閾值的求值公式中的某些參數(shù)的值可以由用戶來(lái)進(jìn)行調(diào)整,使聚類(lèi)的結(jié)果滿足用戶的最終需求,其編程中的實(shí)現(xiàn)過(guò)程如圖4-12所示: 圖4-12 Hamming閾值求解代碼 4.3.4 Hammi
50、ng聚類(lèi)算法核心代碼段 由于Hamming算法是一個(gè)需要對(duì)分類(lèi)中的每個(gè)值進(jìn)行對(duì)應(yīng)向量代號(hào)進(jìn)行循環(huán)再分類(lèi),其工作時(shí)間復(fù)雜度較高,因此,本次設(shè)計(jì)從i=0著手分出第一類(lèi),然后作一次數(shù)據(jù)優(yōu)化,去掉被其包含的子類(lèi)。由于i=0對(duì)應(yīng)的行向量kcl[0][j]所包含的元素個(gè)素是最多的,有hjm-1個(gè),如果元素值kcl[0][j]為1的數(shù)目多,則分出的第一類(lèi)元素個(gè)數(shù)就比較多,可能包含的子類(lèi)就更多,進(jìn)行的數(shù)據(jù)優(yōu)化的效果就越好。下面是求出第一類(lèi)的代碼分析,如圖4-13所示: 圖4-13 求出第一類(lèi)的代碼 求出第一個(gè)類(lèi)后,我們對(duì)數(shù)據(jù)矩陣進(jìn)行優(yōu)化,我們把存在不屬于第一個(gè)類(lèi)的行向量i作記號(hào)kcl[i][
51、i]=1,而行向量j上所含元素都在第一類(lèi)中已存在的,我們說(shuō)它完全包含于第一類(lèi),我們也作標(biāo)記kcl[j][ji]=0;經(jīng)過(guò)數(shù)據(jù)優(yōu)化后,我們只對(duì)kcl[i][i]值為1的行向量進(jìn)行分類(lèi),同時(shí)當(dāng)分出第二類(lèi)時(shí)我們也作同樣的數(shù)據(jù)優(yōu)化,再次排除掉無(wú)效的行直到分類(lèi)結(jié)束。下面是編程代碼的解析,如圖4-14所示: 圖4-14 分出第一類(lèi)后的數(shù)據(jù)優(yōu)化代碼 中間分類(lèi)及分類(lèi)后的數(shù)據(jù)優(yōu)化代碼這里省略,原理和第一個(gè)類(lèi)的分類(lèi)過(guò)程是一樣的。 4.3.5 Hamming聚類(lèi)的結(jié)果顯示 結(jié)果顯示與K均值的顯示界面及功能都基本相同,這里不再闡訴設(shè)計(jì)思想。顯示如圖4-15,圖4-16,圖4-17所示: 圖4
52、-15 Hamming聚類(lèi)窗口 圖4-16 Hamming聚類(lèi)結(jié)果顯示窗口 圖4-17 Hamming聚類(lèi)二次顯示窗口 4.4聚類(lèi)結(jié)果分析 4.4.1 聚類(lèi)的精確度分析 根據(jù)實(shí)現(xiàn)的結(jié)果,本次設(shè)計(jì)將用戶訪問(wèn)的URL地址分為以下9個(gè)大類(lèi): (1.)"GET /skins/……" (2.)"GET /images/……" (3.)"GET /zh/……" (4.)"GET /xywz/……" (5.)"GET /h……" (6.)"GET /xxq/……" (7.)"GET / pqu /……" (8.)"GET /fujian/……" (9.)其它
53、我們根據(jù)URL地址的基本結(jié)構(gòu),自定義一個(gè)衡量聚類(lèi)精確度的方法:設(shè)聚類(lèi)的結(jié)果分為n類(lèi),去掉只含一個(gè)元素的類(lèi),誤分率大于50%的類(lèi)和含大量元素的類(lèi)(因?yàn)槿绻缓粋€(gè)元素也就沒(méi)有正確與否之說(shuō),更不用談什么精確度了,如果誤分率大于50%,則我們不會(huì)去利用這樣的分類(lèi)結(jié)果,而含有大量元素的類(lèi),我們說(shuō)這種類(lèi)在本設(shè)計(jì)的兩種算法中都會(huì)出現(xiàn),是不可避免的,特別是在數(shù)據(jù)量巨大時(shí),由于這樣的類(lèi)含的元素太多,肯定會(huì)包含以上所說(shuō)的多種URL地址,這樣的情況下,我們也無(wú)法去解析它的精確度),剩下的分類(lèi)數(shù)為N,我們把分析的對(duì)象定為含有一定數(shù)量元素的這樣一些類(lèi)。設(shè)類(lèi)i中共有y個(gè)URL,其中有x個(gè)URL與類(lèi)中其它大部分元素是不同
54、的,我們說(shuō)這x個(gè)URL被錯(cuò)分到類(lèi)i中,這樣我們定義一個(gè)精確度值=1-x/y,=x/y,而總的分類(lèi)精確度 下面我們進(jìn)行兩種聚類(lèi)算法的精確度分析: 1.Hamming聚類(lèi)精確度計(jì)算:根據(jù)聚類(lèi)結(jié)果顯示:當(dāng)輸入數(shù)據(jù)為“Ip_Url.txt”時(shí),結(jié)果總共分為46類(lèi),其中去掉大量元素類(lèi)7個(gè),剩下可分析類(lèi)39個(gè),下面列出各類(lèi)的精確度(未寫(xiě)出的都是全部正確的): w=1/11; w=1/11; w=1/6; w=2/18; w=1/3; w=1/10; w=1/34; w=3/39; 計(jì)算得出R97.4% 2.K均值聚類(lèi)精確度計(jì)算:根據(jù)聚類(lèi)結(jié)果顯示:當(dāng)輸入數(shù)據(jù)為“Ip_Url.tx
55、t”時(shí),與Hamming分類(lèi)數(shù)一樣設(shè)為46類(lèi),其中去掉大量元素類(lèi)和單元素類(lèi)17個(gè),剩下可分析類(lèi)29個(gè),下面列出各類(lèi)的精確度(未寫(xiě)出的都是全部正確的): w=4/17; w=2/11; w=7/43; w=2/15; w=1/36; w=8/38; w=1/21; w=2/11; w=6/23 w=2/17; w=3/10; w=1/40; w=5/26; w=6/21; 計(jì)算得出R91.8% 為了使比較更為直觀,我們將兩個(gè)算法精度曲線描繪出來(lái),如下圖4-18分類(lèi)精確度曲線所示: 圖4-18 Kmeans與Hamming聚類(lèi)確精度對(duì)比曲線 其中
56、縱坐標(biāo)為每一分類(lèi)中的分類(lèi)精確度,最高為1,最小為0.5。前面定義精確度的時(shí)候說(shuō)過(guò),如果分類(lèi)精確度小于0.5,也就是誤分率大于50%,那么這一分類(lèi)我們認(rèn)為是不理想的,不會(huì)采納,所以排除在分析對(duì)象之外。橫坐標(biāo)為上面所對(duì)應(yīng)的可分析分類(lèi)的類(lèi)號(hào),相互比較,我們清楚地看到在本設(shè)計(jì)相同的輸入中,當(dāng)分類(lèi)的個(gè)數(shù)一樣時(shí),Hamming聚類(lèi)的精確度比K均值聚類(lèi)的精確度要高,同時(shí),我們也看到二者的精確度都在90%以上,這說(shuō)明兩種聚類(lèi)的算法都是有效的,都能夠較好地將具有相同或相似的URL聚在同一類(lèi)。 4.4.2 Hamming閾值對(duì)聚類(lèi)結(jié)果的影響 前面我們提到Hamming閾值是分類(lèi)過(guò)程中唯一也是最重要的衡量指
57、標(biāo),那么閾值的變化對(duì)整個(gè)聚類(lèi)的結(jié)果會(huì)有什么樣的影響呢?下面跟據(jù)實(shí)驗(yàn)數(shù)據(jù)的對(duì)比和分析,我們將指出Hamming閾值的變化對(duì)聚類(lèi)結(jié)果的具體影響。 我們分3種情況,第一種為閾值與公式計(jì)算所得一樣不發(fā)生改變和調(diào)整;第二種為通過(guò)系統(tǒng)提供的閾值調(diào)整功能讓閾值變小;第三各為通過(guò)系統(tǒng)提供的閾值調(diào)整功能讓閾值變大. 下面比較三種情況下聚類(lèi)的情況: 閾值不變:此時(shí)分類(lèi)數(shù)目為46,閾值為2.07301,閾值參數(shù)未作調(diào)整,如圖4-19所示: 圖4-19 閾值不變時(shí)的Hamming聚類(lèi)結(jié)果 此時(shí)分析聚類(lèi)的結(jié)果,去掉大量元素類(lèi)7個(gè),剩下可分析類(lèi)39個(gè),下面給出可分析類(lèi)的精確
58、度曲線,如圖4-20所示: 圖4-20 閾值不變時(shí)Hamming聚類(lèi)精確度曲線 2.閾值變大:通過(guò)對(duì)閾值參數(shù)N作調(diào)整使閾值變大,調(diào)整參數(shù)N為1.5,閾值為3.10952,分類(lèi)數(shù)目43如圖-21所示: 圖4-21 閾值變大后Hamming聚類(lèi)的結(jié)果 此時(shí)分析聚類(lèi)的結(jié)果,去掉大量元素類(lèi)7個(gè),誤分率超過(guò)50%的少量元素類(lèi)3個(gè),剩下可分析類(lèi)33個(gè),下面給出可分析類(lèi)的精確度曲線,如圖4-22所示: 圖4-22 閾值變大后Hamming聚類(lèi)的精確度曲線 3.閾值變?。和ㄟ^(guò)調(diào)整閾值參數(shù)N使閾值變小,調(diào)整參數(shù)N為0.85,閾值為1.76206,分類(lèi)的數(shù)目為85,如圖4-2
59、3所示: 圖4-23 閾值變小后的Hamming聚類(lèi)結(jié)果 此時(shí)分析聚類(lèi)的結(jié)果,去掉誤分率大于50%的少量元素類(lèi)3個(gè),大量元素類(lèi)30個(gè),剩下可分析類(lèi)52個(gè),下面給出可分析類(lèi)的精確度曲線,如圖4-24所示: 圖4-24 閾值變小后Hamming聚類(lèi)的精確度曲線 通過(guò)對(duì)三種情況的分類(lèi)精確度的分析,我們看到,當(dāng)閾值變大時(shí),分類(lèi)的數(shù)目減少了,這說(shuō)明分類(lèi)變得比較粗糙,因此有可能造成分類(lèi)精確度較低。通過(guò)精確度曲線圖也證實(shí)了精確度比較差;而如果調(diào)小閾值,我們發(fā)現(xiàn)分類(lèi)的數(shù)目變大,且幅度比較高,但是同時(shí)產(chǎn)生的大量元素類(lèi)的數(shù)目也有較大的提高,這說(shuō)明分類(lèi)雖然多了,詳細(xì)了,但也使非利用類(lèi)
60、的數(shù)目變大(這是非利用類(lèi)指的是大量元素類(lèi)),可分析類(lèi)的數(shù)目也有提高,而且從精確度曲線圖上,我們可以看出大部分分類(lèi)的精確度都在90%以上,整條曲線比較平穩(wěn),精確度較高,可以達(dá)到較為理想的聚類(lèi)效果。下面我們用一個(gè)表較為直觀地顯示三者的對(duì)比結(jié)果,如表4-25所示: 表4-1 閾值的變化對(duì)分類(lèi)精確度的影響情況 閾值變化 總分類(lèi)數(shù)變化 可析類(lèi)數(shù)變化 大量元素類(lèi)數(shù) 誤分率高類(lèi)數(shù) 分類(lèi)精確度 變小 85變大 52變大 30變大 3 較好 不變 46 39 7 0 一般 變大 43 33 7 3 較差 4.4.3 分類(lèi)數(shù)目變化對(duì)K均值聚類(lèi)結(jié)果的影響
61、 由于K均值聚類(lèi)是根據(jù)我們自定義的數(shù)目來(lái)進(jìn)行分類(lèi)的,但是因?yàn)槲覀冸S機(jī)分配給每個(gè)類(lèi)的初始量不一定就是不現(xiàn)于其它類(lèi)的量,有可能在第一次分配時(shí)就使這一類(lèi)為空,這樣就使分類(lèi)無(wú)法正常進(jìn)行,于是在本設(shè)計(jì)中,如果某次分配后發(fā)現(xiàn)有空的類(lèi),則會(huì)把初始分量再次賦給它,等待下次的分配,其編程代碼在上文有說(shuō)明,參看圖4-5。那么下面我們將根據(jù)實(shí)驗(yàn)得出的數(shù)據(jù)對(duì)分類(lèi)數(shù)目進(jìn)行三種變化,從而分析分類(lèi)數(shù)目變化對(duì)K均值聚類(lèi)結(jié)果的影響。為了能和Hamming聚類(lèi)結(jié) 果進(jìn)行比較,K均值分類(lèi)的數(shù)目將和上面Hamming聚類(lèi)三種情況下分類(lèi)的數(shù)目取相同的數(shù)據(jù)。 分類(lèi)數(shù)目不變:分類(lèi)數(shù)目為46,如圖4-25所示: 圖4-25 分
62、類(lèi)數(shù)目不變時(shí)的K均值聚類(lèi)結(jié)果 下面我們對(duì)分類(lèi)的精確度進(jìn)行分析,去掉大量元素類(lèi)1,單元素類(lèi)13,誤分率較大類(lèi)3,剩下可分析類(lèi)29,其精確度曲線如圖4-26所示: 圖4-26 分類(lèi)數(shù)目不變時(shí)的K均值聚類(lèi)精確度曲線 分類(lèi)數(shù)目變大:分類(lèi)數(shù)目為85,如圖4-27所示: 圖4-27 分類(lèi)數(shù)目變大時(shí)的K均值聚類(lèi)結(jié)果 下面我們對(duì)分類(lèi)的精確度進(jìn)行分析,去掉大量元素類(lèi)1,單元素類(lèi)32,誤分率較大類(lèi)4,剩下可分析類(lèi)43,其精確度曲線如圖4-28所示: 圖4-28 分類(lèi)數(shù)目變大時(shí)的K均值聚類(lèi)精確度曲線 3.分類(lèi)數(shù)目變?。悍诸?lèi)數(shù)為43,如圖4-29所示: 圖4-2
63、9 分類(lèi)數(shù)目變小時(shí)的K均值聚類(lèi)結(jié)果 下面我們對(duì)分類(lèi)的精確度進(jìn)行分析,去掉大量元素類(lèi)1,單元素類(lèi)14,誤分率較大類(lèi)6,剩下可分析類(lèi)22,其精確度曲線如圖4-30所示: 圖4-30 分類(lèi)數(shù)目變小時(shí)的K均值聚類(lèi)精確度曲線 通過(guò)三種情況的對(duì)比分析,我們可以看到,當(dāng)分類(lèi)數(shù)目變大時(shí)單元素類(lèi)大量增加,但是分類(lèi)的精確度確是有所提高,分類(lèi)精確度曲線出現(xiàn)的都較陡的坡度,這說(shuō)明很少有連續(xù)的誤分類(lèi),只有個(gè)別誤分類(lèi)穿插出現(xiàn);而當(dāng)分類(lèi)數(shù)目變小時(shí),精確度并不是有很大的變化,但是從坡度上我們可以看出坡度都較緩,這說(shuō)明會(huì)有大量的連續(xù)的誤分類(lèi),所以其實(shí)上當(dāng)分類(lèi)數(shù)變小時(shí)精確度有所下降。下面用表格較為直觀地進(jìn)行說(shuō)明
64、,如表4-2所示: 表4-2 分類(lèi)數(shù)目的變化對(duì)分類(lèi)精確度的影響 分類(lèi)數(shù)目變化 單元素類(lèi)數(shù) 大量元素類(lèi)數(shù) 可分析類(lèi)數(shù) 誤分率高類(lèi)數(shù) 分類(lèi)精確度 43變小 14無(wú)明顯變化 1無(wú)變化 22減小 6增大 降代 46不變 13 1 29 3 一般 85變大 32大量增多 1無(wú)變化 43增多 4變化不大 增高 4.4.4 兩種聚類(lèi)方法的對(duì)比總結(jié) 通過(guò)以上對(duì)兩種聚類(lèi)方法的結(jié)果進(jìn)行詳細(xì)的對(duì)比和分析,我們看到,在相同分類(lèi)數(shù)的情況下,Hamming聚類(lèi)的精確度要比K均值的分類(lèi)精確度高。但是兩種聚類(lèi)的算法,在相應(yīng)的參數(shù)選擇好的情況下,如Hamming閾值
65、的調(diào)整,和K均值的分類(lèi)數(shù)目,如果參數(shù)選得好都可以達(dá)到較為滿意的聚類(lèi)結(jié)果。此次通過(guò)兩種算法K均值算法和Hamming算法分別來(lái)對(duì)網(wǎng)頁(yè)進(jìn)行分類(lèi),其中Hamming算法的設(shè)計(jì)是參照宋擒豹 沈鈞毅關(guān)于Web日志高效多能挖掘算法中的Hamming聚類(lèi)算法[12].在本次實(shí)驗(yàn)中,對(duì)于原作者對(duì)Hamming閾值的計(jì)算公式進(jìn)行了調(diào)整。在實(shí)驗(yàn)過(guò)程中,根據(jù)實(shí)驗(yàn)的數(shù)據(jù),若根據(jù)原來(lái)的Hamming閾值計(jì)算公式求閾值,會(huì)導(dǎo)致最后的分類(lèi)數(shù)目極少,甚至只有一類(lèi)。因此,在本次實(shí)驗(yàn)中,原作者所提的閾值公式 [12] 在本次設(shè)計(jì)中并不合適,在調(diào)適運(yùn)行過(guò)程中,本次設(shè)計(jì)對(duì)其公式進(jìn)行改進(jìn) 最后使分類(lèi)能夠順利進(jìn)行,而且效果也比
66、較理想。此次驗(yàn)證性實(shí)驗(yàn)證時(shí),Hamming算法中的閾值是要根據(jù)不同情況下的輸入進(jìn)行相應(yīng)的調(diào)節(jié),才能使分類(lèi)更加精準(zhǔn)有效,同時(shí)本次設(shè)計(jì)及實(shí)驗(yàn)結(jié)果也說(shuō)明了兩種算法都是有效的聚類(lèi)算法,都可以較理想地進(jìn)行聚類(lèi)分析。 致謝 在這次畢業(yè)設(shè)計(jì)過(guò)程中,首先感謝白清源教授在算法上的詳細(xì)解釋?zhuān)谒惴ㄙY料上的提供,在論文格式及要求上的檢查和改正。感謝林鑫顯在系統(tǒng)實(shí)現(xiàn)過(guò)程的幫助,感謝身邊同學(xué)在設(shè)計(jì)過(guò)程中的鼓勵(lì)與幫助。 參考文獻(xiàn) [1] 高新波.模糊聚類(lèi)分析及其應(yīng)用.西安:西安電子科技大學(xué)出版社.2004:23-45. [2] 李恒峰,李國(guó)輝.基于內(nèi)容的音頻檢索與分類(lèi).計(jì)算機(jī)工程與應(yīng)用.2000.7. [3](加)韓家煒,堪博 著,范明,孟小峰 譯.數(shù)據(jù)挖掘概念與技術(shù).北京:機(jī)械工業(yè)出版社.2007:18-90. [4]劉書(shū)香,盧才武.數(shù)據(jù)挖掘中的客戶聚類(lèi)分析及其算法實(shí)現(xiàn).《信息技術(shù)》.2004年1月,第28卷第1期,PP.4-10. [5] 尹松,周永叔,李陶深.數(shù)據(jù)聚
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)備采購(gòu)常用的四種評(píng)標(biāo)方法
- 車(chē)間員工管理須知(應(yīng)知應(yīng)會(huì))
- 某公司設(shè)備維護(hù)保養(yǎng)工作規(guī)程
- 某企業(yè)潔凈車(chē)間人員進(jìn)出管理規(guī)程
- 企業(yè)管理制度之5S管理的八個(gè)口訣
- 標(biāo)準(zhǔn)化班前會(huì)的探索及意義
- 某企業(yè)內(nèi)審員考試試題含答案
- 某公司環(huán)境保護(hù)考核管理制度
- 現(xiàn)場(chǎng)管理的定義
- 員工培訓(xùn)程序
- 管理制度之生產(chǎn)廠長(zhǎng)的職責(zé)與工作標(biāo)準(zhǔn)
- 某公司各級(jí)專(zhuān)業(yè)人員環(huán)保職責(zé)
- 企業(yè)管理制度:5S推進(jìn)與改善工具
- XXX公司環(huán)境風(fēng)險(xiǎn)排查及隱患整改制度
- 生產(chǎn)車(chē)間基層管理要點(diǎn)及建議