日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

用 WEKA 进行数据挖掘,第 2 部分: 分类和群集

發(fā)布時(shí)間:2025/7/25 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用 WEKA 进行数据挖掘,第 2 部分: 分类和群集 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

from:http://www.ibm.com/developerworks/cn/opensource/os-weka2/index.html


簡(jiǎn)介

在?用 WEKA 進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸,我介紹了數(shù)據(jù)挖掘的概念以及免費(fèi)的開(kāi)源軟件 Waikato Environment for Knowledge Analysis(WEKA),利用它可以挖掘數(shù)據(jù)來(lái)獲得趨勢(shì)和模式。我還談到了第一種數(shù)據(jù)挖掘的方法 — 回歸 — 使用它可以根據(jù)一組給定的輸入值預(yù)測(cè)數(shù)字值。這種分析方法非常容易進(jìn)行,而且也是功能最不強(qiáng)大的一種數(shù)據(jù)挖掘方法,但是通過(guò)它,讀者對(duì) WEKA 有了很好的了解,并且它還提供了一個(gè)很好的例子,展示了原始數(shù)據(jù)是如何轉(zhuǎn)換為有意義的信息的。

在本文中,我將帶您親歷另外兩種數(shù)據(jù)挖掘的方法,這二者要比回歸模型稍微復(fù)雜一些,但功能則更為強(qiáng)大。如果回歸模型只能為特定輸入提供一個(gè)數(shù)值輸出,那么這兩種模型則允許您對(duì)數(shù)據(jù)做不同的解析。正如我在第 1 部分中所說(shuō)的,數(shù)據(jù)挖掘的核心就是將正確的模型應(yīng)用于數(shù)據(jù)。即便有了有關(guān)客戶的最佳數(shù)據(jù)(無(wú)論這意味著什么),但是如果沒(méi)有將正確的模型應(yīng)用于數(shù)據(jù),那么這些數(shù)據(jù)也沒(méi)有任何意義。不妨從另一個(gè)角度考慮這件事情:如果您只使用能生成數(shù)值輸出的回歸模型,那么 Amazon 如何能告知您“購(gòu)買了 X 產(chǎn)品的客戶還購(gòu)買了 Y 產(chǎn)品”?這里沒(méi)有數(shù)值型的函數(shù)能夠告訴您這類信息。所以讓我們來(lái)深入研究可用在數(shù)據(jù)中的其他兩個(gè)模型。

在本文中,我會(huì)反復(fù)提及稱為“最近鄰”的數(shù)據(jù)挖掘方法,但我不會(huì)過(guò)多地對(duì)其進(jìn)行剖析,詳細(xì)的介紹會(huì)在第 3 部分給出。不過(guò),我在本文中的比較和描述部分將它包括進(jìn)來(lái)以使討論更為完整。

分類 vs. 群集 vs. 最近鄰

在我深入探討每種方法的細(xì)節(jié)并通過(guò) WEKA 使用它們之前,我想我們應(yīng)該先理解每個(gè)模型 — 每個(gè)模型適合哪種類型的數(shù)據(jù)以及每個(gè)模型試圖實(shí)現(xiàn)的目標(biāo)。我們還會(huì)將我們已有的模型 — 回歸模型 — 也包括在我們的討論之中,以便您可以看到這三種新模型與我們已經(jīng)了解的這個(gè)模型的對(duì)比。我將通過(guò)實(shí)際的例子展示每個(gè)模型的使用以及各自的不同點(diǎn)。這些實(shí)際的例子均圍繞著一個(gè)本地的 BMW 經(jīng)銷店展開(kāi),研究它如何能增加銷售。這個(gè)經(jīng)銷店已經(jīng)保存了所有其過(guò)去的銷售信息及有關(guān)購(gòu)買過(guò) BMW、留意過(guò) BMW 或是來(lái)過(guò) BMW 展廳的每個(gè)客戶的信息。這個(gè)經(jīng)銷店想要增加未來(lái)的銷售并部署了數(shù)據(jù)挖掘來(lái)實(shí)現(xiàn)此目標(biāo)。

回歸

問(wèn)題:“對(duì)于新的 BMW M5 車型我們?cè)撊绾味▋r(jià)?” 回歸模型只能給出這個(gè)問(wèn)題的一個(gè)數(shù)值答案。回歸模型會(huì)使用 BMW 和 M5 的過(guò)去銷售數(shù)據(jù)來(lái)基于所售汽車的屬性和賣點(diǎn)確定人們過(guò)去在這個(gè)經(jīng)銷店購(gòu)買車的價(jià)格。然后,回歸模型允許 BMW 經(jīng)銷店插入新車的屬性來(lái)確定其價(jià)格。

比如:Selling Price = $25,000 + ($2900 * Liters in Engine) + ($9000 * isSedan) + ($11,000 * isConvertible) + ($100 * inches of car) + ($22,000 * isM)。

分類

問(wèn)題:“那么客戶 X 有多大的可能會(huì)購(gòu)買最新的 BMW M5 呢?” 創(chuàng)建一個(gè)分類樹(shù)(一個(gè)決策樹(shù)),并借此挖掘數(shù)據(jù)就可以確定這個(gè)人購(gòu)買一輛新的 M5 的可能性有多大。這個(gè)樹(shù)上的節(jié)點(diǎn)可以是年齡、收入水平、目前擁有的車的數(shù)量、婚姻狀況、有無(wú)孩子、房主還是租戶。對(duì)這個(gè)決策樹(shù)使用此人的這些屬性就可以確定他購(gòu)買 M5 的可能性。

群集

