文章出處

隨著大數據時代的到來,數據挖掘的重要性就變得顯而易見,幾種作為最低層的簡單的數據挖掘算法,現在利用微軟數據案例庫做一個簡要總結。

應用場景介紹

其實數據挖掘應用的場景無處不在,很多的環境都會應用到數據挖掘,之前我們沒有應用是因為還沒有學會利用數據,或者說還沒有體會到數據的重要性,現在隨著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


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()