烤鴨 麵餅和甜麵醬之樸素關聯

2021-06-11 18:37:34 字數 3805 閱讀 2109

此文從原講課ppt中,取一些素材,來解釋關聯規則的挖掘思路和應用方法。

通俗性與深入性的糾結

下筆(擊鍵)之前,為通俗性和理論性的衝突,頗糾結了一番,通俗科普博文,是否需要完全避開公式和推導?查趣味數學小冊子,其技巧是:趣例為載體,簡喻作引導,推導明道理,前瞻性概述--「學,然後知不足」。

所以,此文仍有一些簡單的推導,只需中學數學知識,但仍須靜心思量。

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.訪...