問(wèn)題是:“哪個(gè)年齡組最喜歡銀色的 BMW M5?”這就需要挖掘數(shù)據(jù)來(lái)對(duì)比過(guò)去購(gòu)車者的年齡和過(guò)去購(gòu)買的車的顏色。從這些數(shù)據(jù),就能夠找到某個(gè)年齡組(比如 22-30 歲)具有訂購(gòu)某種顏色的 BMW M5 的更高的傾向性(75% 購(gòu)買藍(lán)色)。同樣地,它也可顯示另一個(gè)不同的年齡組(比如 55-62)則更傾向于訂購(gòu)銀色的 BMW(65 % 購(gòu)買銀色,20 % 購(gòu)買灰色)。這些數(shù)據(jù),當(dāng)挖掘后,傾向于集中于某些特定年齡組和特定顏色周圍,方便用戶快速判斷該數(shù)據(jù)內(nèi)的模式。

最近鄰

問(wèn)題:“當(dāng)人們購(gòu)買 BMW M5 時(shí),他們傾向于同時(shí)購(gòu)買其他哪些選項(xiàng)?”數(shù)據(jù)挖掘顯示,人們?nèi)氲瓴①?gòu)買一輛 BMW M5 時(shí),他們還會(huì)傾向于購(gòu)買與之配套的行李箱。(這也就是所謂的購(gòu)物籃分析)。 使用此數(shù)據(jù),汽車經(jīng)銷店就會(huì)將配套行李箱的促銷廣告放在店面的顯眼處,甚至?xí)趫?bào)紙上做促銷廣告,如果他們購(gòu)買 M5,配套行李箱將免費(fèi)/打折,以期增加銷售。

分類

分類?(也即分類樹(shù)或決策樹(shù)) 是一種數(shù)據(jù)挖掘算法,為如何確定一個(gè)新的數(shù)據(jù)實(shí)例的輸出創(chuàng)建逐步指導(dǎo)。它所創(chuàng)建的這個(gè)樹(shù)上的每個(gè)節(jié)點(diǎn)都代表一個(gè)位置,在這個(gè)位置必須基于輸入做出決策,并且會(huì)從一個(gè)節(jié)點(diǎn)移到下一個(gè)節(jié)點(diǎn)直至到達(dá)能夠得出預(yù)測(cè)的輸出的葉子節(jié)點(diǎn)。這雖然聽(tīng)起來(lái)有些讓人迷惑,但其實(shí)它非常直觀。讓我們看一個(gè)例子。

清單 1. 簡(jiǎn)單的分類樹(shù)
[ Will You Read This Section? ]/ \Yes No/ \ [Will You Understand It?] [Won't Learn It]/ \Yes No/ \[Will Learn It] [Won't Learn It]

這個(gè)簡(jiǎn)單的分類樹(shù)試圖回答這個(gè)問(wèn)題:“您理解分類樹(shù)么?”在每個(gè)節(jié)點(diǎn),您都會(huì)回答這個(gè)問(wèn)題并繼續(xù)沿著分支下移,直到您到達(dá)一個(gè)回答了是或不是的葉子節(jié)點(diǎn)。 這個(gè)模型可用于任何未知的數(shù)據(jù)實(shí)例,來(lái)預(yù)測(cè)這個(gè)未知數(shù)據(jù)實(shí)例是否通過(guò)只詢問(wèn)兩個(gè)簡(jiǎn)單問(wèn)題就能理解分類樹(shù)。這看上去像是分類樹(shù)的一大優(yōu)勢(shì) — 它無(wú)需有關(guān)數(shù)據(jù)的大量信息就能創(chuàng)建一個(gè)十分準(zhǔn)確且信息豐富的樹(shù)。

分類樹(shù)的一個(gè)重要概念非常類似于我們?cè)?用 WEKA 進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸?回歸模型中看到的概念:使用一個(gè)“訓(xùn)練集”來(lái)生成模型。就是拿一組輸出值已知的數(shù)據(jù)集并使用此數(shù)據(jù)集來(lái)創(chuàng)建我們的模型。之后,只要我們有一個(gè)輸出值未知的新的數(shù)據(jù)點(diǎn),我們都可以將其放入這個(gè)模型并生成預(yù)期的輸出。這與我們?cè)诨貧w模型中看到的沒(méi)有差別。只不過(guò),這個(gè)模型更進(jìn)了一步,通常會(huì)把整個(gè)訓(xùn)練集分成兩個(gè)部分:拿數(shù)據(jù)的約 60-80 % 放入我們的訓(xùn)練集,用來(lái)生成模型;然后拿剩下的數(shù)據(jù)放入一個(gè)測(cè)試集,在模型生成后,立即用其來(lái)測(cè)試我們模型的準(zhǔn)確性。

那么這個(gè)額外的步驟為什么在此模型中如此重要呢?這個(gè)問(wèn)題就是所謂的過(guò)擬合:如果我們提供過(guò)多?數(shù)據(jù)用于模型創(chuàng)建,我們的模型雖然會(huì)被完美創(chuàng)建,但只針對(duì)的是該數(shù)據(jù)。請(qǐng)記住:我們想使用此模型來(lái)預(yù)測(cè)未來(lái)的未知數(shù);我們不是想使用此模型來(lái)準(zhǔn)確地預(yù)測(cè)我們已經(jīng)知道的值。這就是為什么我們要?jiǎng)?chuàng)建一個(gè)測(cè)試集。在創(chuàng)建了模型后,我們要進(jìn)行檢查以確保我們所創(chuàng)建模型的準(zhǔn)確性不會(huì)在測(cè)試集降低。這就保證了我們的模型會(huì)準(zhǔn)確地預(yù)測(cè)出未來(lái)的未知值。使用 WEKA 會(huì)看到它的實(shí)際效果。

