此文從原講課ppt中,取一些素材,來解釋關聯規則的挖掘思路和應用方法。
1
通俗性與深入性的糾結
下筆(擊鍵)之前,為通俗性和理論性的衝突,頗糾結了一番,通俗科普博文,是否需要完全避開公式和推導?查趣味數學小冊子,其技巧是:趣例為載體,簡喻作引導,推導明道理,前瞻性概述--「學,然後知不足」。
所以,此文仍有一些簡單的推導,只需中學數學知識,但仍須靜心思量。
2 來自管理層的需求
設想某理想小型超市
, 採用
mini
版超市銷售系統
, 管理了
6種商品,記錄了
5個顧客的購物單(資料量如此之小,是為了簡單地說明思想)。
流水號所購物品清單
1啤酒、薄餅、牛奶
2烤鴨、薄餅、麵醬
3啤酒、烤鴨、薄餅、麵醬
4麵醬,雞蛋
5烤鴨、麵醬
經理不滿足常識性的定性描述,想知道商品間關聯,例如,顧客買了麵醬就會買烤鴨嗎?
要求挖掘出支援度
不小於
2/5(即至少同時被買兩次)的商品間的關聯。
下面先介紹樸素而費時的笨方法,後介紹聰明一些的方法。
記錄總數記為n,
n=5;
商品總數記為m,
m=6。
這裡的數值
2/5稱為支援度閾值
t,支援度 不小於
2/5的商品組成的集合稱為高頻集。
3樸素方法
3.1
模仿選舉計票方法統計單項高頻集
。把上面的
5條記錄視為
5張選票,模仿
「唱票-計票-
寫正字」的方法,逐條唱票
-計票,得票不少於兩票的商品如下:
單項統計
支援度2/5
3/53/5
4/5
解釋∶(1)
單項統計中看出
60%的顧客買了烤鴨、
60%的顧客買了麵餅、
80%的顧客買了麵醬。
(2)如果所購物品清單中間有
n條記錄(這裡
n=5),這裡掃瞄工作量與
n稱正比,用行話,稱為計算複雜度是
order(n
),或簡單記錄為
o(n),統計百分比在
傳統的統計中常見到。
3.2
模仿選舉計票方法統計雙項高頻集
商品總數記為m,
m=6, m
個物件的兩兩組合數目為
t=m*
(m-1)/2
,這裡t=15 ,
(與m2變化趨勢大致相同
),這一次選舉物件是
t種組合的每乙個「商品對」,逐條唱票-
計票,得票超過兩票的「同購商品對」如下
雙項統計
支援度2/5
2/53/5
2/5
從雙項統計中看出,
5個顧客中,有
60%的顧客買了烤鴨和麵醬。傳統的統計較少作這種組合統計工作。
3.3
模仿選舉計票方法統計三項高頻集,
類似地,得到高頻的同購
三項集只有一項:
三項統計
支援度2/5
這說明2/5=
40%的顧客同時買了烤鴨、麵餅和麵醬。
4 從高頻集匯出關聯規則
r1:烤鴨 --> 薄
餅、麵醬。支援度
40%,置信度為
66.6%
解釋:買
烤鴨的顧客佔
3/5,買了烤鴨又同時買了顧客佔
2/5,說明在買烤鴨的人當中又買了的佔=66.6%
。按樸素的,但不一定總是正確的看法,把買烤鴨視為原因,右邊的買的視為結果,現有資料表明,這種因果關係有
66.6%
的正確性(不是想當然拍腦袋得出的神仙數字)。
且慢宣稱找到了發財訣竅,因為對
3.3節
的結果還有另外兩種演繹,(推理方法如上):
r2:薄
餅 -->
烤鴨、麵醬
,支援度
40%,置信度為
66.6%
r3:麵醬 -->
薄餅、烤鴨
,支援度
40%,置信度為
50%而這些規則的運用之妙成乎於人,例如∶用r1
,將烤鴨降價以**薄
餅、麵醬,很可能會破產(一等置信度,導致了破產);用r2
將薄餅降價,以**烤鴨,可能會發財; (一等置信度,導致了發財);用r3
,引不起顧客的熱情。
可見,真理(知識)藏在資料中,還要人去去偽存真。
5 關聯規則不是因果關係
設有關聯規則:r4:
x-->
y s=
?c=
?它並不說明x是
y的原因,因為立刻可以寫出有同樣支援度的反方向規則,(置信度可能不同),r5:
y-->xs=
?c=?r4
僅提示,當
x發生時,
y發生的置信度為
c ,如果置信度
c=0.5
時,則相當於擲硬幣算命,不可靠,當c
比較大時,例如
0.7以上,就值得進一步考察,如果
x包含多個項:
x=a1a2
…..an
,檢查其中是否有多餘的項,此法可用於排除過敏原,或研究飲食習慣對某種疾病的影響等場合。
我們曾經發表過一種排除因果關係的方法,考察
x發生自然波動或者人工擾動時,如果
y的波動表現混沌,則可排除因果關聯,反之,則可進一步調查研究:例如啤酒和紙尿布的故事中,通過屬於管理範疇的調查,發現「
嬰兒之父下班為孩子買尿布時順手買回自己愛喝的啤酒」,使得挖掘出來的規則可理解、可相信。
6 樸素方法太笨,資料量稍大就不可行。
樸素方法關鍵就是「組合被選舉物件
--唱票
--計票」,
容易理解,容易實現,在小規模資料上是可用的,例如,想挖掘乙個民間藥方中的較重要成分,如果一共
10項,每項有
10個可能劑量,容易實現程式,現在的
pc機已經比較快了,能計算這樣的小規模問題。
但是,量變引起質變,當資料變得很大,此法就從可行變為不可行了
考察挖掘關聯規則實際過程,易見過程分兩大步:
(a)篩出高頻集。
給定支援度閾值
t ,模仿選舉的「唱票
-計票」把頻率高於
t的 單項集,雙項集,
…,k項集 找出來(如第
3節),這一步至少掃瞄資料庫k遍,而且,多項集之組合數量很大,比較費時間。
(b)計算置信度,比較簡單,左邊的支援度做分母,兩邊合起來的的支援度做分子(如第
3節)。
在第一步中,當商品總數
t比較大,例如實際大超市中,例如
t>105, 欲考察
k項商品之間關聯,當
k比較大,例如
k>10
時,涉及到組合**,也許,用高檔計算機也需要若干天,若干月,用行話描述,樸素方法的 scalability不好,有人把scalability譯為 規模伸縮性或者簡稱伸縮性。
有聰明一點的方法嗎?有。
下文中將看到,發表聰明方法的學者一舉成名,而那篇**創造了被引用次數
的奇蹟,下文將作簡介這一成果,同時,分析超高被引用**的特徵。
SparkSQL之關聯mysql和hive查詢
create database spark use spark create table dept deptno int 2 primary key,dname varchar 14 loc varchar 13 insert into dept value 10,accounting new yo...
字串匹配之樸素演算法和萬用字元擴充套件
字串匹配 給定乙個 t 1.n p 1.m t和p 中的任意元素屬於 有限的字元集合 求位移s使得 t s 1.s m p 1.m t 代表text 文字串 p 代表pattern 匹配串 有多種演算法可以實現 這裡只介紹最簡單 最容易理解 最笨的 樸素匹配演算法 t t1 t2 tn p p1 p...
C primer閱讀之關聯容器和動態記憶體
第11章 1.對map,關鍵字是const,不可改變。set裡的關鍵字也是不可改變的。2.map的insert操作 返回值是乙個pair,first成員是乙個迭代器,指向元素,second是插入成功與否。3.erase引數可以是迭代器或者key。4.對map使用下標,注意和陣列使用下標的區別。5.訪...