【转】主要空间数据挖掘方法
Source:?http://jerry429.bokee.com/2993629.html??????????????????????????????????????
張新長 馬林兵等,《地理信息系統(tǒng)數(shù)據(jù)庫》[M],科學(xué)出版社,2005年2月 第二章第二節(jié)
?
空間數(shù)據(jù)
?
空間數(shù)據(jù)挖掘是多學(xué)科和多種技術(shù)交叉綜合的新領(lǐng)域,其挖掘方法以人工智能、專家系統(tǒng)、機器學(xué)習(xí)、數(shù)據(jù)庫和統(tǒng)計等成熟技術(shù)為基礎(chǔ)。下面介紹近年來出現(xiàn)的主要空間數(shù)據(jù)挖掘方法。
?
1、空間分析方法
利用GIS的各種空間分析模型和空間操作對GIS數(shù)據(jù)庫中的數(shù)據(jù)進行深加工,從而產(chǎn)生新的信息和知識。常用的空間分析方法有綜合屬性數(shù)據(jù)分析、拓撲分析、緩沖區(qū)分析、距離分析、疊置分析、地形分析、趨勢面分析、預(yù)測分析等,可發(fā)現(xiàn)目標(biāo)在空間上的相連、相鄰和共生等關(guān)聯(lián)規(guī)則,或發(fā)現(xiàn)目標(biāo)之間的最短路徑、最優(yōu)路徑等輔助決策知識。
?
2、統(tǒng)計分析方法
統(tǒng)計分析一直是分析空間數(shù)據(jù)的常用方法,著重于空間物體和現(xiàn)象的非空間特性分析。統(tǒng)計方法有較強的理論基礎(chǔ),擁有大量成熟的算法。統(tǒng)計方法難以處理字符型數(shù)據(jù),需要有領(lǐng)域知識和統(tǒng)計知識,一般由具有統(tǒng)計經(jīng)驗的領(lǐng)域?qū)<襾硗瓿伞?/p>
?
3、歸納學(xué)習(xí)方法
歸納學(xué)習(xí)方法是從大量的經(jīng)驗數(shù)據(jù)中歸納制取一般的規(guī)則和模式,其大部分算法來源于機器學(xué)習(xí)領(lǐng)域,歸納學(xué)習(xí)的算法很多,如Michaski等的?AQ11,AQ15,洪家榮等的AE1,AE9,Hunt的CLS,Quinlan的ID3,C5.0等,其中最著名的是Quinlan提出的C5.0決策樹算法。
?
4、聚類與分類方法
聚類和分類方法按一定的距離或相似性系統(tǒng)將數(shù)據(jù)分成一系列相互區(qū)分的組。常用的經(jīng)典聚類方法有Kmean,Kmeriod,ISO?DATA等。分類和聚類都是對目標(biāo)進行空間劃分,劃分的標(biāo)準(zhǔn)是類內(nèi)差別最小,類間差別最大。分類和聚類的區(qū)別在于分類事先知道類別數(shù)和種類的典型特征,而聚類則事先不知道。
?
5、探測性的數(shù)據(jù)分析方法
李德仁、邸凱昌等提出了探測性的數(shù)據(jù)分析(簡稱EDA)。EDA采用動態(tài)統(tǒng)計圖形和動態(tài)鏈接窗口技術(shù)將數(shù)據(jù)及統(tǒng)計特征顯示出來,可發(fā)現(xiàn)數(shù)據(jù)中非直觀的數(shù)據(jù)特征及異常數(shù)據(jù)。?EDA與空間分析相結(jié)合,構(gòu)成探測性空間分析(exploratory?spatial?analysis,簡稱ESA)。EDA和ESA技術(shù)在數(shù)據(jù)挖掘中用于選取與問題領(lǐng)域相關(guān)的數(shù)據(jù)子集,并可初步發(fā)現(xiàn)隱含在數(shù)據(jù)中的某些特征和規(guī)律。
?
6、粗集方法
粗集理論是波蘭華沙大學(xué)Z.Pawlak教授在1982年提出的一種智能數(shù)據(jù)決策分析工具,被廣泛研究并應(yīng)用于不精確、不確定、不完全的信息的分類分析和知識獲取。粗集理論為空間數(shù)據(jù)的屬性分析和知識發(fā)現(xiàn)開辟了一條新途徑,可用于GIS數(shù)據(jù)庫屬性表的一致性分析、屬性的重要性、屬性依賴、屬性表簡化、最小決策和分類算法生成等。粗集理論與其他知識發(fā)現(xiàn)算法相結(jié)合可以在GIS數(shù)據(jù)庫中數(shù)據(jù)不確定的情況下獲取多種知識。
?
7、空間特征和趨勢探測方法
這是Ester等人在第4屆KDD國際研討會(1998)上提出的基于領(lǐng)域圖(neighborhoodgraphs)和鄰域路徑?(neighborhoodpath)概念的挖掘算法。Ester等將一個空間特征定義為GIS數(shù)據(jù)庫中具有空間/非空間性質(zhì)的目標(biāo)對象集,并以非空間屬性值出現(xiàn)的相對頻率和不同空間對象出現(xiàn)的相對頻率(目標(biāo)對象集相對于整個數(shù)據(jù)庫)作為感興趣的性質(zhì),從空間目標(biāo)集合經(jīng)過它的相鄰擴展后的一個開始點出發(fā),發(fā)現(xiàn)一個或多個非空間性質(zhì)的變化規(guī)律。這種算法的效率在很大程度上取決于其處理相鄰關(guān)系的能力。
?
8、數(shù)字地圖圖像分析和模式識別方法
GIS數(shù)據(jù)庫(數(shù)據(jù)倉庫)中含有大量的圖形圖像數(shù)據(jù),一些圖像分析和模式識別方法可直接用于挖掘數(shù)據(jù)和發(fā)現(xiàn)知識,或作為其他挖掘方法的預(yù)處理方法。用于圖像分析和模式識別的方法主要有:決策樹(desicion?tree)方法、神經(jīng)元網(wǎng)絡(luò)(artificial?neural?net?work)方法、數(shù)學(xué)形態(tài)學(xué)方法、圖論方法。
?
9、可視化方法
可視化數(shù)據(jù)分析技術(shù)拓寬了傳統(tǒng)的圖表功能,使用戶對數(shù)據(jù)的剖析更清楚。例如把數(shù)據(jù)庫中的多維數(shù)據(jù)變成多種圖形,這對提示數(shù)據(jù)的狀況、內(nèi)在本?質(zhì)及規(guī)律性起到了很強的作用。當(dāng)顯示SDM發(fā)現(xiàn)的結(jié)果時,將地圖同時顯示作為背景。一方面能夠顯示其知識特征的分布規(guī)律;另一方面也可對挖掘出的結(jié)果進行?可視化解釋,從而達到最佳的分析效果。可視化技術(shù)使用戶看到數(shù)據(jù)處理的全過程、監(jiān)測并控制數(shù)據(jù)分析過程。為了發(fā)現(xiàn)某類知識,常要綜合運用這些方法。數(shù)據(jù)挖?掘方法還要與常規(guī)的數(shù)據(jù)庫技術(shù)充分結(jié)合,數(shù)據(jù)挖掘利用的技術(shù)越多,得出的結(jié)果精確性就越高。
?
空間數(shù)據(jù)庫中的知識
?
基于GIS與遙感應(yīng)用,一般認為(Li?D?R.?et?al.,?1994,1997; 邸凱昌等,1996,1997;Han?J.,?1996;?Koperski?K.?et?al,?1996),?可以從空間數(shù)據(jù)庫中發(fā)現(xiàn)的知識有以下8種:
?
(1)普遍的幾何知識(general?geometric?knowledge)
所謂普遍的幾何知識,是指關(guān)于目標(biāo)的數(shù)量、大小、形態(tài)特征等的普遍性知識,如點狀目標(biāo)的位置、大小等,線狀目標(biāo)的長度、大小和方向等,面狀目標(biāo)的周長、面積、幾何中心等。可以通過計算或統(tǒng)計得出GIS中空間目標(biāo)某種幾何特征量的最小值、最大值、均值、方差、中數(shù)等,還可以統(tǒng)計出有關(guān)特征量的直方圖等。
?
(2)空間分布規(guī)律(spatial?distribution?regularities)
空間分布規(guī)律是指目標(biāo)在地理空間中垂直向、水平向以及垂直與水平聯(lián)合的分布規(guī)律。垂?直分布是指空間目標(biāo)沿地理調(diào)和的分布,如植被覆蓋與生物多樣性的海拔變化,作物生長的坡度變化等;水平分布是指地物沿地理區(qū)域的平面分布,如水稻畝產(chǎn)的區(qū)?域分異性,基礎(chǔ)設(shè)施的城鄉(xiāng)差異等;垂直與水平的聯(lián)合分布是指目標(biāo)的高程和區(qū)域方面的同時變化,如風(fēng)土人情的流域差異性、氣候特征的地理分異性等。
?
(3)空間關(guān)聯(lián)規(guī)則(spatial?association?rules)
空間關(guān)聯(lián)規(guī)則是指空間目標(biāo)的相鄰、相連、共生、包含等關(guān)系,如道路與河流的相連,國家與國家的相鄰等。
?
(4)空間分類(聚類)規(guī)則(spatial?classification/clustering?rules)
空間分類規(guī)則是根據(jù)目標(biāo)的空間或非空間特征進行類別劃分的規(guī)則;而空間聚類規(guī)則是根據(jù)目標(biāo)的聚散程度進行類別劃分的規(guī)則,可用于GIS的空間概括和空間綜合。空間分類和空間的共同之處是:都是對目標(biāo)空間的再劃分,劃分的標(biāo)準(zhǔn)是類內(nèi)差別最小而類間差別最大;不同之處是:分類是有導(dǎo)師的?(supervised)而聚類是無導(dǎo)師的,即分類是事先知道類別數(shù)和各類的典型特征,而聚類則事先不知道。
以遙感圖像分析為例,一般性遙感圖像處理是針對一幅圖像或一個試驗區(qū)的多幅圖像進行處理和分析,找出某種結(jié)論性的東西;而遙感數(shù)據(jù)挖掘則強調(diào)對大量數(shù)據(jù)的處理、分析和對比,進而找出共性和特性,總結(jié)出規(guī)律和規(guī)則,而這些規(guī)律和規(guī)則在后續(xù)的圖像分析中具有指導(dǎo)作用。
?
(5)空間特征規(guī)則(spatial?characteristic?rules)
空間特征規(guī)則是指某類或某幾類空間目標(biāo)的幾何與屬性的普遍特征,是對共性的描述。比如:“高速公路一般都比較直”、“高速公路一般6車道”是兩條描述高速公路普遍特征的空間特征規(guī)則。普遍的幾何知識屬于空間特征規(guī)則的一類,將它分離出來單獨作為一類知識是由于它在遙感影像解譯中有十分重要的作用。
?
(6)空間區(qū)分規(guī)則(spatial?discriminate?rules)
空間區(qū)分規(guī)則特征是指兩類或多類目標(biāo)間幾何或?qū)傩缘牟煌卣?#xff0c;是對個性的描述。“高速公路一般比較直,高等級公路一般稍彎一些”、“高速公路一般6車道,高等級公路一般4車道”是兩條描繪高速公路與高等級公路特征差別的區(qū)分規(guī)則。它不同于空間分類規(guī)則;分類規(guī)則是對空間目標(biāo)進行明確分類,強調(diào)的是分類精度,為了保持分類精度,一般在較低的層次進行分類;而區(qū)分規(guī)則是對已知類別對象的對比,一般是比較高層次上的描述。
?
(7)空間演化規(guī)則(spatial?evolution?rules)
空間演化規(guī)則是指空間目標(biāo)的幾何、屬性特征隨時間而變化的規(guī)律。這一規(guī)律的發(fā)現(xiàn)必須基于時空數(shù)據(jù)庫或同一區(qū)域的多個時相的數(shù)據(jù)。
?
(8)面向?qū)ο蟮闹R(object?oriented?knowledge)
它是關(guān)于某類復(fù)雜對象的子類構(gòu)成及其普遍特征的知識。比如對于一個小區(qū)對象,由住宅樓、服務(wù)樓、幼兒園、綠地、健身區(qū)等子類對象構(gòu)成,相互之間的空間穿插和均衡布局等構(gòu)成該小區(qū)的總體特征。
#################################################################################################
空間數(shù)據(jù)挖掘:變數(shù)據(jù)為知識
中國科學(xué)院計算技術(shù)研究所?劉毅勇?何雄?李金山?廖浩均?孟亮?鄧柱中
?
空間數(shù)據(jù)挖掘是指從空間數(shù)據(jù)庫中抽取沒有清楚表現(xiàn)出來的隱含的知識和空間關(guān)系,并發(fā)現(xiàn)其中有用的特征和模式的理論、方法和技術(shù)。空間數(shù)據(jù)挖掘和知識發(fā)現(xiàn)的過程大致可分為以下多個步驟:數(shù)據(jù)準(zhǔn)備、數(shù)據(jù)選擇、數(shù)據(jù)預(yù)處理、數(shù)據(jù)縮減或者數(shù)據(jù)變換、確定數(shù)據(jù)挖掘目標(biāo)、確定知識發(fā)現(xiàn)算法、數(shù)據(jù)挖掘、模式解釋、知識評價等,而數(shù)據(jù)挖掘只是其中的一個關(guān)鍵步驟。但是為了簡便,人們常常用空間數(shù)據(jù)挖掘來代替空間數(shù)據(jù)挖掘和知識發(fā)現(xiàn)。
?
常用的空間數(shù)據(jù)挖掘方法主要有:
?
1.???????基于概率論的方法。
這是一種通過計算不確定性屬性的概率來挖掘空間知識的方法,所發(fā)現(xiàn)的知識通常被表示成給定條件下某一假設(shè)為真的條件概率。在用誤差矩陣描述遙感分類結(jié)果的不確定性時,可以用這種條件概率作為背景知識來表示不確定性的置信度。
?
2.???????空間分析方法。
指采用綜合屬性數(shù)據(jù)分析、拓撲分析、緩沖區(qū)分析、密度分析、距離分析、疊置分析、網(wǎng)絡(luò)分析、地形分析、趨勢面分析、預(yù)測分析等在內(nèi)?的分析模型和方法,用以發(fā)現(xiàn)目標(biāo)在空間上的相連、相鄰和共生等關(guān)聯(lián)規(guī)則,或挖掘出目標(biāo)之間的最短路徑、最優(yōu)路徑等知識。目前常用的空間分析方法包括探測性?的數(shù)據(jù)分析、空間相鄰關(guān)系挖掘算法、探測性空間分析方法、探測性歸納學(xué)習(xí)方法、圖像分析方法等。
?
3.???????統(tǒng)計分析方法。
指利用空間對象的有限信息和/或不確定性信息進行統(tǒng)計分析,進而評估、預(yù)測空間對象屬性的特征、統(tǒng)計規(guī)律等知識的方法。它主要運用空間自協(xié)方差結(jié)構(gòu)、變異函數(shù)或與其相關(guān)的自協(xié)變量或局部變量值的相似程度實現(xiàn)包含不確定性的空間數(shù)據(jù)挖掘。
?
4.???????歸納學(xué)習(xí)方法。
即在一定的知識背景下,對數(shù)據(jù)進行概括和綜合,在空間數(shù)據(jù)庫(數(shù)據(jù)倉庫)中搜索和挖掘一般的規(guī)則和模式的方法。歸納學(xué)習(xí)的算法很多,如由Quinlan提出的著名的C5.0決策樹算法、Han?Jiawei教授等提出的面向?qū)傩缘臍w納方法、裴健等人提出的基于空間屬性的歸納方法等。
?
5.???????空間關(guān)聯(lián)規(guī)則挖掘方法。
即在空間數(shù)據(jù)庫(數(shù)據(jù)倉庫)中搜索和挖掘空間對象(及其屬性)之間的關(guān)聯(lián)關(guān)系的算法。最著名的關(guān)聯(lián)規(guī)則挖掘算法是Agrawal提出的Apriori算法;此外還有程繼華等提出的多層次關(guān)聯(lián)規(guī)則的挖掘算法、許龍飛等提出的廣義關(guān)聯(lián)規(guī)則模型挖掘方法等。
?
6.???????聚類分析方法。
即根據(jù)實體的特征對其進行聚類或分類,進而發(fā)現(xiàn)數(shù)據(jù)集的整個空間分布規(guī)律和典型模式的方法。常用的聚類方法有K-mean,?K-medoids方法、Ester等提出的基于R—樹的數(shù)據(jù)聚焦法及發(fā)現(xiàn)聚合親近關(guān)系和公共特征的算法、周成虎等提出的基于信息熵的時空數(shù)據(jù)分割聚類模?型等。
?
7.???????神經(jīng)網(wǎng)絡(luò)方法。
即通過大量神經(jīng)元構(gòu)成的網(wǎng)絡(luò)來實現(xiàn)自適應(yīng)非線性動態(tài)系統(tǒng),并使其具有分布存儲、聯(lián)想記憶、大規(guī)模并行處理、自學(xué)習(xí)、自組織、自適應(yīng)等功能的方法;在空間數(shù)據(jù)挖掘中可用來進行分類和聚類知識以及特征的挖掘。
?
8.???????決策樹方法。
即根據(jù)不同的特征,以樹型結(jié)構(gòu)表示分類或決策集合,進而產(chǎn)生規(guī)則和發(fā)現(xiàn)規(guī)律的方法。采用決策樹方法進行空間數(shù)據(jù)挖掘的基本步驟如?下:首先利用訓(xùn)練空間實體集生成測試函數(shù);其次根據(jù)不同取值建立決策樹的分支,并在每個分支子集中重復(fù)建立下層結(jié)點和分支,形成決策樹;然后對決策樹進行?剪枝處理,把決策樹轉(zhuǎn)化為據(jù)以對新實體進行分類的規(guī)則。
?
9.???????粗集理論。
一種由上近似集和下近似集來構(gòu)成粗集,進而以此為基礎(chǔ)來處理不精確、不確定和不完備信息的智能數(shù)據(jù)決策分析工具,較適于基于屬性不確定性的空間數(shù)據(jù)挖掘。
?
10.?基于模糊集合論的方法。
這是一系列利用模糊集合理論描述帶有不確定性的研究對象,對實際問題進行分析和處理的方法。基于模糊集合論的方法在遙感圖像的模糊分類、GIS模糊查詢、空間數(shù)據(jù)不確定性表達和處理等方面得到了廣泛應(yīng)用。
?
11.?空間特征和趨勢探側(cè)方法。
這是一種基于鄰域圖和鄰域路徑概念的空間數(shù)據(jù)挖掘算法,它通過不同類型屬性或?qū)ο蟪霈F(xiàn)的相對頻率的差異來提取空間規(guī)則。
?
12.?基于云理論的方法。
云理論是一種分析不確定信息的新理論,由云模型、不確定性推理和云變換三部分構(gòu)成。基于云理論的空間數(shù)據(jù)挖掘方法把定性分析和定量計算結(jié)合起來,處理空間對象中融隨機性和模糊性為一體的不確定性屬性;可用于空間關(guān)聯(lián)規(guī)則的挖掘、空間數(shù)據(jù)庫的不確定性查詢等。
?
13.?基于證據(jù)理論的方法。
證據(jù)理論是一種通過可信度函數(shù)(度量已有證據(jù)對假設(shè)支持的最低程度)和可能函數(shù)(衡量根據(jù)已有證據(jù)不能否定假設(shè)的最高程度)來處理不確定性信息的理論,可用于具有不確定屬性的空間數(shù)據(jù)挖掘。
?
14.?遺傳算法。
這是一種模擬生物進化過程的算法,可對問題的解空間進行高效并行的全局搜索,能在搜索過程中自動獲取和積累有關(guān)搜索空間的知識,并?可通過自適應(yīng)機制控制搜索過程以求得最優(yōu)解。空間數(shù)據(jù)挖掘中的許多問題,如分類、聚類、預(yù)測等知識的獲取,均可以用遺傳算法來求解。這種方法曾被應(yīng)用于遙?感影像數(shù)據(jù)中的特征發(fā)現(xiàn)。
?
15.?數(shù)據(jù)可視化方法。
這是一種通過可視化技術(shù)將空間數(shù)據(jù)顯示出來,幫助人們利用視覺分析來尋找數(shù)據(jù)中的結(jié)構(gòu)、特征、模式、趨勢、異常現(xiàn)象或相關(guān)關(guān)系等空間知識的方法。為了確保這種方法行之有效,必須構(gòu)建功能強大的可視化工具和輔助分析工具。
?
16.?計算幾何方法。
這是一種利用計算機程序來計算平面點集的Voronoi圖,進而發(fā)現(xiàn)空間知識的方法。利用Voronoi圖可以解決空間拓撲關(guān)系、數(shù)據(jù)的多尺度表達、自動綜合、空間聚類、空間目標(biāo)的勢力范圍、公共設(shè)施的選址、確定最短路徑等問題。
?
17.?空間在線數(shù)據(jù)挖掘。
這是一種基于網(wǎng)絡(luò)的驗證型空間來進行數(shù)據(jù)挖掘和分析的工具。它以多維視圖為基礎(chǔ),強調(diào)執(zhí)行效率和對用戶命令的及時響應(yīng),一般以空間?數(shù)據(jù)倉庫為直接數(shù)據(jù)源。這種方法通過數(shù)據(jù)分析與報表模塊的查詢和分析工具(如OLAP、決策分析、數(shù)據(jù)挖掘等)完成對信息和知識的提取,以滿足決策的需?要。
頁首
由?C6H5NO2???2006年?11月?22日?18:04?
3.數(shù)據(jù)準(zhǔn)備
使用WEKA作數(shù)據(jù)挖掘,面臨的第一個問題往往是我們的數(shù)據(jù)不是ARFF格式的。幸好,WEKA還提供了對CSV文件的支持,而這種格式是被很多其他軟件所支持的。此外,WEKA還提供了通過JDBC訪問數(shù)據(jù)庫的功能。
在這一節(jié)里,我們先以Excel和Matlab為例,說明如何獲得CSV文件。然后我們將知道CSV文件如何轉(zhuǎn)化成ARFF文件,畢竟后者才是WEKA支持得最好的文件格式。面對一個ARFF文件,我們?nèi)杂幸恍╊A(yù)處理要做,才能進行挖掘任務(wù)。
.*?->?.csv
我們給出一個CSV文件的例子(bank-data.csv)。用UltraEdit打開它可以看到,這種格式也是一種逗號分割數(shù)據(jù)的文本文件,儲存了一個二維表格。
Excel的XLS文件可以讓多個二維表格放到不同的工作表(Sheet)中,我們只能把每個工作表存成不同的CSV文件。打開一個XLS文件并切換到需要轉(zhuǎn)換的工作表,另存為CSV類型,點“確定”、“是”忽略提示即可完成操作。
在Matlab中的二維表格是一個矩陣,我們通過這條命令把一個矩陣存成CSV格式。
csvwrite('filename',matrixname)
需要注意的是,Matllab給出的CSV文件往往沒有屬性名(Excel給出的也有可能沒有)。而WEKA必須從CSV文件的第一行讀取屬性名,否則就會把第一行的各屬性值讀成變量名。因此我們對于Matllab給出的CSV文件需要用UltraEdit打開,手工添加一行屬性名。注意屬性名的個數(shù)要跟數(shù)據(jù)屬性的個數(shù)一致,仍用逗號隔開。
.csv?->?.arff
將CSV轉(zhuǎn)換為ARFF最迅捷的辦法是使用WEKA所帶的命令行工具。
運行WEKA的主程序,出現(xiàn)GUI后可以點擊下方按鈕進入相應(yīng)的模塊。我們點擊進入“Simple?CLI”模塊提供的命令行功能。在新窗口的最下方(上方是不能寫字的)輸入框?qū)懮?br /> java?weka.core.converters.CSVLoader?filename.csv?>?filename.arff?
即可完成轉(zhuǎn)換。
在WEKA?3.5中提供了一個“Arff?Viewer”模塊,我們可以用它打開一個CSV文件將進行瀏覽,然后另存為ARFF文件。
進入“Exploer”模塊,從上方的按鈕中打開CSV文件然后另存為ARFF文件亦可。
“Exploer”界面
我們應(yīng)該注意到,“Exploer”還提供了很多功能,實際上可以說這是WEKA使用最多的模塊。現(xiàn)在我們先來熟悉它的界面,然后利用它對數(shù)據(jù)進行預(yù)處理。
f2.jpg?(97.14?KiB)?被瀏覽?18389?次?
圖2
圖2顯示的是使用3.5版"Exploer"打開"bank-data.csv"的情況。我們根據(jù)不同的功能把這個界面分成8個區(qū)域。
區(qū)域1的幾個選項卡是用來切換不同的挖掘任務(wù)面板。這一節(jié)用到的只有“Preprocess”,其他面板的功能將在以后介紹。
區(qū)域2是一些常用按鈕。包括打開數(shù)據(jù),保存及編輯功能。我們在這里把"bank-data.csv"另存為"bank-data.arff"。
在區(qū)域3中“Choose”某個“Filter”,可以實現(xiàn)篩選數(shù)據(jù)或者對數(shù)據(jù)進行某種變換。數(shù)據(jù)預(yù)處理主要就利用它來實現(xiàn)。
區(qū)域4展示了數(shù)據(jù)集的一些基本情況。
區(qū)域5中列出了數(shù)據(jù)集的所有屬性。勾選一些屬性并“Remove”就可以刪除它們,刪除后還可以利用區(qū)域2的“Undo”按鈕找回。區(qū)域5上方的一排按鈕是用來實現(xiàn)快速勾選的。
在區(qū)域5中選中某個屬性,則區(qū)域6中有關(guān)于這個屬性的摘要。注意對于數(shù)值屬性和分類屬性,摘要的方式是不一樣的。圖中顯示的是對數(shù)值屬性“income”的摘要。
區(qū)域7是區(qū)域5中選中屬性的直方圖。若數(shù)據(jù)集的最后一個屬性(我們說過這是分類或回歸任務(wù)的默認目標(biāo)變量)是分類變量(這里的“pep”正好是),直方圖中的每個長方形就會按照該變量的比例分成不同顏色的段。要想換個分段的依據(jù),在區(qū)域7上方的下拉框中選個不同的分類屬性就可以了。下拉框里選上“No?Class”或者一個數(shù)值屬性會變成黑白的直方圖。
區(qū)域8是狀態(tài)欄,可以查看Log以判斷是否有錯。右邊的weka鳥在動的話說明WEKA正在執(zhí)行挖掘任務(wù)。右鍵點擊狀態(tài)欄還可以執(zhí)行JAVA內(nèi)存的垃圾回收。
預(yù)處理
bank-data數(shù)據(jù)各屬性的含義如下:
id?a?unique?identification?number?
age?age?of?customer?in?years?(numeric)?
sex?MALE?/?FEMALE?
region?inner_city/rural/suburban/town?
income?income?of?customer?(numeric)?
married?is?the?customer?married?(YES/NO)?
children?number?of?children?(numeric)?
car?does?the?customer?own?a?car?(YES/NO)?
save_acct?does?the?customer?have?a?saving?account?(YES/NO)?
current_acct?does?the?customer?have?a?current?account?(YES/NO)?
mortgage?does?the?customer?have?a?mortgage?(YES/NO)?
pep?did?the?customer?buy?a?PEP?(Personal?Equity?Plan)?after?the?last?mailing?(YES/NO)?
通常對于數(shù)據(jù)挖掘任務(wù)來說,ID這樣的信息是無用的,我們將之刪除。在區(qū)域5勾選屬性“id”,并點擊“Remove”。將新的數(shù)據(jù)集保存一次,并用UltraEdit打開這個ARFF文件。我們發(fā)現(xiàn),在屬性聲明部分,WEKA已經(jīng)為每個屬性選好了合適的類型。
我們知道,有些算法,只能處理所有的屬性都是分類型的情況。這時候我們就需要對數(shù)值型的屬性進行離散化。在這個數(shù)據(jù)集中有3個變量是數(shù)值型的,分別是“age”,“income”和“children”。?
其中“children”只有4個取值:0,1,2,3。這時我們在UltraEdit中直接修改ARFF文件,把
@attribute?children?numeric
改為
@attribute?children?{0,1,2,3}
就可以了。
在“Explorer”中重新打開“bank-data.arff”,看看選中“children”屬性后,區(qū)域6那里顯示的“Type”是不是變成“Nominal”了?
“age”和“income”的離散化我們需要借助WEKA中名為“Discretize”的Filter來完成。在區(qū)域2中點“Choose”,出現(xiàn)一棵“Filter樹”,逐級找到“weka.filters.unsupervised.attribute.Discretize”,點擊。若無法關(guān)閉這個樹,在樹之外的地方點擊“Explorer”面板即可。
現(xiàn)在“Choose”旁邊的文本框應(yīng)該顯示“Discretize?-B?10?-M?-0.1?-R?first-last”。?點擊這個文本框會彈出新窗口以修改離散化的參數(shù)。
我們不打算對所有的屬性離散化,只是針對對第1個和第4個屬性(見區(qū)域5屬性名左邊的數(shù)字),故把attributeIndices右邊改成“1,4”。計劃把這兩個屬性都分成3段,于是把“bins”改成“3”。其它框里不用更改,關(guān)于它們的意思可以點“More”查看。點“OK”回到“Explorer”,可以看到“age”和“income”已經(jīng)被離散化成分類型的屬性。若想放棄離散化可以點區(qū)域2的“Undo”。
如果對“"(-inf-34.333333]"”這樣晦澀的標(biāo)識不滿,我們可以用UltraEdit打開保存后的ARFF文件,把所有的“'\'(-inf-34.333333]\''”替換成“0_34”。其它標(biāo)識做類似地手動替換。
經(jīng)過上述操作得到的數(shù)據(jù)集我們保存為bank-data-final.arff。
4.?關(guān)聯(lián)規(guī)則(購物籃分析)
注意:目前,WEKA的關(guān)聯(lián)規(guī)則分析功能僅能用來作示范,不適合用來挖掘大型數(shù)據(jù)集。
我們打算對前面的“bank-data”數(shù)據(jù)作關(guān)聯(lián)規(guī)則的分析。用“Explorer”打開“bank-data-final.arff”后,切換到“Associate”選項卡。默認關(guān)聯(lián)規(guī)則分析是用Apriori算法,我們就用這個算法,但是點“Choose”右邊的文本框修改默認的參數(shù),彈出的窗口中點“More”可以看到各參數(shù)的說明。
背景知識?
首先我們來溫習(xí)一下Apriori的有關(guān)知識。對于一條關(guān)聯(lián)規(guī)則L->R,我們常用支持度(Support)和置信度(Confidence)來衡量它的重要性。規(guī)則的支持度是用來估計在一個購物籃中同時觀察到L和R的概率P(L,R),而規(guī)則的置信度是估計購物欄中出現(xiàn)了L時也出會現(xiàn)R的條件概率P(R|L)。關(guān)聯(lián)規(guī)則的目標(biāo)一般是產(chǎn)生支持度和置信度都較高的規(guī)則。
有幾個類似的度量代替置信度來衡量規(guī)則的關(guān)聯(lián)程度,它們分別是
Lift(提升度?):?P(L,R)/(P(L)P(R))?
Lift=1時表示L和R獨立。這個數(shù)越大,越表明L和R存在在一個購物籃中不是偶然現(xiàn)象。
Leverage(不知道怎么翻譯):P(L,R)-P(L)P(R)?
它和Lift的含義差不多。Leverage=0時L和R獨立,Leverage越大L和R的關(guān)系越密切。
Conviction(更不知道譯了):P(L)P(!R)/P(L,!R)?(!R表示R沒有發(fā)生)
Conviction也是用來衡量L和R的獨立性。從它和lift的關(guān)系(對R取反,代入Lift公式后求倒數(shù))可以看出,我們也希望這個值越大越好。
值得注意的是,用Lift和Leverage作標(biāo)準(zhǔn)時,L和R是對稱的,Confidence和Conviction則不然。
參數(shù)設(shè)置
現(xiàn)在我們計劃挖掘出支持度在10%到100%之間,并且lift值超過1.5且lift值排在前100位的那些關(guān)聯(lián)規(guī)則。我們把“l(fā)owerBoundMinSupport”和“upperBoundMinSupport”分別設(shè)為0.1和1,“metricType”設(shè)為lift,“minMetric”設(shè)為1.5,“numRules”設(shè)為100。其他選項保持默認即可。“OK”?之后在“Explorer”中點擊“Start”開始運行算法,在右邊窗口顯示數(shù)據(jù)集摘要和挖掘結(jié)果。
下面是挖掘出來的lift排前5的規(guī)則。
Best?rules?found:
1.?age=52_max?save_act=YES?current_act=YES?113?==>?income=43759_max?61?conf:(0.54)?<?lift:(4.05)>?lev:(0.08)?[45]?conv:(1.85)
??2.?income=43759_max?80?==>?age=52_max?save_act=YES?current_act=YES?61?conf:(0.76)?<?lift:(4.05)>?lev:(0.08)?[45]?conv:(3.25)
??3.?income=43759_max?current_act=YES?63?==>?age=52_max?save_act=YES?61?conf:(0.97)?<?lift:(3.85)>?lev:(0.08)?[45]?conv:(15.72)
??4.?age=52_max?save_act=YES?151?==>?income=43759_max?current_act=YES?61?conf:(0.4)?<?lift:(3.85)>?lev:(0.08)?[45]?conv:(1.49)
??5.?age=52_max?save_act=YES?151?==>?income=43759_max?76?conf:(0.5)?<?lift:(3.77)>?lev:(0.09)?[55]?conv:(1.72)
對于挖掘出的每條規(guī)則,WEKA列出了它們關(guān)聯(lián)程度的四項指標(biāo)。
命令行方式
我們也可以利用命令行來完成挖掘任務(wù),在“Simlpe?CLI”模塊中輸入如下格式的命令:
java?weka.associations.Apriori?options?-t?directory-path\bank-data-final.arff?
即可完成Apriori算法。注意,“-t”參數(shù)后的文件路徑中不能含有空格。
在前面我們使用的option為
-N?100?-T?1?-C?1.5?-D?0.05?-U?1.0?-M?0.1?-S?-1.0?命令行中使用這些參數(shù)得到的結(jié)果和前面利用GUI得到的一樣。
我們還可以加上“-?I”參數(shù),得到不同項數(shù)的頻繁項集。我用的命令如下:
java?weka.associations.Apriori?-N?100?-T?1?-C?1.5?-D?0.05?-U?1.0?-M?0.1?-S?-1.0?-I?-t?d:\weka\bank-data-final.arff?
挖掘結(jié)果在上方顯示,應(yīng)是這個文件的樣子。
5.?分類與回歸?
背景知識?
WEKA把分類(Classification)和回歸(Regression)都放在“Classify”選項卡中,這是有原因的。?
在這兩個任務(wù)中,都有一個目標(biāo)屬性(輸出變量)。我們希望根據(jù)一個樣本(WEKA中稱作實例)的一組特征(輸入變量),對目標(biāo)進行預(yù)測。為了實現(xiàn)這一目的,我們需要有一個訓(xùn)練數(shù)據(jù)集,這個數(shù)據(jù)集中每個實例的輸入和輸出都是已知的。觀察訓(xùn)練集中的實例,可以建立起預(yù)測的模型。有了這個模型,我們就可以新的輸出未知的實例進行預(yù)測了。衡量模型的好壞就在于預(yù)測的準(zhǔn)確程度。?
在WEKA中,待預(yù)測的目標(biāo)(輸出)被稱作Class屬性,這應(yīng)該是來自分類任務(wù)的“類”。一般的,若Class屬性是分類型時我們的任務(wù)才叫分類,Class屬性是數(shù)值型時我們的任務(wù)叫回歸。?
選擇算法?
這一節(jié)中,我們使用C4.5決策樹算法對bank-data建立起分類模型。?
我們來看原來的“bank-data.csv”文件。“ID”屬性肯定是不需要的。由于C4.5算法可以處理數(shù)值型的屬性,我們不用像前面用關(guān)聯(lián)規(guī)則那樣把每個變量都離散化成分類型。盡管如此,我們還是把“Children”屬性轉(zhuǎn)換成分類型的兩個值“YES”和“NO”。另外,我們的訓(xùn)練集僅取原來數(shù)據(jù)集實例的一半;而從另外一半中抽出若干條作為待預(yù)測的實例,它們的“pep”屬性都設(shè)為缺失值。經(jīng)過了這些處理的訓(xùn)練集數(shù)據(jù)在這里下載;待預(yù)測集數(shù)據(jù)在這里下載。?
我們用“Explorer”打開訓(xùn)練集“bank.arff”,觀察一下它是不是按照前面的要求處理好了。切換到“Classify”選項卡,點擊“Choose”按鈕后可以看到很多分類或者回歸的算法分門別類的列在一個樹型框里。3.5版的WEKA中,樹型框下方有一個“Filter...”按鈕,點擊可以根據(jù)數(shù)據(jù)集的特性過濾掉不合適的算法。我們數(shù)據(jù)集的輸入屬性中有“Binary”型(即只有兩個類的分類型)和數(shù)值型的屬性,而Class變量是“Binary”的;于是我們勾選“Binary?attributes”“Numeric?attributes”和“Binary?class”。點“OK”后回到樹形圖,可以發(fā)現(xiàn)一些算法名稱變紅了,說明它們不能用。選擇“trees”下的“J48”,這就是我們需要的C4.5算法,還好它沒有變紅。?
點擊“Choose”右邊的文本框,彈出新窗口為該算法設(shè)置各種參數(shù)。點“More”查看參數(shù)說明,點“Capabilities”是查看算法適用范圍。這里我們把參數(shù)保持默認。?
現(xiàn)在來看左中的“Test?Option”。我們沒有專門設(shè)置檢驗數(shù)據(jù)集,為了保證生成的模型的準(zhǔn)確性而不至于出現(xiàn)過擬合(overfitting)的現(xiàn)象,我們有必要采用10折交叉驗證(10-fold?cross?validation)來選擇和評估模型。若不明白交叉驗證的含義可以Google一下。?
建模結(jié)果?
OK,選上“Cross-validation”并在“Folds”框填上“10”。點“Start”按鈕開始讓算法生成決策樹模型。很快,用文本表示的一棵決策樹,以及對這個決策樹的誤差分析等等結(jié)果出現(xiàn)在右邊的“Classifier?output”中。同時左下的“Results?list”出現(xiàn)了一個項目顯示剛才的時間和算法名稱。如果換一個模型或者換個參數(shù),重新“Start”一次,則“Results?list”又會多出一項。?
我們看到“J48”算法交叉驗證的結(jié)果之一為?
Correctly?Classified?Instances?206?68.6667?%?
也就是說這個模型的準(zhǔn)確度只有69%左右。也許我們需要對原屬性進行處理,或者修改算法的參數(shù)來提高準(zhǔn)確度。但這里我們不管它,繼續(xù)用這個模型。?
右鍵點擊“Results?list”剛才出現(xiàn)的那一項,彈出菜單中選擇“Visualize?tree”,新窗口里可以看到圖形模式的決策樹。建議把這個新窗口最大化,然后點右鍵,選“Fit?to?screen”,可以把這個樹看清楚些。看完后截圖或者關(guān)掉:P?
這里我們解釋一下“Confusion?Matrix”的含義。?
===?Confusion?Matrix?===
??a?b?<--?classified?as
??74?64?|?a?=?YES
??30?132?|?b?=?NO?
這個矩陣是說,原本“pep”是“YES”的實例,有74個被正確的預(yù)測為“YES”,有64個錯誤的預(yù)測成了“NO”;原本“pep”是“NO”的實例,有30個被錯誤的預(yù)測為“YES”,有132個正確的預(yù)測成了“NO”。74+64+30+132?=?300是實例總數(shù),而(74+132)/300?=?0.68667正好是正確分類的實例所占比例。這個矩陣對角線上的數(shù)字越大,說明預(yù)測得越好。?
模型應(yīng)用?
現(xiàn)在我們要用生成的模型對那些待預(yù)測的數(shù)據(jù)集進行預(yù)測了。注意待預(yù)測數(shù)據(jù)集和訓(xùn)練用數(shù)據(jù)集各個屬性的設(shè)置必須是一致的。即使你沒有待預(yù)測數(shù)據(jù)集的Class屬性的值,你也要添加這個屬性,可以將該屬性在各實例上的值均設(shè)成缺失值。?
在“Test?Opion”中選擇“Supplied?test?set”,并且“Set”成你要應(yīng)用模型的數(shù)據(jù)集,這里是“bank-new.arff”文件。?
現(xiàn)在,右鍵點擊“Result?list”中剛產(chǎn)生的那一項,選擇“Re-evaluate?model?on?current?test?set”。右邊顯示結(jié)果的區(qū)域中會增加一些內(nèi)容,告訴你該模型應(yīng)用在這個數(shù)據(jù)集上表現(xiàn)將如何。如果你的Class屬性都是些缺失值,那這些內(nèi)容是無意義的,我們關(guān)注的是模型在新數(shù)據(jù)集上的預(yù)測值。?
現(xiàn)在點擊右鍵菜單中的“Visualize?classifier?errors”,將彈出一個新窗口顯示一些有關(guān)預(yù)測誤差的散點圖。點擊這個新窗口中的“Save”按鈕,保存一個Arff文件。打開這個文件可以看到在倒數(shù)第二個位置多了一個屬性(predictedpep),這個屬性上的值就是模型對每個實例的預(yù)測值。?
使用命令行(推薦)?
雖然使用圖形界面查看結(jié)果和設(shè)置參數(shù)很方便,但是最直接最靈活的建模及應(yīng)用的辦法仍是使用命令行。?
打開“Simple?CLI”模塊,像上面那樣使用“J48”算法的命令格式為:?
java?weka.classifiers.trees.J48?-C?0.25?-M?2?-t?directory-path\bank.arff?-d?directory-path?\bank.model?
其中參數(shù)“?-C?0.25”和“-M?2”是和圖形界面中所設(shè)的一樣的。“-t?”后面跟著的是訓(xùn)練數(shù)據(jù)集的完整路徑(包括目錄和文件名),“-d?”后面跟著的是保存模型的完整路徑。注意!這里我們可以把模型保存下來。?
輸入上述命令后,所得到樹模型和誤差分析會在“Simple?CLI”上方顯示,可以復(fù)制下來保存在文本文件里。誤差是把模型應(yīng)用到訓(xùn)練集上給出的。?
把這個模型應(yīng)用到“bank-new.arff”所用命令的格式為:?
java?weka.classifiers.trees.J48?-p?9?-l?directory-path\bank.model?-T?directory-path?\bank-new.arff?
其中“-p?9”說的是模型中的待預(yù)測屬性的真實值存在第9個(也就是“pep”)屬性中,這里它們?nèi)课粗虼巳坑萌笔е荡妗!?l”后面是模型的完整路徑。“-T”后面是待預(yù)測數(shù)據(jù)集的完整路徑。?
輸入上述命令后,在“Simple?CLI”上方會有這樣一些結(jié)果:?
0?YES?0.75??
1?NO?0.7272727272727273??
2?YES?0.95??
3?YES?0.8813559322033898??
4?NO?0.8421052631578947??
...?
這里的第一列就是我們提到過的“Instance_number”,第二列就是剛才的“predictedpep”,第四列則是“bank-new.arff”中原來的“pep”值(這里都是“?”缺失值)。第三列對預(yù)測結(jié)果的置信度(confidence?)。比如說對于實例0,我們有75%的把握說它的“pep”的值會是“YES”,對實例4我們有84.2%的把握說它的“pep”值會是“NO”。?
我們看到,使用命令行至少有兩個好處。一個是可以把模型保存下來,這樣有新的待預(yù)測數(shù)據(jù)出現(xiàn)時,不用每次重新建模,直接應(yīng)用保存好的模型即可。另一個是對預(yù)測結(jié)果給出了置信度,我們可以有選擇的采納預(yù)測結(jié)果,例如,只考慮那些置信度在85%以上的結(jié)果。?
----整理自http://maya.cs.depaul.edu/~classes/ect584/WEKA/classify.html?
6.?聚類分析?
原理與實現(xiàn)?
聚類分析中的“類”(cluster)和前面分類的“類”(class)是不同的,對cluster更加準(zhǔn)確的翻譯應(yīng)該是“簇”。聚類的任務(wù)是把所有的實例分配到若干的簇,使得同一個簇的實例聚集在一個簇中心的周圍,它們之間距離的比較近;而不同簇實例之間的距離比較遠。對于由數(shù)值型屬性刻畫的實例來說,這個距離通常指歐氏距離。?
現(xiàn)在我們對前面的“bank?data”作聚類分析,使用最常見的K均值(K-means)算法。下面我們簡單描述一下K均值聚類的步驟。?
K均值算法首先隨機的指定K個簇中心。然后:1)將每個實例分配到距它最近的簇中心,得到K個簇;2)計分別計算各簇中所有實例的均值,把它們作為各簇新的簇中心。重復(fù)1)和2),直到K個簇中心的位置都固定,簇的分配也固定。?
上述K均值算法只能處理數(shù)值型的屬性,遇到分類型的屬性時要把它變?yōu)槿舾蓚€取值0和1的屬性。WEKA將自動實施這個分類型到數(shù)值型的變換,而且WEKA會自動對數(shù)值型的數(shù)據(jù)作標(biāo)準(zhǔn)化。因此,對于原始數(shù)據(jù)“bank-data.csv”,我們所做的預(yù)處理只是刪去屬性“id”,保存為ARFF格式后,修改屬性“children”為分類型。這樣得到的數(shù)據(jù)文件為“bank.arff”,含600條實例。?
用“Explorer”打開剛才得到的“bank.arff”,并切換到“Cluster”。點“Choose”按鈕選擇“SimpleKMeans”,這是WEKA中實現(xiàn)K均值的算法。點擊旁邊的文本框,修改“numClusters”為6,說明我們希望把這600條實例聚成6類,即K=6。下面的“seed”參數(shù)是要設(shè)置一個隨機種子,依此產(chǎn)生一個隨機數(shù),用來得到K均值算法中第一次給出的K個簇中心的位置。我們不妨?xí)簳r讓它就為10。?
選中“Cluster?Mode”的“Use?training?set”,點擊“Start”按鈕,觀察右邊“Clusterer?output”給出的聚類結(jié)果。也可以在左下角“Result?list”中這次產(chǎn)生的結(jié)果上點右鍵,“View?in?separate?window”在新窗口中瀏覽結(jié)果。?
結(jié)果解釋?
首先我們注意到結(jié)果中有這么一行:?
Within?cluster?sum?of?squared?errors:?1604.7416693522332?
這是評價聚類好壞的標(biāo)準(zhǔn),數(shù)值越小說明同一簇實例之間的距離越小。也許你得到的數(shù)值會不一樣;實際上如果把“seed”參數(shù)改一下,得到的這個數(shù)值就可能會不一樣。我們應(yīng)該多嘗試幾個seed,并采納這個數(shù)值最小的那個結(jié)果。例如我讓“seed”取100,就得到?
Within?cluster?sum?of?squared?errors:?1555.6241507629218?
我該取后面這個。當(dāng)然再嘗試幾個seed,這個數(shù)值可能會更小。?
接下來“Cluster?centroids:”之后列出了各個簇中心的位置。對于數(shù)值型的屬性,簇中心就是它的均值(Mean);分類型的就是它的眾數(shù)(Mode),?也就是說這個屬性上取值為眾數(shù)值的實例最多。對于數(shù)值型的屬性,還給出了它在各個簇里的標(biāo)準(zhǔn)差(Std?Devs)。?
最后的“Clustered?Instances”是各個簇中實例的數(shù)目及百分比。?
為了觀察可視化的聚類結(jié)果,我們在左下方“Result?list”列出的結(jié)果上右擊,點“Visualize?cluster?assignments”。彈出的窗口給出了各實例的散點圖。最上方的兩個框是選擇橫坐標(biāo)和縱坐標(biāo),第二行的“color”是散點圖著色的依據(jù),默認是根據(jù)不同的簇“Cluster”給實例標(biāo)上不同的顏色。?
可以在這里點“Save”把聚類結(jié)果保存成ARFF文件。在這個新的ARFF文件中,“instance_number”屬性表示某實例的編號,“Cluster”屬性表示聚類算法給出的該實例所在的簇。?
---整理自?http://maya.cs.depaul.edu/~classes/ect584/WEKA/k-means.html
轉(zhuǎn)載于:https://www.cnblogs.com/springMVC/archive/2011/10/07/2204750.html
總結(jié)
以上是生活随笔為你收集整理的【转】主要空间数据挖掘方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (二十):response 对象
- 下一篇: 源码网站推荐