掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
大家可能聽說過用于宣傳數(shù)據(jù)挖掘的一個案例:啤酒和尿布;據(jù)說是沃爾瑪超市在分析顧客的購買記錄時,發(fā)現(xiàn)許多客戶購買啤酒的同時也會購買嬰兒尿布,于是超市調(diào)整了啤酒和尿布的貨架擺放,讓這兩個品類擺放在一起;結(jié)果這兩個品類的銷量都有明顯的增長;分析原因是很多剛生小孩的男士在購買的啤酒時,會順手帶一些嬰幼兒用品。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的大竹網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
不論這個案例是否是真實的,案例中分析顧客購買記錄的方式就是關(guān)聯(lián)規(guī)則分析法Association Rules。
關(guān)聯(lián)規(guī)則分析也被稱為購物籃分析,用于分析數(shù)據(jù)集各項之間的關(guān)聯(lián)關(guān)系。
1.1 基本概念
1.2 關(guān)聯(lián)規(guī)則Apriori算法
關(guān)聯(lián)規(guī)則方法的步驟如下:
Apriori算法是經(jīng)典的關(guān)聯(lián)規(guī)則算法。Apriori算法的目標(biāo)是找到最大的K項頻繁集。Apriori算法從尋找1項集開始,通過最小支持度閾值進行剪枝,依次尋找2項集,3項集直到?jīng)]有更過項集為止。
下面是一個案例圖解:
關(guān)聯(lián)規(guī)則目前在scikit-learn中并沒有實現(xiàn)。這里介紹另一個python庫mlxtend。
2.1 安裝
- pip install mlxtend
2.2 簡單的例子
- import pandas as pd
- item_list = [['牛奶','面包'],
- ['面包','尿布','啤酒','土豆'],
- ['牛奶','尿布','啤酒','可樂'],
- ['面包','牛奶','尿布','啤酒'],
- ['面包','牛奶','尿布','可樂']]
- item_df = pd.DataFrame(item_list)
- from mlxtend.preprocessing import TransactionEncode
- te = TransactionEncoder()
- df_tf = te.fit_transform(item_list)
- df = pd.DataFrame(df_tf,columns=te.columns_)
- from mlxtend.frequent_patterns import apriori
- # use_colnames=True表示使用元素名字,默認(rèn)的False使用列名代表元素, 設(shè)置最小支持度min_support
- frequent_itemsets = apriori(df, min_support=0.05, use_colnames=True)
- frequent_itemsets.sort_values(by='support', ascending=False, inplace=True)
- # 選擇2頻繁項集
- print(frequent_itemsets[frequent_itemsets.itemsets.apply(lambda x: len(x)) == 2])
- from mlxtend.frequent_patterns import association_rules
- # metric可以有很多的度量選項,返回的表列名都可以作為參數(shù)
- association_rule = association_rules(frequent_itemsets,metric='confidence',min_threshold=0.9)
- #關(guān)聯(lián)規(guī)則可以提升度排序
- association_rule.sort_values(by='lift',ascending=False,inplace=True)
- association_rule
- # 規(guī)則是:antecedents->consequents
選擇出來關(guān)聯(lián)規(guī)則之后,根據(jù)提升度排序后,可能最高提升度的規(guī)則是在我們常識范圍內(nèi),那這個規(guī)則的價值就不高。所以我們要在產(chǎn)生的規(guī)則中根據(jù)業(yè)務(wù)特點進行篩選,像開篇提到(啤酒->尿布)完全不同的品類之間的關(guān)聯(lián)。
筆者最近用關(guān)聯(lián)規(guī)則分析用戶的體檢報告記錄,也得出了關(guān)于各個病癥的有意義的關(guān)聯(lián),如并發(fā)癥,不同病癥相互影響等。
本分介紹關(guān)聯(lián)規(guī)則的基本概念和經(jīng)典算法Apriori,以及python的實現(xiàn)庫mlxtend使用。
總結(jié)如下:

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流