簡(jiǎn)介:
查看本系列更多內(nèi)容
發(fā)布日期:
級(jí)別:
其他語言版本:
訪問情況 :
評(píng)論:
在 用 WEKA進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸, 我介紹了數(shù)據(jù)挖掘的概念以及免費(fèi)的開源軟件 Waikato Environmentfor Knowledge Analysis(WEKA),利用它可以挖掘數(shù)據(jù)來獲得趨勢(shì)和模式。我還談到了第一種數(shù)據(jù)挖掘的方法 — 回歸— 使用它可以根據(jù)一組給定的輸入值預(yù)測(cè)數(shù)字值。這種分析方法非常容易進(jìn)行,而且也是功能最不強(qiáng)大的一種數(shù)據(jù)挖掘方法,但是通過它,讀者對(duì)WEKA 有了很好的了解,并且它還提供了一個(gè)很好的例子,展示了原始數(shù)據(jù)是如何轉(zhuǎn)換為有意義的信息的。
在本文中,我將帶您親歷另外兩種數(shù)據(jù)挖掘的方法,這二者要比回歸模型稍微復(fù)雜一些,但功能則更為強(qiáng)大。如果回歸模型只能為特定輸入提供一個(gè)數(shù)值輸出,那么這兩種模型則允許您對(duì)數(shù)據(jù)做不同的解析。正如我在第 1部分中所說的,數(shù)據(jù)挖掘的核心就是將正確的模型應(yīng)用于數(shù)據(jù)。即便有了有關(guān)客戶的最佳數(shù)據(jù)(無論這意味著什么),但是如果沒有將正確的模型應(yīng)用于數(shù)據(jù),那么這些數(shù)據(jù)也沒有任何意義。不妨從另一個(gè)角度考慮這件事情:如果您只使用能生成數(shù)值輸出的回歸模型,那么 Amazon 如何能告知您“購(gòu)買了X 產(chǎn)品的客戶還購(gòu)買了 Y 產(chǎn)品”?這里沒有數(shù)值型的函數(shù)能夠告訴您這類信息。所以讓我們來深入研究可用在數(shù)據(jù)中的其他兩個(gè)模型。
在本文中,我會(huì)反復(fù)提及稱為“最近鄰”的數(shù)據(jù)挖掘方法,但我不會(huì)過多地對(duì)其進(jìn)行剖析,詳細(xì)的介紹會(huì)在第 3部分給出。不過,我在本文中的比較和描述部分將它包括進(jìn)來以使討論更為完整。
回頁首
在我深入探討每種方法的細(xì)節(jié)并通過 WEKA 使用它們之前,我想我們應(yīng)該先理解每個(gè)模型 —每個(gè)模型適合哪種類型的數(shù)據(jù)以及每個(gè)模型試圖實(shí)現(xiàn)的目標(biāo)。我們還會(huì)將我們已有的模型 — 回歸模型 —也包括在我們的討論之中,以便您可以看到這三種新模型與我們已經(jīng)了解的這個(gè)模型的對(duì)比。我將通過實(shí)際的例子展示每個(gè)模型的使用以及各自的不同點(diǎn)。這些實(shí)際的例子均圍繞著一個(gè)本地的 BMW 經(jīng)銷店展開,研究它如何能增加銷售。這個(gè)經(jīng)銷店已經(jīng)保存了所有其過去的銷售信息及有關(guān)購(gòu)買過BMW、留意過 BMW 或是來過 BMW 展廳的每個(gè)客戶的信息。這個(gè)經(jīng)銷店想要增加未來的銷售并部署了數(shù)據(jù)挖掘來實(shí)現(xiàn)此目標(biāo)。
問題:“對(duì)于新的 BMW M5 車型我們?cè)撊绾味▋r(jià)?” 回歸模型只能給出這個(gè)問題的一個(gè)數(shù)值答案?;貧w模型會(huì)使用 BMW 和 M5的過去銷售數(shù)據(jù)來基于所售汽車的屬性和賣點(diǎn)確定人們過去在這個(gè)經(jīng)銷店購(gòu)買車的價(jià)格。然后,回歸模型允許 BMW經(jīng)銷店插入新車的屬性來確定其價(jià)格。
比如:Selling Price = $25,000 + ($2900 * Liters in Engine) +($9000 * isSedan) + ($11,000 * isConvertible) + ($100 * inches ofcar) + ($22,000 * isM)
。
問題:“那么客戶 X 有多大的可能會(huì)購(gòu)買最新的 BMW M5 呢?”創(chuàng)建一個(gè)分類樹(一個(gè)決策樹),并借此挖掘數(shù)據(jù)就可以確定這個(gè)人購(gòu)買一輛新的 M5的可能性有多大。這個(gè)樹上的節(jié)點(diǎn)可以是年齡、收入水平、目前擁有的車的數(shù)量、婚姻狀況、有無孩子、房主還是租戶。對(duì)這個(gè)決策樹使用此人的這些屬性就可以確定他購(gòu)買 M5 的可能性。
問題是:“哪個(gè)年齡組最喜歡銀色的 BMWM5?”這就需要挖掘數(shù)據(jù)來對(duì)比過去購(gòu)車者的年齡和過去購(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)的模式。
問題:“當(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ù)據(jù)挖掘算法,為如何確定一個(gè)新的數(shù)據(jù)實(shí)例的輸出創(chuàng)建逐步指導(dǎo)。它所創(chuàng)建的這個(gè)樹上的每個(gè)節(jié)點(diǎn)都代表一個(gè)位置,在這個(gè)位置必須基于輸入做出決策,并且會(huì)從一個(gè)節(jié)點(diǎn)移到下一個(gè)節(jié)點(diǎn)直至到達(dá)能夠得出預(yù)測(cè)的輸出的葉子節(jié)點(diǎn)。這雖然聽起來有些讓人迷惑,但其實(shí)它非常直觀。讓我們看一個(gè)例子。
[ 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)單的分類樹試圖回答這個(gè)問題:“您理解分類樹么?”在每個(gè)節(jié)點(diǎn),您都會(huì)回答這個(gè)問題并繼續(xù)沿著分支下移,直到您到達(dá)一個(gè)回答了是或不是的葉子節(jié)點(diǎn)。這個(gè)模型可用于任何未知的數(shù)據(jù)實(shí)例,來預(yù)測(cè)這個(gè)未知數(shù)據(jù)實(shí)例是否通過只詢問兩個(gè)簡(jiǎn)單問題就能理解分類樹。這看上去像是分類樹的一大優(yōu)勢(shì) —它無需有關(guān)數(shù)據(jù)的大量信息就能創(chuàng)建一個(gè)十分準(zhǔn)確且信息豐富的樹。
分類樹的一個(gè)重要概念非常類似于我們?cè)?用 WEKA進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸回歸模型中看到的概念:使用一個(gè)“訓(xùn)練集”來生成模型。就是拿一組輸出值已知的數(shù)據(jù)集并使用此數(shù)據(jù)集來創(chuàng)建我們的模型。之后,只要我們有一個(gè)輸出值未知的新的數(shù)據(jù)點(diǎn),我們都可以將其放入這個(gè)模型并生成預(yù)期的輸出。這與我們?cè)诨貧w模型中看到的沒有差別。只不過,這個(gè)模型更進(jìn)了一步,通常會(huì)把整個(gè)訓(xùn)練集分成兩個(gè)部分:拿數(shù)據(jù)的約 60-80 %放入我們的訓(xùn)練集,用來生成模型;然后拿剩下的數(shù)據(jù)放入一個(gè)測(cè)試集,在模型生成后,立即用其來測(cè)試我們模型的準(zhǔn)確性。
那么這個(gè)額外的步驟為什么在此模型中如此重要呢?這個(gè)問題就是所謂的過擬合:如果我們提供過多數(shù)據(jù)用于模型創(chuàng)建,我們的模型雖然會(huì)被完美創(chuàng)建,但只針對(duì)的是該數(shù)據(jù)。請(qǐng)記?。何覀兿胧褂么四P蛠眍A(yù)測(cè)未來的未知數(shù);我們不是想使用此模型來準(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è)出未來的未知值。使用 WEKA 會(huì)看到它的實(shí)際效果。
這還引出了分類樹的另一個(gè)重要概念:修剪。修剪正如其名字所指,意思是刪減分類樹的枝條。那么為什么有人會(huì)想要將信息從分類樹中刪除呢?還是因?yàn)檫^擬合的緣故。隨著數(shù)據(jù)集的增大以及屬性數(shù)量的增長(zhǎng),我們所創(chuàng)建的樹就會(huì)越來越復(fù)雜。理論上講,一個(gè)樹可以具有leaves = (rows *attributes)
。但那又有何益處呢?就預(yù)測(cè)未來的未知數(shù)而言,它根本幫不到我們,因它只適于我們現(xiàn)有的訓(xùn)練數(shù)據(jù)。因此我們需要的是一種平衡。我們想要我們的樹盡量簡(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ò)誤表明在我們的模型中出了問題,我們的模型正在錯(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ù)方面的介紹已經(jīng)夠多了。讓我們現(xiàn)在開始獲得一些真正的數(shù)據(jù)并將其帶入 WEKA。
我們用于分類示例的數(shù)據(jù)集所圍繞的仍然是我們虛構(gòu)的 BMW經(jīng)銷店。這個(gè)經(jīng)銷店正在啟動(dòng)一個(gè)推銷計(jì)劃,試圖向其老客戶推銷兩年延保。這個(gè)經(jīng)銷店過去曾做過類似的計(jì)劃并從過去的銷售中收集了 4,500個(gè)數(shù)據(jù)點(diǎn)。數(shù)據(jù)集中的屬性有:
讓我們來看看在這個(gè)例子中使用的 Attribute-Relation File Format (ARFF)。
@attribute IncomeBracket {0,1,2,3,4,5,6,7} @attribute FirstPurchase numeric @attribute LastPurchase numeric @attribute responded {1,0} @data 4,200210,200601,0 5,200301,200601,1 ... |
使用我們之前使用過的相同步驟來將數(shù)據(jù)文件 bmw-training.arff (參見下載) 載入 WEKA。請(qǐng)注意:這個(gè)文件只包含經(jīng)銷店記錄內(nèi)的這 4,500 個(gè)記錄中的 3,000個(gè)。我們需要分割我們的記錄以便某些數(shù)據(jù)實(shí)例被用來創(chuàng)建模型,某些被用來測(cè)試模型以確保沒有過擬合。在加載了數(shù)據(jù)后,屏幕應(yīng)該類似于圖1。
與我們?cè)?用 WEKA進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸 中對(duì)回歸模型所做的類似,我們選擇 Classify選項(xiàng)卡,然后選擇 trees 節(jié)點(diǎn),然后是 J48葉子(我不知道為何這就是正式的名稱,不過還是接受吧)。
至此,我們已經(jīng)準(zhǔn)備好可以在 WEKA 內(nèi)創(chuàng)建我們的模型了。請(qǐng)確保 Use trainingset 被選中以便我們使用剛剛加載的這個(gè)數(shù)據(jù)集來創(chuàng)建模型。單擊 Start 并讓W(xué)EKA 運(yùn)行。模型的輸出應(yīng)類似于清單 3 內(nèi)的結(jié)果。
Number of Leaves : 28 Size of the tree : 43 Time 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 Class 0.662 0.481 0.587 0.662 0.622 0.616 1 0.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 as 1009 516 | a = 1 710 765 | b = 0 |
上述這些數(shù)字是什么意思?我們?cè)趺床拍苤肋@是一個(gè)好的模型?我們應(yīng)該尋找的這個(gè)所謂的“樹”在哪里?這些問題問得很好。讓我們逐一回答:
還有最后一個(gè)步驟,就是驗(yàn)證我們的分類樹,這需要貫穿模型運(yùn)行我們的測(cè)試集并確保我們模型的準(zhǔn)確性在測(cè)試集時(shí)與在訓(xùn)練集時(shí)相差不遠(yuǎn)。為此,在Test options 內(nèi),選擇 Supplied testset 單選按鈕并單擊 Set。選擇文件 bmw-test.arff,內(nèi)含1,500 條記錄,而這些記錄在我們用來創(chuàng)建模型的訓(xùn)練集中是沒有的。當(dāng)我們這次單擊 Start時(shí),WEKA 將會(huì)貫穿我們已經(jīng)創(chuàng)建的這個(gè)模型運(yùn)行測(cè)試數(shù)據(jù)集并會(huì)讓我們知道模型的情況。讓我們現(xiàn)在單擊Start。如下是輸出。
對(duì)比這個(gè)測(cè)試集的“Correctly Classified Instances”(55.7 %)與訓(xùn)練集的“CorrectlyClassified Instances”(59.1%),我們看到此模型的準(zhǔn)確性非常接近,這表明此模型不會(huì)在應(yīng)用未知數(shù)據(jù)或未來數(shù)據(jù)時(shí),發(fā)生故障。
不過,由于模型的準(zhǔn)確性很差,只能正確地分類 60 %的數(shù)據(jù)記錄,因此我們可以后退一步說:“哦,這個(gè)模型一點(diǎn)都不好。其準(zhǔn)確性勉強(qiáng)超過 50%,我隨便猜猜,也能得到這樣的準(zhǔn)確性?!边@完全正確。這也是我想審慎地告訴大家的一點(diǎn):有時(shí)候,將數(shù)據(jù)挖掘算法應(yīng)用到數(shù)據(jù)集有可能會(huì)生成一個(gè)糟糕的模型。這一點(diǎn)在這里尤其準(zhǔn)確,并且它是故意的。
我本想帶您親歷用適合于分類模型的數(shù)據(jù)生成一個(gè)分類樹的全過程。然而,我們從 WEKA獲得的結(jié)果表明我們錯(cuò)了。我們?cè)谶@里本應(yīng)選擇的并非分類樹。我們所創(chuàng)建的這個(gè)模型不能告訴我們?nèi)魏涡畔?,并且如果我們使用它,我們可能?huì)做出錯(cuò)誤的決策并浪費(fèi)錢財(cái)。
那么這是不是意味著該數(shù)據(jù)無法被挖掘呢?當(dāng)然不是,只不過需要使用另一種數(shù)據(jù)挖掘方法:最近鄰模型,該模型會(huì)在本系列的后續(xù)文章中討論,它使用相同的數(shù)據(jù)集,卻能創(chuàng)建一個(gè)準(zhǔn)確性超過 88 % 的模型。它旨在強(qiáng)調(diào)一點(diǎn):那就是必須為數(shù)據(jù)選擇合適的模型才能得到有意義的信息。
進(jìn)一步閱讀:如果您想更多地了解分類樹,有一些關(guān)鍵字可以查找,因篇幅的原因我在這里就不逐一介紹了:ROCcurves、AUC、false positives、false negatives、learning curves、NaiveBayes、information gain、overfitting、 pruning、chi-square test。
回頁首
群集讓用戶可以通過數(shù)據(jù)組來從數(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è)屬性都被用來分析該數(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ò)。
不過,對(duì)于一般的用戶,群集有可能是最為有用的一種數(shù)據(jù)挖掘方法。它可以迅速地將整個(gè)數(shù)據(jù)集分成組,供您快速得出結(jié)論。此方法背后的算法多少有些復(fù)雜和難懂,這也是我們?yōu)楹我浞掷肳EKA 的原因。
如下是對(duì)群集中所用算法的一個(gè)簡(jiǎn)要的快速概覽:
很顯然,這看上去不怎么有趣。對(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ì)算。
我們?yōu)槿杭纠褂玫倪@個(gè)數(shù)據(jù)集同樣也圍繞著我們虛構(gòu)的 BMW經(jīng)銷店。這個(gè)經(jīng)銷店保留了人們?nèi)绾卧诮?jīng)銷店以及展廳行走、他們看了哪些車以及他們最終購(gòu)車的機(jī)率的記錄。經(jīng)銷店期望通過尋找數(shù)據(jù)內(nèi)的模式挖掘這些數(shù)據(jù)并使用群集來判斷其客戶是否有某種行為特點(diǎn)。在這個(gè)例子中有 100 行數(shù)據(jù),并且每個(gè)列都描述了顧客在他們各自的 BMW體驗(yàn)中所到達(dá)的步驟,比如列中的 1 表示到達(dá)這一步的顧客看過這輛車,0 表示他們不曾到達(dá)看過車的這一步。清單 4 顯示了我們?cè)赪EKA 中所使用的 ARFF 數(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 @data 1,0,0,0,0,0,0,0 1,1,1,0,0,0,1,0 ... |
采用與將數(shù)據(jù)加載到 Preprocess 選項(xiàng)卡時(shí)的相同步驟來將數(shù)據(jù)文件bmw-browsers.arff 加載到 WEKA內(nèi)?;ㄉ蠋追昼姇r(shí)間來查看一下這個(gè)選項(xiàng)卡內(nèi)的數(shù)據(jù)??纯催@些列、屬性數(shù)據(jù)以及列的分布等。在加載數(shù)據(jù)后,屏幕應(yīng)該類似于圖 5。
有了這個(gè)數(shù)據(jù)集,我們就可以開始創(chuàng)建群集了,所以這次不是單擊 Classify選項(xiàng)卡,而是要單擊 Cluster 選項(xiàng)卡。單擊 Choose并從所出現(xiàn)的各種選項(xiàng)中選擇 SimpleKMeans(這是本文中我們所期望的進(jìn)行群集的方法)。這時(shí)的WEKA Explorer 窗口應(yīng)該如圖 6 所示。
最后,我們想要通過單擊 SimpleKMeans 調(diào)整我們?nèi)杭惴ǖ膶傩裕m然不是最佳的 UI設(shè)計(jì),但還是先接受吧)。這里我們想要調(diào)整的這個(gè)算法的惟一屬性是 numClusters字段,它表明我們想要?jiǎng)?chuàng)建多少群集。(在開始之前,需要知道這一點(diǎn)。)讓我們將默認(rèn)值從 2 更改為5,若將來想要調(diào)整所創(chuàng)建群集的數(shù)量,就可以采用這些步驟。此時(shí)的 WEKA Explorer 應(yīng)該類似于圖 7。單擊OK 以接受這些值。
至此,我們已經(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。
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.3214 Clustered Instances 0 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)的一種行為類型,從中我們可以開始得出如下結(jié)論:
研究這些群集中數(shù)據(jù)的一種有趣方式是可視地查看它。為此,應(yīng)該在 Cluster 選項(xiàng)卡上的這個(gè)Result List 區(qū)域右鍵單擊(同樣地,亦不是最佳設(shè)計(jì)的 UI)。彈出菜單的一個(gè)選項(xiàng)是Visualize ClusterAssignments。彈出的窗口則會(huì)讓您處理這些結(jié)果并可視地查看它們。對(duì)于本例,將 X 軸更改為 M5(Num)
,將 Y 軸更改為 Purchase (Num)
,將顏色更改為Cluster (Nom)
。結(jié)果,有一個(gè)圖表會(huì)向我們顯示這些群集是如何按照誰看過 M5 以及誰購(gòu)買了一輛M5 分組的。而且,將“Jitter”放大到最高的 3/4 處,這會(huì)手動(dòng)地將這些標(biāo)繪點(diǎn)分散開以便我們能更容易地看到它們。
那么這些可視結(jié)果是否與我們從清單 5 中的結(jié)果集中得出的結(jié)論相符呢?我們可以從 X=1, Y=1 這一點(diǎn)(即看過 M5且進(jìn)行過購(gòu)買的那些人)看出這里所表示的群集只有是 1 和 3。我們還看到處于點(diǎn) X=0, Y=0 的群集只有 4 和0。那么這與我們上述結(jié)論是否相符呢?答案是肯定的。群集 1 和 3 是過去購(gòu)買過 M5 的,而群集 0 則沒有購(gòu)買過任何車型,群集 4只關(guān)注 3-系列。圖 8 顯示了本例的可視群集布局。您可以隨意嘗試更改 X 和 Y 軸來辨別出其他的趨勢(shì)和模式。
進(jìn)一步閱讀:如果您有興趣進(jìn)一步鉆研,可以按如下術(shù)語搜索相關(guān)信息: Euclideandistance、Lloyd's algorithm、Manhattan Distance、ChebyshevDistance、sum of squared errors、cluster centroids。
回頁首
本文討論了兩種數(shù)據(jù)挖掘算法:分類樹和群集。這兩種算法與 用 WEKA進(jìn)行數(shù)據(jù)挖掘,第 1 部分:簡(jiǎn)介和回歸中介紹的回歸模型的算法不同之處在于沒有從模型只能得到數(shù)值輸出的限制。這兩個(gè)模型允許輸出更為靈活,是數(shù)據(jù)挖掘領(lǐng)域的兩個(gè)功能更為強(qiáng)大的武器。
從字面上理解,分類樹就是要?jiǎng)?chuàng)建一個(gè)具有分支、節(jié)點(diǎn)和枝葉的樹,能夠讓我們拿一個(gè)未知的數(shù)據(jù)點(diǎn),將此數(shù)據(jù)點(diǎn)的屬性應(yīng)用到這個(gè)樹并順著這個(gè)樹下移,直到到達(dá)一個(gè)葉子并且數(shù)據(jù)點(diǎn)的未知輸出可以斷定。我們了解了為了創(chuàng)建一個(gè)好的分類樹模型,我們必須要有一個(gè)輸出已知的現(xiàn)有數(shù)據(jù)集,從這個(gè)數(shù)據(jù)集才能構(gòu)建我們的模型。我們還看到了我們需要將我們的數(shù)據(jù)集分成兩個(gè)部分:一個(gè)用來創(chuàng)建模型的訓(xùn)練集;一個(gè)用來驗(yàn)證模型是否正確且沒有過擬合的測(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)建了過多或過少的群集,結(jié)果將會(huì)如何),而另一方面,我們將能夠從這個(gè)結(jié)果集中挖掘出一些有趣的信息 — 這些信息是使用我們之前討論過的其他任何模型都無法得到的。
第 3 部分是 “用WEKA 進(jìn)行數(shù)據(jù)挖掘” 系列的結(jié)束篇,會(huì)以最近鄰模型結(jié)束我們對(duì)模型的討論。我們還將會(huì)將 WEKA 用作第三方 Java?庫(kù),而不是作為一個(gè)獨(dú)立的應(yīng)用程序,這樣一來,我們就可以將其直接嵌入到我們的服務(wù)器端代碼。我們也就能夠在我們的服務(wù)器上直接挖掘數(shù)據(jù),而無須將它處理成一個(gè) ARFF 文件后才能手動(dòng)運(yùn)行它。
聯(lián)系客服