這還引出了分類樹(shù)的另一個(gè)重要概念:修剪。修剪?正如其名字所指,意思是刪減分類樹(shù)的枝條。那么為什么有人會(huì)想要將信息從分類樹(shù)中刪除呢?還是因?yàn)檫^(guò)擬合的緣故。隨著數(shù)據(jù)集的增大以及屬性數(shù)量的增長(zhǎng),我們所創(chuàng)建的樹(shù)就會(huì)越來(lái)越復(fù)雜。理論上講,一個(gè)樹(shù)可以具有?leaves = (rows * attributes)。但那又有何益處呢?就預(yù)測(cè)未來(lái)的未知數(shù)而言,它根本幫不到我們,因它只適于我們現(xiàn)有的訓(xùn)練數(shù)據(jù)。因此我們需要的是一種平衡。我們想要我們的樹(shù)盡量簡(jiǎn)單,節(jié)點(diǎn)和枝葉盡量少。同時(shí)我們還想要它盡量地準(zhǔn)確。這就需要進(jìn)行權(quán)衡,我們不久就會(huì)看到。

在使用 WEKA 前,有關(guān)分類我還想指出最后一點(diǎn),那就是假正和假負(fù)。假正指的是這樣的一個(gè)數(shù)據(jù)實(shí)例:我們創(chuàng)建的這個(gè)模型預(yù)測(cè)它應(yīng)該是正的,但事實(shí)相反,實(shí)際值卻是負(fù)的。同樣地,假負(fù)指的是這樣一個(gè)數(shù)據(jù)實(shí)例:我們創(chuàng)建的這個(gè)模型預(yù)測(cè)它應(yīng)該是負(fù)的,但事實(shí)相反,實(shí)際值卻是正的。

這些錯(cuò)誤表明在我們的模型中出了問(wèn)題,我們的模型正在錯(cuò)誤地分類某些數(shù)據(jù)。雖然可能會(huì)出現(xiàn)不正確的分類,但可接受的錯(cuò)誤百分比由模型創(chuàng)建者決定。比如,如果是在醫(yī)院里測(cè)試心臟監(jiān)視器,很顯然,將需要極低的錯(cuò)誤百分比。而如果您只是在有關(guān)數(shù)據(jù)挖掘的文章中挖掘一些虛構(gòu)的數(shù)據(jù),那么錯(cuò)誤率可以更高一些。為了使之更進(jìn)一步,還需要決定可以接受的假負(fù)與假正的百分比率是多少。我立即想到的一個(gè)例子就是垃圾郵件模型:一個(gè)假正(一個(gè)真郵件被標(biāo)記為了垃圾郵件)要比假負(fù)(一個(gè)垃圾消息未被標(biāo)記為垃圾郵件)更具破壞性。在像這樣的例子中,就可以判斷假負(fù):假正的比率最低為 100:1 才是可以接受的。

好了,對(duì)于分類樹(shù)的背景和技術(shù)方面的介紹已經(jīng)夠多了。讓我們現(xiàn)在開(kāi)始獲得一些真正的數(shù)據(jù)并將其帶入 WEKA。

WEKA 數(shù)據(jù)集

我們用于分類示例的數(shù)據(jù)集所圍繞的仍然是我們虛構(gòu)的 BMW 經(jīng)銷店。這個(gè)經(jīng)銷店正在啟動(dòng)一個(gè)推銷計(jì)劃,試圖向其老客戶推銷兩年延保。這個(gè)經(jīng)銷店過(guò)去曾做過(guò)類似的計(jì)劃并從過(guò)去的銷售中收集了 4,500 個(gè)數(shù)據(jù)點(diǎn)。數(shù)據(jù)集中的屬性有:

  • 收入水平 [0=$0-$30k, 1=$31k-$40k, 2=$41k-$60k, 3=$61k-$75k, 4=$76k-$100k, 5=$101k-$150k, 6=$151k-$500k, 7=$501k+]
  • 第一輛 BMW 購(gòu)買的年/月
  • 最近的 BMW 購(gòu)買的年/月
  • 是否過(guò)去曾響應(yīng)過(guò)延保計(jì)劃

讓我們來(lái)看看在這個(gè)例子中使用的 Attribute-Relation File Format (ARFF)。

清單 2. 分類 WEKA 數(shù)據(jù)
@attribute IncomeBracket {0,1,2,3,4,5,6,7} @attribute FirstPurchase numeric @attribute LastPurchase numeric @attribute responded {1,0}@data4,200210,200601,0 5,200301,200601,1 ...

在 WEKA 內(nèi)進(jìn)行分類

使用我們之前使用過(guò)的相同步驟來(lái)將數(shù)據(jù)文件 bmw-training.arff (參見(jiàn)?下載) 載入 WEKA。請(qǐng)注意:這個(gè)文件只包含經(jīng)銷店記錄內(nèi)的這 4,500 個(gè)記錄中的 3,000 個(gè)。我們需要分割我們的記錄以便某些數(shù)據(jù)實(shí)例被用來(lái)創(chuàng)建模型,某些被用來(lái)測(cè)試模型以確保沒(méi)有過(guò)擬合。在加載了數(shù)據(jù)后,屏幕應(yīng)該類似于圖 1。

圖 1. WEKA 內(nèi)的 BMW 分類數(shù)據(jù)

與我們?cè)?用 WEKA 進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸?中對(duì)回歸模型所做的類似,我們選擇?Classify?選項(xiàng)卡,然后選擇?trees?節(jié)點(diǎn),然后是?J48?葉子(我不知道為何這就是正式的名稱,不過(guò)還是接受吧)。

圖 2. BMW 分類算法

