用 WEKA 进行数据挖掘,第 2 部分: 分类和群集
from:http://www.ibm.com/developerworks/cn/opensource/os-weka2/index.html
簡介
在?用 WEKA 進行數(shù)據(jù)挖掘,第 1 部分:簡介和回歸,我介紹了數(shù)據(jù)挖掘的概念以及免費的開源軟件 Waikato Environment for Knowledge Analysis(WEKA),利用它可以挖掘數(shù)據(jù)來獲得趨勢和模式。我還談到了第一種數(shù)據(jù)挖掘的方法 — 回歸 — 使用它可以根據(jù)一組給定的輸入值預(yù)測數(shù)字值。這種分析方法非常容易進行,而且也是功能最不強大的一種數(shù)據(jù)挖掘方法,但是通過它,讀者對 WEKA 有了很好的了解,并且它還提供了一個很好的例子,展示了原始數(shù)據(jù)是如何轉(zhuǎn)換為有意義的信息的。
在本文中,我將帶您親歷另外兩種數(shù)據(jù)挖掘的方法,這二者要比回歸模型稍微復(fù)雜一些,但功能則更為強大。如果回歸模型只能為特定輸入提供一個數(shù)值輸出,那么這兩種模型則允許您對數(shù)據(jù)做不同的解析。正如我在第 1 部分中所說的,數(shù)據(jù)挖掘的核心就是將正確的模型應(yīng)用于數(shù)據(jù)。即便有了有關(guān)客戶的最佳數(shù)據(jù)(無論這意味著什么),但是如果沒有將正確的模型應(yīng)用于數(shù)據(jù),那么這些數(shù)據(jù)也沒有任何意義。不妨從另一個角度考慮這件事情:如果您只使用能生成數(shù)值輸出的回歸模型,那么 Amazon 如何能告知您“購買了 X 產(chǎn)品的客戶還購買了 Y 產(chǎn)品”?這里沒有數(shù)值型的函數(shù)能夠告訴您這類信息。所以讓我們來深入研究可用在數(shù)據(jù)中的其他兩個模型。
在本文中,我會反復(fù)提及稱為“最近鄰”的數(shù)據(jù)挖掘方法,但我不會過多地對其進行剖析,詳細的介紹會在第 3 部分給出。不過,我在本文中的比較和描述部分將它包括進來以使討論更為完整。
回頁首
分類 vs. 群集 vs. 最近鄰
在我深入探討每種方法的細節(jié)并通過 WEKA 使用它們之前,我想我們應(yīng)該先理解每個模型 — 每個模型適合哪種類型的數(shù)據(jù)以及每個模型試圖實現(xiàn)的目標(biāo)。我們還會將我們已有的模型 — 回歸模型 — 也包括在我們的討論之中,以便您可以看到這三種新模型與我們已經(jīng)了解的這個模型的對比。我將通過實際的例子展示每個模型的使用以及各自的不同點。這些實際的例子均圍繞著一個本地的 BMW 經(jīng)銷店展開,研究它如何能增加銷售。這個經(jīng)銷店已經(jīng)保存了所有其過去的銷售信息及有關(guān)購買過 BMW、留意過 BMW 或是來過 BMW 展廳的每個客戶的信息。這個經(jīng)銷店想要增加未來的銷售并部署了數(shù)據(jù)挖掘來實現(xiàn)此目標(biāo)。
回歸
問題:“對于新的 BMW M5 車型我們該如何定價?” 回歸模型只能給出這個問題的一個數(shù)值答案。回歸模型會使用 BMW 和 M5 的過去銷售數(shù)據(jù)來基于所售汽車的屬性和賣點確定人們過去在這個經(jīng)銷店購買車的價格。然后,回歸模型允許 BMW 經(jīng)銷店插入新車的屬性來確定其價格。
比如:Selling Price = $25,000 + ($2900 * Liters in Engine) + ($9000 * isSedan) + ($11,000 * isConvertible) + ($100 * inches of car) + ($22,000 * isM)。
分類
問題:“那么客戶 X 有多大的可能會購買最新的 BMW M5 呢?” 創(chuàng)建一個分類樹(一個決策樹),并借此挖掘數(shù)據(jù)就可以確定這個人購買一輛新的 M5 的可能性有多大。這個樹上的節(jié)點可以是年齡、收入水平、目前擁有的車的數(shù)量、婚姻狀況、有無孩子、房主還是租戶。對這個決策樹使用此人的這些屬性就可以確定他購買 M5 的可能性。
群集
問題是:“哪個年齡組最喜歡銀色的 BMW M5?”這就需要挖掘數(shù)據(jù)來對比過去購車者的年齡和過去購買的車的顏色。從這些數(shù)據(jù),就能夠找到某個年齡組(比如 22-30 歲)具有訂購某種顏色的 BMW M5 的更高的傾向性(75% 購買藍色)。同樣地,它也可顯示另一個不同的年齡組(比如 55-62)則更傾向于訂購銀色的 BMW(65 % 購買銀色,20 % 購買灰色)。這些數(shù)據(jù),當(dāng)挖掘后,傾向于集中于某些特定年齡組和特定顏色周圍,方便用戶快速判斷該數(shù)據(jù)內(nèi)的模式。
最近鄰
問題:“當(dāng)人們購買 BMW M5 時,他們傾向于同時購買其他哪些選項?”數(shù)據(jù)挖掘顯示,人們?nèi)氲瓴①徺I一輛 BMW M5 時,他們還會傾向于購買與之配套的行李箱。(這也就是所謂的購物籃分析)。 使用此數(shù)據(jù),汽車經(jīng)銷店就會將配套行李箱的促銷廣告放在店面的顯眼處,甚至?xí)趫蠹埳献龃黉N廣告,如果他們購買 M5,配套行李箱將免費/打折,以期增加銷售。
回頁首
分類
分類?(也即分類樹或決策樹) 是一種數(shù)據(jù)挖掘算法,為如何確定一個新的數(shù)據(jù)實例的輸出創(chuàng)建逐步指導(dǎo)。它所創(chuàng)建的這個樹上的每個節(jié)點都代表一個位置,在這個位置必須基于輸入做出決策,并且會從一個節(jié)點移到下一個節(jié)點直至到達能夠得出預(yù)測的輸出的葉子節(jié)點。這雖然聽起來有些讓人迷惑,但其實它非常直觀。讓我們看一個例子。
清單 1. 簡單的分類樹
[ Will You Read This Section? ]/ \Yes No/ \ [Will You Understand It?] [Won't Learn It]/ \Yes No/ \[Will Learn It] [Won't Learn It]這個簡單的分類樹試圖回答這個問題:“您理解分類樹么?”在每個節(jié)點,您都會回答這個問題并繼續(xù)沿著分支下移,直到您到達一個回答了是或不是的葉子節(jié)點。 這個模型可用于任何未知的數(shù)據(jù)實例,來預(yù)測這個未知數(shù)據(jù)實例是否通過只詢問兩個簡單問題就能理解分類樹。這看上去像是分類樹的一大優(yōu)勢 — 它無需有關(guān)數(shù)據(jù)的大量信息就能創(chuàng)建一個十分準(zhǔn)確且信息豐富的樹。
分類樹的一個重要概念非常類似于我們在?用 WEKA 進行數(shù)據(jù)挖掘,第 1 部分:簡介和回歸?回歸模型中看到的概念:使用一個“訓(xùn)練集”來生成模型。就是拿一組輸出值已知的數(shù)據(jù)集并使用此數(shù)據(jù)集來創(chuàng)建我們的模型。之后,只要我們有一個輸出值未知的新的數(shù)據(jù)點,我們都可以將其放入這個模型并生成預(yù)期的輸出。這與我們在回歸模型中看到的沒有差別。只不過,這個模型更進了一步,通常會把整個訓(xùn)練集分成兩個部分:拿數(shù)據(jù)的約 60-80 % 放入我們的訓(xùn)練集,用來生成模型;然后拿剩下的數(shù)據(jù)放入一個測試集,在模型生成后,立即用其來測試我們模型的準(zhǔn)確性。
那么這個額外的步驟為什么在此模型中如此重要呢?這個問題就是所謂的過擬合:如果我們提供過多?數(shù)據(jù)用于模型創(chuàng)建,我們的模型雖然會被完美創(chuàng)建,但只針對的是該數(shù)據(jù)。請記住:我們想使用此模型來預(yù)測未來的未知數(shù);我們不是想使用此模型來準(zhǔn)確地預(yù)測我們已經(jīng)知道的值。這就是為什么我們要創(chuàng)建一個測試集。在創(chuàng)建了模型后,我們要進行檢查以確保我們所創(chuàng)建模型的準(zhǔn)確性不會在測試集降低。這就保證了我們的模型會準(zhǔn)確地預(yù)測出未來的未知值。使用 WEKA 會看到它的實際效果。
這還引出了分類樹的另一個重要概念:修剪。修剪?正如其名字所指,意思是刪減分類樹的枝條。那么為什么有人會想要將信息從分類樹中刪除呢?還是因為過擬合的緣故。隨著數(shù)據(jù)集的增大以及屬性數(shù)量的增長,我們所創(chuàng)建的樹就會越來越復(fù)雜。理論上講,一個樹可以具有?leaves = (rows * attributes)。但那又有何益處呢?就預(yù)測未來的未知數(shù)而言,它根本幫不到我們,因它只適于我們現(xiàn)有的訓(xùn)練數(shù)據(jù)。因此我們需要的是一種平衡。我們想要我們的樹盡量簡單,節(jié)點和枝葉盡量少。同時我們還想要它盡量地準(zhǔn)確。這就需要進行權(quán)衡,我們不久就會看到。
在使用 WEKA 前,有關(guān)分類我還想指出最后一點,那就是假正和假負。假正指的是這樣的一個數(shù)據(jù)實例:我們創(chuàng)建的這個模型預(yù)測它應(yīng)該是正的,但事實相反,實際值卻是負的。同樣地,假負指的是這樣一個數(shù)據(jù)實例:我們創(chuàng)建的這個模型預(yù)測它應(yīng)該是負的,但事實相反,實際值卻是正的。
這些錯誤表明在我們的模型中出了問題,我們的模型正在錯誤地分類某些數(shù)據(jù)。雖然可能會出現(xiàn)不正確的分類,但可接受的錯誤百分比由模型創(chuàng)建者決定。比如,如果是在醫(yī)院里測試心臟監(jiān)視器,很顯然,將需要極低的錯誤百分比。而如果您只是在有關(guān)數(shù)據(jù)挖掘的文章中挖掘一些虛構(gòu)的數(shù)據(jù),那么錯誤率可以更高一些。為了使之更進一步,還需要決定可以接受的假負與假正的百分比率是多少。我立即想到的一個例子就是垃圾郵件模型:一個假正(一個真郵件被標(biāo)記為了垃圾郵件)要比假負(一個垃圾消息未被標(biāo)記為垃圾郵件)更具破壞性。在像這樣的例子中,就可以判斷假負:假正的比率最低為 100:1 才是可以接受的。
好了,對于分類樹的背景和技術(shù)方面的介紹已經(jīng)夠多了。讓我們現(xiàn)在開始獲得一些真正的數(shù)據(jù)并將其帶入 WEKA。
WEKA 數(shù)據(jù)集
我們用于分類示例的數(shù)據(jù)集所圍繞的仍然是我們虛構(gòu)的 BMW 經(jīng)銷店。這個經(jīng)銷店正在啟動一個推銷計劃,試圖向其老客戶推銷兩年延保。這個經(jīng)銷店過去曾做過類似的計劃并從過去的銷售中收集了 4,500 個數(shù)據(jù)點。數(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 購買的年/月
- 最近的 BMW 購買的年/月
- 是否過去曾響應(yīng)過延保計劃
讓我們來看看在這個例子中使用的 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)進行分類
使用我們之前使用過的相同步驟來將數(shù)據(jù)文件 bmw-training.arff (參見?下載) 載入 WEKA。請注意:這個文件只包含經(jīng)銷店記錄內(nèi)的這 4,500 個記錄中的 3,000 個。我們需要分割我們的記錄以便某些數(shù)據(jù)實例被用來創(chuàng)建模型,某些被用來測試模型以確保沒有過擬合。在加載了數(shù)據(jù)后,屏幕應(yīng)該類似于圖 1。
圖 1. WEKA 內(nèi)的 BMW 分類數(shù)據(jù)
與我們在?用 WEKA 進行數(shù)據(jù)挖掘,第 1 部分:簡介和回歸?中對回歸模型所做的類似,我們選擇?Classify?選項卡,然后選擇?trees?節(jié)點,然后是?J48?葉子(我不知道為何這就是正式的名稱,不過還是接受吧)。
圖 2. BMW 分類算法
至此,我們已經(jīng)準(zhǔn)備好可以在 WEKA 內(nèi)創(chuàng)建我們的模型了。請確保?Use training set?被選中以便我們使用剛剛加載的這個數(shù)據(jù)集來創(chuàng)建模型。單擊?Start?并讓 WEKA 運行。模型的輸出應(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ù)字是什么意思?我們怎么才能知道這是一個好的模型?我們應(yīng)該尋找的這個所謂的“樹”在哪里?這些問題問得很好。讓我們逐一回答:
- 這些數(shù)字是什么意思??這里應(yīng)該關(guān)注的重要數(shù)字是“Correctly Classified Instances”(59.1 %)與“Incorrectly Classified Instances”(40.9 %)旁邊的這些數(shù)字。其他的重要數(shù)字還有“ROC Area”列第一行的這個數(shù)字(0.616);我稍候會詳細解釋這個數(shù)字,目前只需記住即可。最后,在“Confusion Matrix”中,顯示了假正和假負的數(shù)量。在這個矩陣中,假正為 516,假負為 710。
- 我們怎么才能知道這是一個好的模型??由于準(zhǔn)確率僅為 59.1 %,我不得不承認經(jīng)初步分析后,這不是一個非常好的模型。
- 這個所謂的“樹”在哪里??要看到這個樹,可右鍵單擊剛剛創(chuàng)建的這個模型。在彈出菜單中,選擇?Visualize tree。之后,就會看到我們所創(chuàng)建的這個分類樹,雖然在本例中,可視樹不能提供任何幫助。我們的樹如圖 3 所示。看到這個樹的另一種方式是在 Classifier Output 內(nèi)往高處看,其中的文本輸出顯示了具有節(jié)點和葉子的整個樹。
圖 3. 分類樹可視化
還有最后一個步驟,就是驗證我們的分類樹,這需要貫穿模型運行我們的測試集并確保我們模型的準(zhǔn)確性在測試集時與在訓(xùn)練集時相差不遠。為此,在?Test options?內(nèi),選擇?Supplied test set?單選按鈕并單擊?Set。選擇文件 bmw-test.arff,內(nèi)含 1,500 條記錄,而這些記錄在我們用來創(chuàng)建模型的訓(xùn)練集中是沒有的。當(dāng)我們這次單擊?Start?時,WEKA 將會貫穿我們已經(jīng)創(chuàng)建的這個模型運行測試數(shù)據(jù)集并會讓我們知道模型的情況。讓我們現(xiàn)在單擊?Start。如下是輸出。
圖 4. 分類樹測試
對比這個測試集的“Correctly Classified Instances”(55.7 %)與訓(xùn)練集的“Correctly Classified Instances”(59.1 %),我們看到此模型的準(zhǔn)確性非常接近,這表明此模型不會在應(yīng)用未知數(shù)據(jù)或未來數(shù)據(jù)時,發(fā)生故障。
不過,由于模型的準(zhǔn)確性很差,只能正確地分類 60 % 的數(shù)據(jù)記錄,因此我們可以后退一步說:“哦,這個模型一點都不好。其準(zhǔn)確性勉強超過 50 %,我隨便猜猜,也能得到這樣的準(zhǔn)確性。”這完全正確。這也是我想審慎地告訴大家的一點:有時候,將數(shù)據(jù)挖掘算法應(yīng)用到數(shù)據(jù)集有可能會生成一個糟糕的模型。這一點在這里尤其準(zhǔn)確,并且它是故意的。
我本想帶您親歷用適合于分類模型的數(shù)據(jù)生成一個分類樹的全過程。然而,我們從 WEKA 獲得的結(jié)果表明我們錯了。我們在這里本應(yīng)選擇的并非?分類樹。我們所創(chuàng)建的這個模型不能告訴我們?nèi)魏涡畔?#xff0c;并且如果我們使用它,我們可能會做出錯誤的決策并浪費錢財。
那么這是不是意味著該數(shù)據(jù)無法被挖掘呢?當(dāng)然不是,只不過需要使用另一種數(shù)據(jù)挖掘方法:最近鄰模型,該模型會在本系列的后續(xù)文章中討論,它使用相同的數(shù)據(jù)集,卻能創(chuàng)建一個準(zhǔn)確性超過 88 % 的模型。它旨在強調(diào)一點:那就是必須為數(shù)據(jù)選擇合適的模型才能得到有意義的信息。
進一步閱讀:如果您想更多地了解分類樹,有一些關(guān)鍵字可以查找,因篇幅的原因我在這里就不逐一介紹了:ROC curves、AUC、false positives、false negatives、learning curves、Naive Bayes、information gain、overfitting、 pruning、chi-square test。
回頁首
群集
群集?讓用戶可以通過數(shù)據(jù)組來從數(shù)據(jù)確定模式。當(dāng)數(shù)據(jù)集已定義并且需要從此數(shù)據(jù)確定一個通用的模式時,群集的優(yōu)勢就會比較明顯。您可以根據(jù)自身業(yè)務(wù)需要創(chuàng)建一定數(shù)量的組。與分類相比,群集的一個好處是數(shù)據(jù)集內(nèi)的每個屬性都被用來分析該數(shù)據(jù)。(在分類方法中,只有屬性的一個子集用在了模型中。)使用群集的一個主要劣勢是用戶需要提前知道他想要創(chuàng)建的組的數(shù)量。若用戶對其數(shù)據(jù)知之甚少,這可能會很困難。是應(yīng)該創(chuàng)建三個組?五個組?還是十個組?所以在決定要創(chuàng)建的理想組數(shù)之前,可能需要進行幾個步驟的嘗試和出錯。
不過,對于一般的用戶,群集有可能是最為有用的一種數(shù)據(jù)挖掘方法。它可以迅速地將整個數(shù)據(jù)集分成組,供您快速得出結(jié)論。此方法背后的算法多少有些復(fù)雜和難懂,這也是我們?yōu)楹我浞掷?WEKA 的原因。
算法概覽
如下是對群集中所用算法的一個簡要的快速概覽:
很顯然,這看上去不怎么有趣。對于一個具有 10 行和三個群集的數(shù)據(jù)集,若使用電子數(shù)據(jù)表,需要花上 30 分鐘才能完成。那么想象一下,如果有 100,000 數(shù)據(jù)行和 10 個群集,若用手工完成那將花費多長時間。所幸的是,計算機在幾秒內(nèi)就可以完成這類計算。
WEKA 的數(shù)據(jù)集
我們?yōu)槿杭纠褂玫倪@個數(shù)據(jù)集同樣也圍繞著我們虛構(gòu)的 BMW 經(jīng)銷店。這個經(jīng)銷店保留了人們?nèi)绾卧诮?jīng)銷店以及展廳行走、他們看了哪些車以及他們最終購車的機率的記錄。經(jīng)銷店期望通過尋找數(shù)據(jù)內(nèi)的模式挖掘這些數(shù)據(jù)并使用群集來判斷其客戶是否有某種行為特點。在這個例子中有 100 行數(shù)據(jù),并且每個列都描述了顧客在他們各自的 BMW 體驗中所到達的步驟,比如列中的 1 表示到達這一步的顧客看過這輛車,0 表示他們不曾到達看過車的這一步。清單 4 顯示了我們在 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)進行群集
采用與將數(shù)據(jù)加載到?Preprocess?選項卡時的相同步驟來將數(shù)據(jù)文件 bmw-browsers.arff 加載到 WEKA 內(nèi)。花上幾分鐘時間來查看一下這個選項卡內(nèi)的數(shù)據(jù)。看看這些列、屬性數(shù)據(jù)以及列的分布等。在加載數(shù)據(jù)后,屏幕應(yīng)該類似于圖 5。
圖 5. WEKA 內(nèi)的 BMW 群集數(shù)據(jù)
有了這個數(shù)據(jù)集,我們就可以開始創(chuàng)建群集了,所以這次不是單擊?Classify?選項卡,而是要單擊?Cluster?選項卡。單擊?Choose?并從所出現(xiàn)的各種選項中選擇?SimpleKMeans(這是本文中我們所期望的進行群集的方法)。這時的 WEKA Explorer 窗口應(yīng)該如圖 6 所示。
圖 6. BMW 群集算法
最后,我們想要通過單擊?SimpleKMeans?調(diào)整我們?nèi)杭惴ǖ膶傩?#xff08;雖然不是最佳的 UI 設(shè)計,但還是先接受吧)。這里我們想要調(diào)整的這個算法的惟一屬性是?numClusters?字段,它表明我們想要創(chuàng)建多少群集。(在開始之前,需要知道這一點。)讓我們將默認值從 2 更改為 5,若將來想要調(diào)整所創(chuàng)建群集的數(shù)量,就可以采用這些步驟。此時的 WEKA Explorer 應(yīng)該類似于圖 7。單擊?OK?以接受這些值。
圖 7. 群集屬性
至此,我們已經(jīng)可以運行這個群集算法了。如果使用電子數(shù)據(jù)表處理 100 行數(shù)據(jù)和五個數(shù)據(jù)群集將會花費幾個小時的計算時間,但 WEKA 在不到一秒鐘的時間內(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é)果該如何解析呢?這個輸出告訴我們每個群集是如何聯(lián)系在一起的,其中 “1” 表示該群集中的每個人都有相同的值 1,而 “0” 則表示該群集中的每個人的該屬性都有一個值 0。其他的數(shù)值是群集內(nèi)的每個人的平均值。每個群集向我們展示了顧客內(nèi)的一種行為類型,從中我們可以開始得出如下結(jié)論:
- 群集 0— 這個組我們可以稱之為 “Dreamers”,因他們圍著經(jīng)銷店徘徊,查看在停車場上停著的車,卻不步入店面內(nèi),且更糟的是,他們沒有購買過任何東西。
- 群集 1— 我們將這一組稱為是 “M5 Lovers”,因為他們常常會徑直走到 M5 車型區(qū),對 3-系列的車型和 Z4 均視而不見。不過,他們也沒有多高的購買率 — 只有 52 %。這表明存在潛在問題,也是經(jīng)銷店今后改進的重點,比如可以派更多的銷售人員到 M5 區(qū)。
- 群集 2— 這個組很小,我們可以稱之為 “Throw-Aways”,因為他們沒有統(tǒng)計意義上的相關(guān)性,我們也不能從其行為得出任何好的結(jié)論。(這種情況若在群集上發(fā)生,可能表明應(yīng)該減少所創(chuàng)建的群集的數(shù)量。)
- 群集 3— 這個組,我們稱之為 “BMW Babies”,因為他們總是會購買一輛車而且還會支付車款。正是在這里,數(shù)據(jù)向我們顯示了一些有趣的事情:他們一般會在停車場內(nèi)查看各種車型,然后返回到經(jīng)銷店內(nèi)的計算機處搜索中意的車型是否有貨。他們最終會購買 M5 或 Z4 車型(但從不購買 3-系列的)。這個群集告訴經(jīng)銷店它應(yīng)該考慮讓它的搜索計算機在停車場處就能很容易地被看到(或安置一臺室外的搜索計算機),并且讓 M5 或 Z4 在搜索結(jié)果中更為醒目。一旦顧客決定購買汽車,他總是符合購車款的支付條件并能夠圓滿完成這次購買。
- 群集 4— 這個組我們將稱之為 “Starting Out With BMW”,因為他們總是看 3-系列的車型,從不看貴很多的 M5。他們會徑直步入展廳,而不會在停車場處東看西看,而且也不會使用計算機搜索終端。他們中有 50 % 會到達支付車款的階段,但只有 32 % 會最終成交。經(jīng)銷店可以得出這樣的結(jié)論:這些初次購買 BMW 車的顧客知道自己想要的車型是哪種( 3-系列的入門級車型)而且希望能夠符合購車款的支付條件以便買得起。經(jīng)銷店可以通過放松購車款的支付條件或是降低 3- 系列車型的價格來提高這一組的銷售。
研究這些群集中數(shù)據(jù)的一種有趣方式是可視地查看它。為此,應(yīng)該在?Cluster?選項卡上的這個?Result List?區(qū)域右鍵單擊(同樣地,亦不是最佳設(shè)計的 UI)。彈出菜單的一個選項是?Visualize Cluster Assignments。彈出的窗口則會讓您處理這些結(jié)果并可視地查看它們。對于本例,將 X 軸更改為?M5 (Num),將 Y 軸更改為?Purchase (Num),將顏色更改為?Cluster (Nom)。結(jié)果,有一個圖表會向我們顯示這些群集是如何按照誰看過 M5 以及誰購買了一輛 M5 分組的。而且,將“Jitter”放大到最高的 3/4 處,這會手動地將這些標(biāo)繪點分散開以便我們能更容易地看到它們。
那么這些可視結(jié)果是否與我們從清單 5 中的結(jié)果集中得出的結(jié)論相符呢?我們可以從 X=1, Y=1 這一點(即看過 M5 且進行過購買的那些人)看出這里所表示的群集只有是 1 和 3。我們還看到處于點 X=0, Y=0 的群集只有 4 和 0。那么這與我們上述結(jié)論是否相符呢?答案是肯定的。群集 1 和 3 是過去購買過 M5 的,而群集 0 則沒有購買過任何車型,群集 4 只關(guān)注 3-系列。圖 8 顯示了本例的可視群集布局。您可以隨意嘗試更改 X 和 Y 軸來辨別出其他的趨勢和模式。
圖 8. 群集可視查看
進一步閱讀:如果您有興趣進一步鉆研,可以按如下術(shù)語搜索相關(guān)信息: Euclidean distance、Lloyd's algorithm、Manhattan Distance、Chebyshev Distance、sum of squared errors、cluster centroids。
回頁首
結(jié)束語
本文討論了兩種數(shù)據(jù)挖掘算法:分類樹和群集。這兩種算法與?用 WEKA 進行數(shù)據(jù)挖掘,第 1 部分:簡介和回歸?中介紹的回歸模型的算法不同之處在于沒有從模型只能得到數(shù)值輸出的限制。這兩個模型允許輸出更為靈活,是數(shù)據(jù)挖掘領(lǐng)域的兩個功能更為強大的武器。
從字面上理解,分類樹就是要創(chuàng)建一個具有分支、節(jié)點和枝葉的樹,能夠讓我們拿一個未知的數(shù)據(jù)點,將此數(shù)據(jù)點的屬性應(yīng)用到這個樹并順著這個樹下移,直到到達一個葉子并且數(shù)據(jù)點的未知輸出可以斷定。我們了解了為了創(chuàng)建一個好的分類樹模型,我們必須要有一個輸出已知的現(xiàn)有數(shù)據(jù)集,從這個數(shù)據(jù)集才能構(gòu)建我們的模型。我們還看到了我們需要將我們的數(shù)據(jù)集分成兩個部分:一個用來創(chuàng)建模型的訓(xùn)練集 ;一個用來驗證模型是否正確且沒有過擬合的測試集。作為本部分的最后一個要點,我還指出在某些時候,即便是創(chuàng)建了一個您認為正確的數(shù)據(jù)模型,它也可能不正確,而您必須要摒棄整個模型和算法以尋找更好的解決方案。
群集算法是對一個數(shù)據(jù)集中的數(shù)據(jù)進行分組,以便您可以基于在這些組中看到的趨勢得出結(jié)論。群集與分類及回歸的不同之處在于它不生成單個的輸出變量(結(jié)論容易得出),因而要求您必需觀察輸出并嘗試得出自己的結(jié)論。正如在本例中看到的,這個模型生成了五個群集,但對群集內(nèi)的這些數(shù)據(jù)的分析以及從這些信息中得出結(jié)論則取決于我們。就此而言,非常難以生成準(zhǔn)確的群集模型(想象一下如果我們創(chuàng)建了過多或過少的群集,結(jié)果將會如何),而另一方面,我們將能夠從這個結(jié)果集中挖掘出一些有趣的信息 — 這些信息是使用我們之前討論過的其他任何模型都無法得到的。
第 3 部分是 “用 WEKA 進行數(shù)據(jù)挖掘” 系列的結(jié)束篇,會以最近鄰模型結(jié)束我們對模型的討論。我們還將會將 WEKA 用作第三方 Java? 庫,而不是作為一個獨立的應(yīng)用程序,這樣一來,我們就可以將其直接嵌入到我們的服務(wù)器端代碼。我們也就能夠在我們的服務(wù)器上直接挖掘數(shù)據(jù),而無須將它處理成一個 ARFF 文件后才能手動運行它。
回頁首
下載
| 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 上的這個視頻?了解如何將一個電子數(shù)據(jù)表用于一個簡單的回歸模型。
- 查閱?WEKA Web 站點?獲得此軟件的所有文檔和一個 FAQ。
- 在?Wikipedia 上查閱回歸分析,這里可能有比您想象中還要多的技術(shù)細節(jié)。
- 閱讀有關(guān)?ARFF?的詳細信息,以便您可以將數(shù)據(jù)加載入 WEKA。
- IBM 也有自己的數(shù)據(jù)挖掘軟件, “?Integrate InfoSphere Warehouse data mining with IBM Cognos reporting, Part 1” 提供了一個很好的起點。
- 要收聽面向軟件開發(fā)人員的有趣訪談和討論,請訪問?developerWorks 播客。
- 隨時關(guān)注 developerWorks?技術(shù)活動和網(wǎng)絡(luò)廣播。
- 查閱最近將在全球舉辦的面向 IBM 開放源碼開發(fā)人員的研討會、交易展覽、網(wǎng)絡(luò)廣播和其他活動。
- 訪問 developerWorks?Open source 專區(qū)獲得豐富的 how-to 信息、工具和項目更新以及最受歡迎的文章和教程,幫助您用開放源碼技術(shù)進行開發(fā),并將它們與 IBM 產(chǎn)品結(jié)合使用。
- developerWorks 社區(qū)?是流行社區(qū)的一個成功典范,包含廣泛的主題。
- 查看免費的?developerWorks 演示中心,觀看并了解 IBM 及開源技術(shù)和產(chǎn)品功能。
獲得產(chǎn)品和技術(shù)
- 下載 WEKA?并在您的系統(tǒng)上運行它。
- 您可以查看有關(guān) IBM?DB2 Intelligent Miner?軟件的詳細信息以便與 WEKA 進行對比。
- 使用?IBM 產(chǎn)品評估試用版軟件改進您的下一個開源開發(fā)項目,這些軟件可以通過下載獲得。
- 下載?IBM 產(chǎn)品評估試用版軟件?或?IBM SOA Sandbox for People?并使用來自 DB2?、Lotus?、Rational?、Tivoli? 和 WebSphere? 的應(yīng)用程序開發(fā)工具和中間件產(chǎn)品。
討論
- 此外,請查閱 My developerWorks 上的這個新的?Data Mining?組。
- 參與?developerWorks 博客?并加入 developerWorks 社區(qū)。
條評論
請?登錄?或?注冊?后發(fā)表評論。
添加評論:
注意:評論中不支持 HTML 語法
非常好的weka入門介紹
由?ac嚕嚕嚕?于 2015年09月10日發(fā)布
報告濫用
"學(xué)習(xí)weka
總結(jié)
以上是生活随笔為你收集整理的用 WEKA 进行数据挖掘,第 2 部分: 分类和群集的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Weka使用笔记
- 下一篇: 用 WEKA 进行数据挖掘,第 3 部分