標籤:style blog http io ar os 使用 sp strong
原文:(原創)大資料時代:基於微軟案例資料庫資料採礦知識點總結(Microsoft 決策樹分析演算法)
隨著大資料時代的到來,資料採礦的重要性就變得顯而易見,幾種作為最低層的簡單的資料採礦演算法,現在利用微軟資料案例庫做一個簡要總結。
應用情境介紹
其實資料採礦應用的情境無處不在,很多的環境都會應用到資料採礦,之前我們沒有應用是因為還沒有學會利用資料,或者說還沒有體會到資料的重要性,現在隨著IT行業中大資料時代的到來,讓我一起去擁抱大資料,閑言少敘,此處我們就列舉一個最簡單的情境,一個銷售廠商根據以往的銷售記錄單,通過資料採礦技術預測出一份可能會購買該廠商產品的客戶名單,我相信這也是很多銷售機構想要得到的資料,當然這其中還有許多資料可供挖掘,比如:各種商品之間的關聯是否能帶來聯動銷售(啤酒和尿不濕、商品貨架商品擺放、網站導航商品布局等)、影響每一種商品的屬性值等等吧,這些伴隨和資料採礦的過程都會形成報告。
技術準備
這裡有幾點技術儲備需要提到
(1)我們利用微軟提供的案例資料倉儲(AdventureWorksDW2008R2),當然其實我們應用的也就是兩張事實表,一張已有的曆史購買單車記錄的曆史表,當然包括購買單車顧客的一些供挖掘的屬性,另外一張就是我們將要挖掘的收集過來可能發生購買單車的人員資訊表,從這裡面挖掘出可能會買單車的人。
曬曆史銷售表結構:
包含一個主鍵記錄、顧客的生日、姓名、Email、婚姻狀況、是否有房子、是否有車、年齡、上班距離遠近等屬性情況,這後面還有一列是是否發生購買單車,當然從三範式上講這種設計方式是不符合OLTP的,但此處是OLAP,也不是規範的事實表,這種結構一般通過一個view就能拼湊出來,咱這裡就不提這些基礎技術了。
另外一張表:
同樣是一張人員資訊表,也是記錄的一些人員的屬性,當然這裡不會和已經銷售個人記錄的資訊一樣,但會包含相同的屬性集合,比如:生日、年齡、年度營收等等,我們要做的就是從這種表裡面找到會買單車的人。
(2)vs資料採礦工具、安裝好資料庫配置好服務,這個都懂,沒啥可說的,但要實現這種目的我們會使用三種資料採礦演算法,稍作介紹
Microsoft 決策樹:對於離散屬性,該演算法根據資料集中輸入列之間的關係進行預測。它使用這些列的值或狀態預測指定的可預測資料行的狀態。具體地說,該演算法標識與可預測資料行相關的輸入列。
Microsoft 群集:該演算法使用迭代技術將資料集中的案例分組為包含類似特徵的分類。在瀏覽資料、標識資料中的異常及建立預測時,這些分組十分有用。簡單點就是找出相同一部分屬性的種類。
Microsoft Naive Bayes:Microsoft Naive Bayes 演算法是由 Microsoft SQL Server Analysis Services 提供的一種基於貝葉斯定理的分類演算法,可用於預測性建模。
這些演算法有很多底層演算法作支撐,我們只需要記住他們的應用情境和不同演算法所具有的特性即可。下面的分步驟分析過程我會總結每種演算法能幹什麼,能夠分析出什麼。
下面我們進入主題,通過簡單的過程配置我們來實現整個資料採礦的過程,依次步驟如下
1、建立工程,配置資料來源
這個沒有什麼可分析的,基於微軟案例資料庫建立資料連線,簡單的資料配置,執行個體名和使用者名稱和密碼串連資料倉儲即可
2、建立資料來源檢視
這裡就是篩選出我們想要資料採礦的資料表,可以選擇的是表或者視圖,我們這裡要做的事很簡單,其實就是把上面的兩張表從資料庫裡串連出來,VS工具配置很簡單,根據它的提示我們就可以很輕鬆的配置出資料檢視。
這裡有幾個技巧可以瀏覽兩張表資料,在所選表中右鍵選擇“瀏覽資料”,可以查看裡面的列,還能分析資料中所佔比情況,可以採用類似於Excel的透視表、透視圖查看,也可以通過圖表工具,例如:
此步驟是為了讓我們理解裡面的表資料,通過分析資料可以先分析出資料表中可以供我們挖掘的資料列屬性有哪些,也可以簡要推測影響我們目標(購買單車)這種行為可能影響的屬性,比如:家裡有汽車的、年齡大於60或者小於10歲的、上班距離跨越好幾個城區的(比如從朝陽——海澱上班)、年度營收百萬的等等吧按照常理會買單車的幾率還是挺小的,下一步我們用挖掘演算法來逐一驗證我們基於經驗的這些推測是否合理。
3、建立採礦結構
這一步我們分步驟細一點,逐過程講解
(1)在解決方案中“資料結構”中,右鍵選擇建立資料採礦,這裡我們選擇“從現有資料庫或資料倉儲”來定義資料採礦結構
(2)點擊下一步,選擇一種演算法,這裡列出了幾種我們比較常用的資料採礦演算法,我們選擇“Microsoft 決策樹”演算法
(3)點擊下一步,選擇我們可以應用的資料來源檢視
(4)我們選擇上面的“vTargetMail”表作為案例來進行挖掘,所謂的案例就是以前我們所存在的記錄表,點擊下一步
(5) 進入指定定性資料模組,顯示圖如下,這裡面有幾列比較重要,先看圖片
這裡面有幾列需要我們自己配置,鍵列:這個就是我們的主鍵列了,vs能自己識別出來,然後就是輸入列:這一列就是根據我們要預測的目標,手動勾選的狀態值列,這裡我們勾選了年齡、通勤距離、英國學曆、英國職位、婚姻狀況、家庭汽車數、家庭孩子總數、在家裡孩子數、所在地區、年度營收等我們認為會影響預測目標的值列,當然這裡有時候我們自己的推斷不一定能准,但VS同樣根據資料給你推算出了可能影響的列供參考選擇,這裡我們點擊“建議”按鈕,會彈出如下視窗:
看到了嘛,可愛的vs已經將肯尼個影響的列給你建議出來了,這裡的分數就是評估的應該的機率,年齡是影響購買車輛影響最大的因素、其次是家庭車輛、再次是家庭孩子總數、當然這些值也是採樣擷取的,點擊輸入,就會選中相應的列,這裡我們的可預測資料行就選擇:購買單車列“BikeBuyer”,這裡最前面的一列就是要顯示的明細列,資料採礦的結果提供明細切入,顯示明細的時候需要的列,我們可以在這裡面選中。
到這一步其實我們可以簡要的推斷買不買單車看來與年齡還是關係比較大的,嗯...老年人和兒童估計騎單車的可能性不大,呵呵...當然這僅是推測,咱們接著往下挖掘。
(6)點擊下一步,進入資料採礦模型機構,這裡面會顯示出各個列裡面的實值型別和值狀態,是連續值、還是離散型,可以點擊檢測推斷
(7)點擊下一步,會進入資料集兩個比較重要的參數配置,一個就是計算模型資料集所佔比,一個就是最大執行個體數的值,先看圖,然我我解釋含義
在vs中已經有說明了,解釋的比較清楚,第一個值就是用於計算資料採礦模型的值佔比,剩下的值作為後面驗證我們資料採礦模型的正確性,簡單點就是留一部分測試資料稍後我們那它來測試測試我們建立的資料採礦模型是否正確。第二個值就是每個挖掘迴歸所佔的最大案例總數,這裡我們做一個限制。
(8)點擊下一步,給這個資料採礦模型起一個名字,然後勾選上允許切入明細
至此我們的Microsoft決策樹資料採礦模型已經建立完畢,看看圖
下一步就是分析我們的挖掘結果了,這一步最精彩,我們來逐步分析。
結果分析
在分析之前我們先在解決方案中右鍵部署該解決方案到本地Analysis Services資料庫中。
在我們資料採礦模型中有四個選項卡一個就是我們的採礦結構,第二個就是採礦模型中我們設定的輸入列、預測列、鍵列等資訊,沒啥可說的看圖
接著才是我們重點要分析的資料採礦模型查看器,這裡面會有我們挖掘出來的結果值,形成我們的分析報告等選項,先看看圖:
整幅圖片中,整個顯示結果是一種樹狀結構圖,從頂端依次展開的橫向圖片,從圖例中我們就可以看到,其中紅色的也就是值為1的為購買單車的比例,藍色的就是沒購買單車的比例,這裡有個選項比較重要,就是背景,預設為全部值,也就是說整個圖中包含所有的事實,因為我們的需求是要分析購買單車的顧客的狀態,所以我們選擇值為1(會發生購買)的進行分析,當然如果需求比較特別,你也可以選擇不購買單車的顧客這部分群體的特徵,這裡我們選擇為1的背景:
看看分析結果:
整體樹種,顏色最深的為我們最期望得到的值,而每個方塊所代表的就是一種狀態值區間,每個方塊又可以依次展開看其子節點狀態,最靠近根部的方塊所代表的的因為即為影響結果值最重要的因素,從中我們可以看到家庭中汽車的數量(Number Cars Owned)是決定是否購買單車最重要的因素,而這種因素中汽車數量為0的購買單車的機率最高,也就說最想買單車,其次是有一輛汽車的顧客,我們接著分析:
將滑鼠移動到Number Cars Owned為0 的方塊中,可以查看明細:
可以看到該部分顧客購買單車的機率為63.15%,這裡面共有4006個案例,發生購買的為2530個,所以這部分顧客應該是廠商最喜歡的,也是他們將要重點挖掘的對象,原因你懂的。當然家裡有一汽車的也有很多想買單車的,我們也不能放棄,同樣我們點開這個節點接著分析。
嘿嘿,可以看到我們上面推測的年齡因素已經浮出水面了,家裡沒有車,然後年齡在45歲以下購買單車的機率已經飆升到73.49%,有圖有真相,45歲以下,然後還沒有小汽車,在大米國應該也算是屌絲一層級了,買輛單車騎騎也正常,同樣我們接著分析。
緊接著,影響的第三層因素也開始冒泡了,那就是地區位置,看圖中,不在北美位置的顧客購買幾率更高,而這裡面在家裡的孩子為0的購買幾率已經達到了92.50%,汗,廠商還等什麼,遇到這種顧客你就讓你的銷售坐等業績就可,咱們來分析一下這部分人群:家裡沒有車、年齡在45歲一下、不在北美地區、家裡也沒有孩子......我那個去,這部分顧客什麼情況,一種是直接型的屌絲層級,一種是絕對有品位的高富帥(孩子已經成家)。好吧,如果銷售面對的是這群客戶,你要做的就是升職、加薪、贏取白富美了...
咱們再來分析另外一種家裡有一個汽車的情況,先看圖:
結果:年齡在37到53之間,通勤距離小於10Miles,家裡孩子既不等於3也不等於4,然後年度營收在58000$以上,這部分顧客購買的幾率在74.83%左右。
這裡我們可以通過查看依賴關係網狀圖,瞭解一下我所有的這些元素對購買單車這種行為的影響:
通過拖動左側的滑動條可以依次查看所有的因素對買單車所造成的影響大小,下面最重要,這裡為家庭轎車數(Number Cars Owned)、其次是年齡(Age)、再次是地區(Region)....
以上是對決策樹演算法所推測出的結果進行分析,我們下一步要做的就是要驗證我們的分析結果正確率有多高,還會增加其它不同的演算法作對比,然後在根據正確率最好的演算法推測上面我們已有的顧客列表中找到購買單車機率最高的那群人。限於篇幅,後面的文章中我們繼續詳細的分析這些事情,下面我曬幾個結果圖,供大家玩味:
資料採礦準確性圖表:
圖中有我們剩下的那部分測試資料做出的驗證圖表,還有理想的最佳模型、最爛的隨機預測模型,和他們的機率,當然這中間就是我們決策樹預測的模型,這圖表中的維度和值就不分析了,自己品味。
同樣我們還可以根據我們的預測模型繪出利潤圖:
所謂的利潤圖,就是通過這種分析能給我們帶來的利潤,嗯,這個也是廠商關注的。
到這裡還剩下最後一步那就是將上面我們遺留下的顧客資訊表中找出那些可能購買單車的顧客,也就是資料採礦的最高產物,推測以後將要發生的事情。這一步我們留著下一篇介紹。
結語:大資料的時代到來了,咱們作為底層的碼農要時刻準備著,為自己保留飯碗的同時也能持續不斷的發揮碼農的能量,當我們修鍊到一定的境界時,遇到大資料,我們也可以從容得喊道:畜生、放開那些資料,讓我來!呵呵...國慶節了,祝大家國慶快樂。
部分內容參照微軟官方案例展示,微軟決策樹演算法詳細參考http://technet.microsoft.com/zh-cn/library/ms175312.aspx
大資料時代:基於微軟案例資料庫資料採礦知識點總結(Microsoft 決策樹分析演算法)