至此,我們已經(jīng)準(zhǔn)備好可以在 WEKA 內(nèi)創(chuàng)建我們的模型了。請(qǐng)確保?Use training set?被選中以便我們使用剛剛加載的這個(gè)數(shù)據(jù)集來(lái)創(chuàng)建模型。單擊?Start?并讓 WEKA 運(yùn)行。模型的輸出應(yīng)類似于清單 3 內(nèi)的結(jié)果。

清單 3. WEKA 的分類模型的輸出
Number of Leaves : 28Size of the tree : 43Time taken to build model: 0.18 seconds=== Evaluation on training set === === Summary ===Correctly Classified Instances 1774 59.1333 % Incorrectly Classified Instances 1226 40.8667 % Kappa statistic 0.1807 Mean absolute error 0.4773 Root mean squared error 0.4885 Relative absolute error 95.4768 % Root relative squared error 97.7122 % Total Number of Instances 3000 === Detailed Accuracy By Class ===TP Rate FP Rate Precision Recall F-Measure ROC Area Class0.662 0.481 0.587 0.662 0.622 0.616 10.519 0.338 0.597 0.519 0.555 0.616 0 Weighted Avg. 0.591 0.411 0.592 0.591 0.589 0.616=== Confusion Matrix ===a b <-- classified as1009 516 | a = 1710 765 | b = 0

上述這些數(shù)字是什么意思?我們?cè)趺床拍苤肋@是一個(gè)好的模型?我們應(yīng)該尋找的這個(gè)所謂的“樹(shù)”在哪里?這些問(wèn)題問(wèn)得很好。讓我們逐一回答:

  • 這些數(shù)字是什么意思??這里應(yīng)該關(guān)注的重要數(shù)字是“Correctly Classified Instances”(59.1 %)與“Incorrectly Classified Instances”(40.9 %)旁邊的這些數(shù)字。其他的重要數(shù)字還有“ROC Area”列第一行的這個(gè)數(shù)字(0.616);我稍候會(huì)詳細(xì)解釋這個(gè)數(shù)字,目前只需記住即可。最后,在“Confusion Matrix”中,顯示了假正和假負(fù)的數(shù)量。在這個(gè)矩陣中,假正為 516,假負(fù)為 710。
  • 我們?cè)趺床拍苤肋@是一個(gè)好的模型??由于準(zhǔn)確率僅為 59.1 %,我不得不承認(rèn)經(jīng)初步分析后,這不是一個(gè)非常好的模型。
  • 這個(gè)所謂的“樹(shù)”在哪里??要看到這個(gè)樹(shù),可右鍵單擊剛剛創(chuàng)建的這個(gè)模型。在彈出菜單中,選擇?Visualize tree。之后,就會(huì)看到我們所創(chuàng)建的這個(gè)分類樹(shù),雖然在本例中,可視樹(shù)不能提供任何幫助。我們的樹(shù)如圖 3 所示。看到這個(gè)樹(shù)的另一種方式是在 Classifier Output 內(nèi)往高處看,其中的文本輸出顯示了具有節(jié)點(diǎn)和葉子的整個(gè)樹(shù)。
圖 3. 分類樹(shù)可視化

還有最后一個(gè)步驟,就是驗(yàn)證我們的分類樹(shù),這需要貫穿模型運(yùn)行我們的測(cè)試集并確保我們模型的準(zhǔn)確性在測(cè)試集時(shí)與在訓(xùn)練集時(shí)相差不遠(yuǎn)。為此,在?Test options?內(nèi),選擇?Supplied test set?單選按鈕并單擊?Set。選擇文件 bmw-test.arff,內(nèi)含 1,500 條記錄,而這些記錄在我們用來(lái)創(chuàng)建模型的訓(xùn)練集中是沒(méi)有的。當(dāng)我們這次單擊?Start?時(shí),WEKA 將會(huì)貫穿我們已經(jīng)創(chuàng)建的這個(gè)模型運(yùn)行測(cè)試數(shù)據(jù)集并會(huì)讓我們知道模型的情況。讓我們現(xiàn)在單擊?Start。如下是輸出。

圖 4. 分類樹(shù)測(cè)試

對(duì)比這個(gè)測(cè)試集的“Correctly Classified Instances”(55.7 %)與訓(xùn)練集的“Correctly Classified Instances”(59.1 %),我們看到此模型的準(zhǔn)確性非常接近,這表明此模型不會(huì)在應(yīng)用未知數(shù)據(jù)或未來(lái)數(shù)據(jù)時(shí),發(fā)生故障。

不過(guò),由于模型的準(zhǔn)確性很差,只能正確地分類 60 % 的數(shù)據(jù)記錄,因此我們可以后退一步說(shuō):“哦,這個(gè)模型一點(diǎn)都不好。其準(zhǔn)確性勉強(qiáng)超過(guò) 50 %,我隨便猜猜,也能得到這樣的準(zhǔn)確性。”這完全正確。這也是我想審慎地告訴大家的一點(diǎn):有時(shí)候,將數(shù)據(jù)挖掘算法應(yīng)用到數(shù)據(jù)集有可能會(huì)生成一個(gè)糟糕的模型。這一點(diǎn)在這里尤其準(zhǔn)確,并且它是故意的。

我本想帶您親歷用適合于分類模型的數(shù)據(jù)生成一個(gè)分類樹(shù)的全過(guò)程。然而,我們從 WEKA 獲得的結(jié)果表明我們錯(cuò)了。我們?cè)谶@里本應(yīng)選擇的并?分類樹(shù)。我們所創(chuàng)建的這個(gè)模型不能告訴我們?nèi)魏涡畔?#xff0c;并且如果我們使用它,我們可能會(huì)做出錯(cuò)誤的決策并浪費(fèi)錢財(cái)。

