前言
本篇繼續我們的微軟挖掘算法系列總結,前幾篇我們分別介紹了:Microsoft決策樹分析算法、Microsoft聚類分析算法、Microsoft Naive Bayes 算法、Microsoft 時序算法,后續還補充了二篇結果預測篇、Microsoft 時序算法——結果預算+下期彩票預測篇,看樣子有必要整理一篇目錄了,不同的算法應用的場景也是不同的,每篇文章都有它自己的應用場景介紹,有興趣的同學可以參閱。本篇我們總結微軟挖掘算法系列中一款比較重要的算法:Microsoft關聯規則分析算法,根據馬克思哲學理論,所謂世間萬物皆有聯系,而且聯系是普遍的,此篇的Microsoft關聯規則算法就是用來挖掘關聯關系的典型算法,閑言少敘,我們直接進入正題。
應用場景介紹
關聯規則算法是在大量數據事例中挖掘項集之間的關聯或相關聯系,它典型的應用就是購物籃分析,通過關聯規則分析幫助我們發現交易數據庫中不同的商品(項)之間的聯系,找到顧客購買行為模式,如購買某一個商品對其它商品的影響。進而通過挖掘結果應用于我們的超市貨品擺放、庫存安排、電子商務網站的導航安排、產品分類、根據購買模式對用戶進行分類,相關產品推薦等等。
比較典型的為大家所熟知的就是:啤酒和尿布的故事
其實很多電子商務網站中在我們瀏覽相關產品的時候,它的旁邊都會有相關產品推薦,當然這些它們可能僅僅是利用了分類的原理,將相同類型的的產品根據瀏覽量進而推薦給你,這也是關聯規則應用的一種較簡單的方式,而關聯規則算法是基于大量的數據事實,通過數據層面的挖掘來告訴你某些產品項存在關聯,有可能這種關聯關系有可能是自身的,比如:牙刷和牙膏、筷子和碗...有些本身就沒有關聯是通過外界因素所形成的關系,經典的就是:啤酒和尿布,前一種關系通過常識我們有時候可以獲取,但后一種關系通過經驗就不易獲得,而我們的關聯規則算法解決的就是這部分問題。
技術準備
(1)微軟案例數據倉庫(AdventureWorksDW208R2),這里我們應用到兩張表:vAssocSeqLineItems 表和 vAssocSeqOrders 表,這兩張表典型的“一對多”的關聯關系,vAssocSeqOrders為訂單表,vAssocSeqLineItems 表為訂單明細表,兩者通過OrderNumber關聯,稍后的步驟我們會詳細的分析這兩張表內容
(2)VS2008、SQL Server、 Analysis Services
操作步驟
(1)我們這里還是利用上一期的解決方案,然后數據源,然后數據源視圖,很簡單的步驟,不明白的可以看我們前面幾篇文章,然后將這兩張表的主外鍵關聯上,我們來看圖:
很基礎的東西,這里不做過多的解釋,Orders為主表,Items為明細表,通過CustomerKey主鍵進行關聯,下面我們瀏覽下這兩張表里面的數據:
vAssocSeqOrders表內容很簡單:訂單號(邏輯主鍵)、客戶號(客戶表的外鍵)、地區、收入類型,別的沒啥可預覽的,這種表是太基礎的內容,來看另外一張表:
vAssocSeqLineItems表,訂單號(外鍵)、購買數量、購買產品,很簡單的一張表
(2)新建挖掘結構
這里我們新建這個數據的挖掘模型,很簡單的下一步、下一步就行,有不明白的可以參照我以前的內容或者私信我,我們來看幾個關鍵的步驟:
這里我們選擇Microsoft關聯規則算法,然后下一步:
這里我們標示好事例表和嵌套表,下一步我們指定定型數據
這這里面我們配置好鍵、和輸入、輸出預測列,然后起個名字:relevance
至此,我們的Microsoft關聯規則分析算法已經初步建立好了,下面一步我們來配置該算法幾個關鍵屬性值。
(3)參數配置
此種算法有兩個參數比較重要,我們來看:
Support:定義規則被視為有效前必須存在的事例百分比。也就是說作為關聯規則篩選的事例可能性,比如設置成10%,也就是說在只要在所有事例中所占比為10%的時候才能進行挖掘。
PRobability:定義關聯被視為有效前必須存在的可能性。該參數是作為結果篩選的一個預定參數,比如設置成10%,也就是說在預測結果中概率產生為10%以上的結果值才被展示。
我們將該模型的兩個參數設置為:
MINIMUM_PROBABILITY = 0.2
MINIMUM_SUPPORT = 0.01
我們部署該模型,然后運行,我們來查看結果。
結果分析
部署完程序之后,我們通過“挖掘模型查看器”進行查看分析,不廢話,我們直接看圖:
從上面的截圖中我們可以看到,Microsoft關聯規則算法有三個面板來展示結果:規則、項集、依賴關系網絡
下面我們分別來介紹這三個面板,第一個,規則:
上面有幾個條件篩選項,第一個就是設置最小概率值,也就是上面我們新建模型設置的參數,第二個是是篩選規則,通過它我們找到相應的產品方便我們查看,還有一個重要性的參數,同樣的對于下面結果中的第二列可能性列,最大行數設置顯示的行數。
下面結果的表格中,第一列概率的值就是產品之前會產生關聯的概率,按照概率從大到小排序,第二列為可能性,該度量規則的有用性。該值越大則意味著規則越有用,設置該規則的目的是避免只使用概率可能發生誤導,比如有時候超市里舉行促銷活動會每個人都免費給一間物品,如果僅僅根據概率去推測,這件物品的概率將是1,但是這個規則是不準確的,因為它沒有和其它商品發生任何關聯,也就是說該值是無意義的,所以才出現了“重要性”列。
第三列即為我們的挖掘出來的結果項,前面為已有的產品項,‘—>’后面的即為推測的產品項,我們舉個例子,比如:
經過排序可以看到,上圖中的該條規則項為關聯規則最強的一種組合:前面的為:山地自行車(Mountain-200)、山地自行車內胎(Mountain Tire Tube)然后關聯關系最強的為:自行車輪胎(HL Mountain Tire)
嗯,有道理的很呀,有了山地自行車了,然后同樣也具備山地自行車內胎,剩下的就是需要自行車輪胎了。
其它的也是同樣的分析方法,這里我們就不分析了,有興趣的可以自己分析,嘿..我看到上面的第三條:
自行車(Road-750)、水壺(Water Bottle)->自行車水壺框(Road Bottle Cage)
....自行車、水壺,肯定得買個自行車水壺框了......
這個水壺好有個性,下面我們來具體看看跟這個利器有關的商品有哪些....嘿嘿...我們來看圖:
我那個去....瞅瞅...第一個結果:水壺框(Road Bottle Cage、Mountain Bottle Cage)...下面我目測了下...我可以明確的告訴你,丫的..這個名字叫Water Bottle(水壺...嘿嘿原諒我的E文能力)的利器最相關的就是水壺框(Bottle Cage)了...
超市里東西怎么擺放? 網站上該產品的相關推薦該推薦神馬? 有一個顧客已經買了這個東西你推薦它啥懂了吧?......
下面我們來看第二個面板能告訴我們什么,我們打開“項集”面板:
這個面板也簡單的很,上面有幾個篩選框設置我們的最低支持數,最小的項集大小,最大行數,這個沒啥說的,很簡單,下面的結果集顯示的為我們的數據集合中“支持”的事例集合個數、然后“大小”就是該規則下里面的項集的個數,第三列就是項集的詳細了。
我去...上面我們分析的水壺(Water Bottle)竟然排在了第一行,該行中的項集明細為:山地自行車(Mountain-200)、水壺(Water Bottle)、自行車水壺框(Road Bottle Cage),第二行也有,看來這廝看來很有分析價值,我們后續接著分析,嘿嘿
我們進入第三個面板“依賴關系網絡”,我們來看:
這幅圖已經很熟悉了吧,前幾篇文章中均有介紹,分析各種產品之間的關聯關系的強弱,拖動右側的滑動條然后進行分析
嘿嘿...我小心翼翼的拖動了這個滑動條...試圖找找上面我們分析的哪款利器(Water Bottle):
嘿嘿...找到了,上圖中就標示了這玩意相關的商品,我們來看Mountain Bottle Cage、Road Bottle Cage這兩個都是雙向關聯,然后Road-750、Cycling Cap、Hydration Pack...
其它的商品也利用這種規則進行分析,有興趣的可以自己分析。
推測結果導出
我們到此步驟直接將該模型的分析結果進行預測,暫且不驗證其準確性,直接將結果導出,來看看該算法的應用項,我們進入“挖掘模型預測”:
在下面的網格中設置我們的挖掘篩選規則,點擊“源”,選擇“預測函數”,選擇PredictAssociation,將vAssocSeqLineItems,將其拖到網格中 PredictAssociation 函數的“條件/參數”框。然后設置該參數為[Association].[v Assoc Seq Line Items],3
我們點擊運行,直接來查看結果:
看,上面的Microsoft關聯規則算法給我們推薦出來關聯性最強的三種產品,分別為:Sport-100、Water Bottle、Patch kit...
當然有時候我需要只查看某一種商品,不關系其它的產品有什么關聯關系,我們來做單獨查詢,我們在菜單中的“挖掘模型”,然后選擇“單獨查詢”:
點擊開單獨篩選的條件框:
在“嵌套表輸入”對話框中,選擇“鍵列”窗格中的 Touring Tire
我們點擊運行,來查看結果:
可以看到這里我們只是篩選出了該商品的關聯關系結果集,當然這里我們可以顯示出該產品之間的關聯的關系值,這里我們直接寫語句:
點擊運行,我們來看結果:
這里我們能看到,商品、支持的事例數,可能行、概率等明細值。
對于Microsoft關聯規則算法還有一種更有趣的應用就是,根據現有的顧客已經買的的產品,然后利用它自己的挖掘模型進行推測,推測出這個顧客將下一個買什么產品,比如上面的例子中,如果某個顧客已經買了山地自行車、自行車內胎,那么利用該模型它會自動推測出該顧客下一步將會買自行車輪胎,這個用法其實很關鍵,通過該方法預測已經能推測出顧客下一步的購買意向!...
如果將該挖掘模型利用到電子商務網站...那么他們推薦的商品將更準確,同樣所得到的精準銷售也更到位...結果你懂的!
我們來看步驟:
我們來選擇應用的事例表:
我們來選擇兩者的關聯關系,可以右鍵直接編輯:
然后編輯篩選函數,直接看圖:
點擊查看結果:
可以看到,這個顧客編號為:18239的他將買優先買三個產品:Water Bottle、Road-750、Touring-1000,后面還列出他的概率和可能性...
嘿嘿..我們打開數據庫來看看這個顧客的情況:
.....嘿嘿...這個顧客已經買了兩個商品了,Road-250、Road Bottle Cage,根據上面的推算法則...這個顧客應該馬上急需要買一個叫做Water Bottle的神器...用來喝水
然后,我們將這個結果保存到數據庫..一段簡單的代碼就能搞出那些顧客急需要什么商品...
他們最可能買的商品有哪些....,剩下的工作你懂得!
結語
本篇文章到此結束了...結語就是我們后面還會繼續分析其它的算法,有興趣的童鞋可以提前關注。上面其實還有幾部分需要補充,就是準確性驗證和篩選條件挖掘,比如我想知道某些特定客戶群體他們的購買的產品關聯規則等等吧,后續文章繼續分析這些問題。
文章的最后我們給出前幾篇算法的文章連接:
Microsoft決策樹分析算法總結
Microsoft聚類分析算法總結
Microsoft Naive Bayes 分析算法
Microsoft算法結果預測篇
Microsoft時序算法總結
Microsoft 時序算法——結果預算+下期彩票預測篇
如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。
新聞熱點
疑難解答