隨着大數據時代的到來,數據挖掘的重要性就變得顯而易見,幾種做爲最低層的簡單的數據挖掘算法,如今利用微軟數據案例庫作一個簡要總結。算法
應用場景介紹數據庫
其實數據挖掘應用的場景無處不在,不少的環境都會應用到數據挖掘,以前咱們沒有應用是由於尚未學會利用數據,或者說尚未體會到數據的重要性,如今隨着IT行業中大數據時代的到來,讓我一塊兒去擁抱大數據,閒言少敘,此處咱們就列舉一個最簡單的場景,一個銷售廠商根據以往的銷售記錄單,經過數據挖掘技術預測出一份可能會購買該廠商產品的客戶名單,我相信這也是不少銷售機構想要獲得的數據,固然這其中還有許多數據可供挖掘,好比:各類商品之間的關聯是否能帶來聯動銷售(啤酒和尿不溼、商品貨架商品擺放、網站導航商品佈局等)、影響每一種商品的屬性值等等吧,這些伴隨和數據挖掘的過程都會造成報告。網絡
技術準備數據結構
這裏有幾點技術儲備須要提到工具
(1)咱們利用微軟提供的案例數據倉庫(AdventureWorksDW2008R2),固然其實咱們應用的也就是兩張事實表,一張已有的歷史購買自行車記錄的歷史表,固然包括購買自行車顧客的一些供挖掘的屬性,另一張就是咱們將要挖掘的收集過來可能發生購買自行車的人員信息表,從這裏面挖掘出可能會買自行車的人。佈局
曬歷史銷售表結構:測試
包含一個主鍵記錄、顧客的生日、姓名、Email、婚姻情況、是否有房子、是否有車、年齡、上班距離遠近等屬性狀況,這後面還有一列是是否發生購買自行車,固然從三範式上講這種設計方式是不符合OLTP的,但此處是OLAP,也不是規範的事實表,這種結構通常經過一個view就能拼湊出來,咱這裏就不提這些基礎技術了。大數據
另一張表:網站
一樣是一張人員信息表,也是記錄的一些人員的屬性,固然這裏不會和已經銷售人員記錄的信息同樣,但會包含相同的屬性集合,好比:生日、年齡、年收入等等,咱們要作的就是從這種表裏面找到會買自行車的人。設計
(2)vs數據挖掘工具、安裝好數據庫配置好服務,這個都懂,沒啥可說的,但要實現這種目的咱們會使用三種數據挖掘算法,稍做介紹
Microsoft 決策樹:對於離散屬性,該算法根據數據集中輸入列之間的關係進行預測。它使用這些列的值或狀態預測指定的可預測列的狀態。具體地說,該算法標識與可預測列相關的輸入列。
Microsoft 聚類分析:該算法使用迭代技術將數據集中的事例分組爲包含相似特徵的分類。在瀏覽數據、標識數據中的異常及建立預測時,這些分組十分有用。簡單點就是找出相同一部分屬性的種類。
Microsoft Naive Bayes:Microsoft Naive Bayes 算法是由 Microsoft SQL Server Analysis Services 提供的一種基於貝葉斯定理的分類算法,可用於預測性建模。
這些算法有不少底層算法做支撐,咱們只須要記住他們的應用場景和不一樣算法所具備的特性便可。下面的分步驟分析過程我會總結每種算法能幹什麼,可以分析出什麼。
下面咱們進入主題,經過簡單的過程配置咱們來實現整個數據挖掘的過程,依次步驟以下
一、新建工程,配置數據源
這個沒有什麼可分析的,基於微軟案例數據庫創建數據鏈接,簡單的數據配置,實例名和用戶名和密碼鏈接數據倉庫便可
二、建立數據源視圖
這裏就是篩選出咱們想要數據挖掘的數據表,能夠選擇的是表或者視圖,咱們這裏要作的事很簡單,其實就是把上面的兩張表從數據庫裏鏈接出來,VS工具配置很簡單,根據它的提示咱們就能夠很輕鬆的配置出數據視圖。
這裏有幾個技巧能夠瀏覽兩張表數據,在所選表中右鍵選擇「瀏覽數據」,能夠查看裏面的列,還能分析數據中所佔比狀況,能夠採用相似於Excel的透視表、透視圖查看,也能夠經過圖表工具,例如:
此步驟是爲了讓咱們理解裏面的表數據,經過分析數據能夠先分析出數據表中能夠供咱們挖掘的數據列屬性有哪些,也能夠簡要推測影響咱們目標(購買自行車)這種行爲可能影響的屬性,好比:家裏有汽車的、年齡大於60或者小於10歲的、上班距離跨越好幾個城區的(好比從朝陽——海淀上班)、年收入百萬的等等吧按照常理會買自行車的概率仍是挺小的,下一步咱們用挖掘算法來逐一驗證咱們基於經驗的這些推測是否合理。
三、建立挖掘結構
這一步咱們分步驟細一點,逐過程講解
(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