那么這是不是意味著該數(shù)據(jù)無(wú)法被挖掘呢?當(dāng)然不是,只不過(guò)需要使用另一種數(shù)據(jù)挖掘方法:最近鄰模型,該模型會(huì)在本系列的后續(xù)文章中討論,它使用相同的數(shù)據(jù)集,卻能創(chuàng)建一個(gè)準(zhǔn)確性超過(guò) 88 % 的模型。它旨在強(qiáng)調(diào)一點(diǎn):那就是必須為數(shù)據(jù)選擇合適的模型才能得到有意義的信息。

進(jìn)一步閱讀:如果您想更多地了解分類樹(shù),有一些關(guān)鍵字可以查找,因篇幅的原因我在這里就不逐一介紹了:ROC curves、AUC、false positives、false negatives、learning curves、Naive Bayes、information gain、overfitting、 pruning、chi-square test。

群集

群集?讓用戶可以通過(guò)數(shù)據(jù)組來(lái)從數(shù)據(jù)確定模式。當(dāng)數(shù)據(jù)集已定義并且需要從此數(shù)據(jù)確定一個(gè)通用的模式時(shí),群集的優(yōu)勢(shì)就會(huì)比較明顯。您可以根據(jù)自身業(yè)務(wù)需要?jiǎng)?chuàng)建一定數(shù)量的組。與分類相比,群集的一個(gè)好處是數(shù)據(jù)集內(nèi)的每個(gè)屬性都被用來(lái)分析該數(shù)據(jù)。(在分類方法中,只有屬性的一個(gè)子集用在了模型中。)使用群集的一個(gè)主要劣勢(shì)是用戶需要提前知道他想要?jiǎng)?chuàng)建的組的數(shù)量。若用戶對(duì)其數(shù)據(jù)知之甚少,這可能會(huì)很困難。是應(yīng)該創(chuàng)建三個(gè)組?五個(gè)組?還是十個(gè)組?所以在決定要?jiǎng)?chuàng)建的理想組數(shù)之前,可能需要進(jìn)行幾個(gè)步驟的嘗試和出錯(cuò)。

不過(guò),對(duì)于一般的用戶,群集有可能是最為有用的一種數(shù)據(jù)挖掘方法。它可以迅速地將整個(gè)數(shù)據(jù)集分成組,供您快速得出結(jié)論。此方法背后的算法多少有些復(fù)雜和難懂,這也是我們?yōu)楹我浞掷?WEKA 的原因。

算法概覽

如下是對(duì)群集中所用算法的一個(gè)簡(jiǎn)要的快速概覽:

  • 數(shù)據(jù)集內(nèi)的每個(gè)屬性都應(yīng)該是規(guī)格化的,因此,每個(gè)值均除以該屬性在數(shù)據(jù)集內(nèi)的最高值與最低值間的差值。例如,如果屬性是年齡,且最高值為 72,最低值為 16,那么年齡 32 將被規(guī)格化為 0.5714。
  • 理想的群集數(shù)量給定后,就可以隨機(jī)地從數(shù)據(jù)集選擇該數(shù)量的樣例來(lái)充當(dāng)我們初始測(cè)試群集中心。比如,如果想要有三個(gè)群集,那么就可以從數(shù)據(jù)集中隨意選擇三行數(shù)據(jù)。
  • 計(jì)算從每個(gè)數(shù)據(jù)樣例到群集中心(我們隨意選中的數(shù)據(jù)行)的距離,使用距離計(jì)算的最小平方法。
  • 基于到每個(gè)群集中心的最短距離將每個(gè)數(shù)據(jù)行分配給一個(gè)群集。
  • 計(jì)算重心,即只使用每個(gè)群集的數(shù)的每列數(shù)據(jù)的平均數(shù)。
  • 計(jì)算每個(gè)數(shù)據(jù)樣例與剛剛創(chuàng)建的這些重心之間的距離。如果群集及群集數(shù)不變,那么就說(shuō)明大功告成,群集創(chuàng)建完畢。如果它們變化,那么就需要返回到步驟 3 重新開(kāi)始并一遍遍重復(fù),直到不再變化為止。
  • 很顯然,這看上去不怎么有趣。對(duì)于一個(gè)具有 10 行和三個(gè)群集的數(shù)據(jù)集,若使用電子數(shù)據(jù)表,需要花上 30 分鐘才能完成。那么想象一下,如果有 100,000 數(shù)據(jù)行和 10 個(gè)群集,若用手工完成那將花費(fèi)多長(zhǎng)時(shí)間。所幸的是,計(jì)算機(jī)在幾秒內(nèi)就可以完成這類計(jì)算。

    WEKA 的數(shù)據(jù)集

    我們?yōu)槿杭纠褂玫倪@個(gè)數(shù)據(jù)集同樣也圍繞著我們虛構(gòu)的 BMW 經(jīng)銷店。這個(gè)經(jīng)銷店保留了人們?nèi)绾卧诮?jīng)銷店以及展廳行走、他們看了哪些車以及他們最終購(gòu)車的機(jī)率的記錄。經(jīng)銷店期望通過(guò)尋找數(shù)據(jù)內(nèi)的模式挖掘這些數(shù)據(jù)并使用群集來(lái)判斷其客戶是否有某種行為特點(diǎn)。在這個(gè)例子中有 100 行數(shù)據(jù),并且每個(gè)列都描述了顧客在他們各自的 BMW 體驗(yàn)中所到達(dá)的步驟,比如列中的 1 表示到達(dá)這一步的顧客看過(guò)這輛車,0 表示他們不曾到達(dá)看過(guò)車的這一步。清單 4 顯示了我們?cè)?WEKA 中所使用的 ARFF 數(shù)據(jù)。

    清單 4. 群集 WEKA 數(shù)據(jù)
    @attribute Dealership numeric @attribute Showroom numeric @attribute ComputerSearch numeric @attribute M5 numeric @attribute 3Series numeric @attribute Z4 numeric @attribute Financing numeric @attribute Purchase numeric@data1,0,0,0,0,0,0,0 1,1,1,0,0,0,1,0 ...

    在 WEKA 內(nèi)進(jìn)行群集

    采用與將數(shù)據(jù)加載到?Preprocess?選項(xiàng)卡時(shí)的相同步驟來(lái)將數(shù)據(jù)文件 bmw-browsers.arff 加載到 WEKA 內(nèi)。花上幾分鐘時(shí)間來(lái)查看一下這個(gè)選項(xiàng)卡內(nèi)的數(shù)據(jù)。看看這些列、屬性數(shù)據(jù)以及列的分布等。在加載數(shù)據(jù)后,屏幕應(yīng)該類似于圖 5。

    圖 5. WEKA 內(nèi)的 BMW 群集數(shù)據(jù)

    有了這個(gè)數(shù)據(jù)集,我們就可以開(kāi)始創(chuàng)建群集了,所以這次不是單擊?Classify?選項(xiàng)卡,而是要單擊?Cluster?選項(xiàng)卡。單擊?Choose?并從所出現(xiàn)的各種選項(xiàng)中選擇?SimpleKMeans(這是本文中我們所期望的進(jìn)行群集的方法)。這時(shí)的 WEKA Explorer 窗口應(yīng)該如圖 6 所示。

    圖 6. BMW 群集算法

    最后,我們想要通過(guò)單擊?SimpleKMeans?調(diào)整我們?nèi)杭惴ǖ膶傩?#xff08;雖然不是最佳的 UI 設(shè)計(jì),但還是先接受吧)。這里我們想要調(diào)整的這個(gè)算法的惟一屬性是?numClusters?字段,它表明我們想要?jiǎng)?chuàng)建多少群集。(在開(kāi)始之前,需要知道這一點(diǎn)。)讓我們將默認(rèn)值從 2 更改為 5,若將來(lái)想要調(diào)整所創(chuàng)建群集的數(shù)量,就可以采用這些步驟。此時(shí)的 WEKA Explorer 應(yīng)該類似于圖 7。單擊?OK?以接受這些值。

    圖 7. 群集屬性

    至此,我們已經(jīng)可以運(yùn)行這個(gè)群集算法了。如果使用電子數(shù)據(jù)表處理 100 行數(shù)據(jù)和五個(gè)數(shù)據(jù)群集將會(huì)花費(fèi)幾個(gè)小時(shí)的計(jì)算時(shí)間,但 WEKA 在不到一秒鐘的時(shí)間內(nèi)就能給出答案。輸出應(yīng)該類似于清單 5。

    清單 5. 群集輸出
    Cluster# Attribute Full Data 0 1 2 3 4(100) (26) (27) (5) (14) (28) ================================================================================== Dealership 0.6 0.9615 0.6667 1 0.8571 0 Showroom 0.72 0.6923 0.6667 0 0.5714 1 ComputerSearch 0.43 0.6538 0 1 0.8571 0.3214 M5 0.53 0.4615 0.963 1 0.7143 0 3Series 0.55 0.3846 0.4444 0.8 0.0714 1 Z4 0.45 0.5385 0 0.8 0.5714 0.6786 Financing 0.61 0.4615 0.6296 0.8 1 0.5 Purchase 0.39 0 0.5185 0.4 1 0.3214Clustered Instances0 26 ( 26%) 1 27 ( 27%) 2 5 ( 5%) 3 14 ( 14%) 4 28 ( 28%)

    那么這些結(jié)果該如何解析呢?這個(gè)輸出告訴我們每個(gè)群集是如何聯(lián)系在一起的,其中 “1” 表示該群集中的每個(gè)人都有相同的值 1,而 “0” 則表示該群集中的每個(gè)人的該屬性都有一個(gè)值 0。其他的數(shù)值是群集內(nèi)的每個(gè)人的平均值。每個(gè)群集向我們展示了顧客內(nèi)的一種行為類型,從中我們可以開(kāi)始得出如下結(jié)論:

    • 群集 0— 這個(gè)組我們可以稱之為 “Dreamers”,因他們圍著經(jīng)銷店徘徊,查看在停車場(chǎng)上停著的車,卻不步入店面內(nèi),且更糟的是,他們沒(méi)有購(gòu)買過(guò)任何東西。
    • 群集 1— 我們將這一組稱為是 “M5 Lovers”,因?yàn)樗麄兂3?huì)徑直走到 M5 車型區(qū),對(duì) 3-系列的車型和 Z4 均視而不見(jiàn)。不過(guò),他們也沒(méi)有多高的購(gòu)買率 — 只有 52 %。這表明存在潛在問(wèn)題,也是經(jīng)銷店今后改進(jìn)的重點(diǎn),比如可以派更多的銷售人員到 M5 區(qū)。
    • 群集 2— 這個(gè)組很小,我們可以稱之為 “Throw-Aways”,因?yàn)樗麄儧](méi)有統(tǒng)計(jì)意義上的相關(guān)性,我們也不能從其行為得出任何好的結(jié)論。(這種情況若在群集上發(fā)生,可能表明應(yīng)該減少所創(chuàng)建的群集的數(shù)量。)
    • 群集 3— 這個(gè)組,我們稱之為 “BMW Babies”,因?yàn)樗麄兛偸菚?huì)購(gòu)買一輛車而且還會(huì)支付車款。正是在這里,數(shù)據(jù)向我們顯示了一些有趣的事情:他們一般會(huì)在停車場(chǎng)內(nèi)查看各種車型,然后返回到經(jīng)銷店內(nèi)的計(jì)算機(jī)處搜索中意的車型是否有貨。他們最終會(huì)購(gòu)買 M5 或 Z4 車型(但從不購(gòu)買 3-系列的)。這個(gè)群集告訴經(jīng)銷店它應(yīng)該考慮讓它的搜索計(jì)算機(jī)在停車場(chǎng)處就能很容易地被看到(或安置一臺(tái)室外的搜索計(jì)算機(jī)),并且讓 M5 或 Z4 在搜索結(jié)果中更為醒目。一旦顧客決定購(gòu)買汽車,他總是符合購(gòu)車款的支付條件并能夠圓滿完成這次購(gòu)買。
    • 群集 4— 這個(gè)組我們將稱之為 “Starting Out With BMW”,因?yàn)樗麄兛偸强?3-系列的車型,從不看貴很多的 M5。他們會(huì)徑直步入展廳,而不會(huì)在停車場(chǎng)處東看西看,而且也不會(huì)使用計(jì)算機(jī)搜索終端。他們中有 50 % 會(huì)到達(dá)支付車款的階段,但只有 32 % 會(huì)最終成交。經(jīng)銷店可以得出這樣的結(jié)論:這些初次購(gòu)買 BMW 車的顧客知道自己想要的車型是哪種( 3-系列的入門級(jí)車型)而且希望能夠符合購(gòu)車款的支付條件以便買得起。經(jīng)銷店可以通過(guò)放松購(gòu)車款的支付條件或是降低 3- 系列車型的價(jià)格來(lái)提高這一組的銷售。

    研究這些群集中數(shù)據(jù)的一種有趣方式是可視地查看它。為此,應(yīng)該在?Cluster?選項(xiàng)卡上的這個(gè)?Result List?區(qū)域右鍵單擊(同樣地,亦不是最佳設(shè)計(jì)的 UI)。彈出菜單的一個(gè)選項(xiàng)是?Visualize Cluster Assignments。彈出的窗口則會(huì)讓您處理這些結(jié)果并可視地查看它們。對(duì)于本例,將 X 軸更改為?M5 (Num),將 Y 軸更改為?Purchase (Num),將顏色更改為?Cluster (Nom)。結(jié)果,有一個(gè)圖表會(huì)向我們顯示這些群集是如何按照誰(shuí)看過(guò) M5 以及誰(shuí)購(gòu)買了一輛 M5 分組的。而且,將“Jitter”放大到最高的 3/4 處,這會(huì)手動(dòng)地將這些標(biāo)繪點(diǎn)分散開(kāi)以便我們能更容易地看到它們。

    那么這些可視結(jié)果是否與我們從清單 5 中的結(jié)果集中得出的結(jié)論相符呢?我們可以從 X=1, Y=1 這一點(diǎn)(即看過(guò) M5 且進(jìn)行過(guò)購(gòu)買的那些人)看出這里所表示的群集只有是 1 和 3。我們還看到處于點(diǎn) X=0, Y=0 的群集只有 4 和 0。那么這與我們上述結(jié)論是否相符呢?答案是肯定的。群集 1 和 3 是過(guò)去購(gòu)買過(guò) M5 的,而群集 0 則沒(méi)有購(gòu)買過(guò)任何車型,群集 4 只關(guān)注 3-系列。圖 8 顯示了本例的可視群集布局。您可以隨意嘗試更改 X 和 Y 軸來(lái)辨別出其他的趨勢(shì)和模式。

    圖 8. 群集可視查看

    進(jìn)一步閱讀:如果您有興趣進(jìn)一步鉆研,可以按如下術(shù)語(yǔ)搜索相關(guān)信息: Euclidean distance、Lloyd's algorithm、Manhattan Distance、Chebyshev Distance、sum of squared errors、cluster centroids。

    結(jié)束語(yǔ)

    本文討論了兩種數(shù)據(jù)挖掘算法:分類樹(shù)和群集。這兩種算法與?用 WEKA 進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸?中介紹的回歸模型的算法不同之處在于沒(méi)有從模型只能得到數(shù)值輸出的限制。這兩個(gè)模型允許輸出更為靈活,是數(shù)據(jù)挖掘領(lǐng)域的兩個(gè)功能更為強(qiáng)大的武器。

    從字面上理解,分類樹(shù)就是要?jiǎng)?chuàng)建一個(gè)具有分支、節(jié)點(diǎn)和枝葉的樹(shù),能夠讓我們拿一個(gè)未知的數(shù)據(jù)點(diǎn),將此數(shù)據(jù)點(diǎn)的屬性應(yīng)用到這個(gè)樹(shù)并順著這個(gè)樹(shù)下移,直到到達(dá)一個(gè)葉子并且數(shù)據(jù)點(diǎn)的未知輸出可以斷定。我們了解了為了創(chuàng)建一個(gè)好的分類樹(shù)模型,我們必須要有一個(gè)輸出已知的現(xiàn)有數(shù)據(jù)集,從這個(gè)數(shù)據(jù)集才能構(gòu)建我們的模型。我們還看到了我們需要將我們的數(shù)據(jù)集分成兩個(gè)部分:一個(gè)用來(lái)創(chuàng)建模型的訓(xùn)練集 ;一個(gè)用來(lái)驗(yàn)證模型是否正確且沒(méi)有過(guò)擬合的測(cè)試集。作為本部分的最后一個(gè)要點(diǎn),我還指出在某些時(shí)候,即便是創(chuàng)建了一個(gè)您認(rèn)為正確的數(shù)據(jù)模型,它也可能不正確,而您必須要摒棄整個(gè)模型和算法以尋找更好的解決方案。

    群集算法是對(duì)一個(gè)數(shù)據(jù)集中的數(shù)據(jù)進(jìn)行分組,以便您可以基于在這些組中看到的趨勢(shì)得出結(jié)論。群集與分類及回歸的不同之處在于它不生成單個(gè)的輸出變量(結(jié)論容易得出),因而要求您必需觀察輸出并嘗試得出自己的結(jié)論。正如在本例中看到的,這個(gè)模型生成了五個(gè)群集,但對(duì)群集內(nèi)的這些數(shù)據(jù)的分析以及從這些信息中得出結(jié)論則取決于我們。就此而言,非常難以生成準(zhǔn)確的群集模型(想象一下如果我們創(chuàng)建了過(guò)多或過(guò)少的群集,結(jié)果將會(huì)如何),而另一方面,我們將能夠從這個(gè)結(jié)果集中挖掘出一些有趣的信息 — 這些信息是使用我們之前討論過(guò)的其他任何模型都無(wú)法得到的。

    第 3 部分是 “用 WEKA 進(jìn)行數(shù)據(jù)挖掘” 系列的結(jié)束篇,會(huì)以最近鄰模型結(jié)束我們對(duì)模型的討論。我們還將會(huì)將 WEKA 用作第三方 Java? 庫(kù),而不是作為一個(gè)獨(dú)立的應(yīng)用程序,這樣一來(lái),我們就可以將其直接嵌入到我們的服務(wù)器端代碼。我們也就能夠在我們的服務(wù)器上直接挖掘數(shù)據(jù),而無(wú)須將它處理成一個(gè) ARFF 文件后才能手動(dòng)運(yùn)行它。

    下載

    描述 名字 大小 示例代碼
    os-weka2-Examples.zip 17KB

    參考資料

    學(xué)習(xí)

    • WEKA 要求所有關(guān)于它的出版物都必須提及這篇題為 “The WEKA Data Mining Software: An Update” (作者 Mark Hall、Eibe Frank、Geoffrey Holmes、Bernhard Pfahringer Peter Reutemann 和 Ian H. Witten)的論文。
    • 利用?YouTube 上的這個(gè)視頻?了解如何將一個(gè)電子數(shù)據(jù)表用于一個(gè)簡(jiǎn)單的回歸模型。
    • 查閱?WEKA Web 站點(diǎn)?獲得此軟件的所有文檔和一個(gè) FAQ。
    • 在?Wikipedia 上查閱回歸分析,這里可能有比您想象中還要多的技術(shù)細(xì)節(jié)。
    • 閱讀有關(guān)?ARFF?的詳細(xì)信息,以便您可以將數(shù)據(jù)加載入 WEKA。
    • IBM 也有自己的數(shù)據(jù)挖掘軟件, “?Integrate InfoSphere Warehouse data mining with IBM Cognos reporting, Part 1” 提供了一個(gè)很好的起點(diǎn)。
    • 要收聽(tīng)面向軟件開(kāi)發(fā)人員的有趣訪談和討論,請(qǐng)?jiān)L問(wèn)?developerWorks 播客。
    • 隨時(shí)關(guān)注 developerWorks?技術(shù)活動(dòng)和網(wǎng)絡(luò)廣播。
    • 查閱最近將在全球舉辦的面向 IBM 開(kāi)放源碼開(kāi)發(fā)人員的研討會(huì)、交易展覽、網(wǎng)絡(luò)廣播和其他活動(dòng)。
    • 訪問(wèn) developerWorks?Open source 專區(qū)獲得豐富的 how-to 信息、工具和項(xiàng)目更新以及最受歡迎的文章和教程,幫助您用開(kāi)放源碼技術(shù)進(jìn)行開(kāi)發(fā),并將它們與 IBM 產(chǎn)品結(jié)合使用。
    • developerWorks 社區(qū)?是流行社區(qū)的一個(gè)成功典范,包含廣泛的主題。
    • 查看免費(fèi)的?developerWorks 演示中心,觀看并了解 IBM 及開(kāi)源技術(shù)和產(chǎn)品功能。

    獲得產(chǎn)品和技術(shù)

    • 下載 WEKA?并在您的系統(tǒng)上運(yùn)行它。
    • 您可以查看有關(guān) IBM?DB2 Intelligent Miner?軟件的詳細(xì)信息以便與 WEKA 進(jìn)行對(duì)比。
    • 使用?IBM 產(chǎn)品評(píng)估試用版軟件改進(jìn)您的下一個(gè)開(kāi)源開(kāi)發(fā)項(xiàng)目,這些軟件可以通過(guò)下載獲得。
    • 下載?IBM 產(chǎn)品評(píng)估試用版軟件?或?IBM SOA Sandbox for People?并使用來(lái)自 DB2?、Lotus?、Rational?、Tivoli? 和 WebSphere? 的應(yīng)用程序開(kāi)發(fā)工具和中間件產(chǎn)品。

    討論

    • 此外,請(qǐng)查閱 My developerWorks 上的這個(gè)新的?Data Mining?組。
    • 參與?developerWorks 博客?并加入 developerWorks 社區(qū)。

    條評(píng)論

    請(qǐng)?登錄?或?注冊(cè)?后發(fā)表評(píng)論。

    添加評(píng)論:

    注意:評(píng)論中不支持 HTML 語(yǔ)法

    非常好的weka入門介紹

    由?ac嚕嚕嚕?于 2015年09月10日發(fā)布

    "學(xué)習(xí)weka


    總結(jié)

    以上是生活随笔為你收集整理的用 WEKA 进行数据挖掘,第 2 部分: 分类和群集的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。