本節書摘來自華章社群《python資料挖掘:概念、方法與實踐》一書中的第2章,第2.1節什麼是頻繁項集,作者[美] 梅甘·斯誇爾(megan squire),更多章節内容可以通路雲栖社群“華章社群”公衆号檢視
2.1 什麼是頻繁項集
尋找頻繁項集是一種計數活動。但是和從生成資料集中觀測到的項目的簡單計數(今天我們賣出了80個胡蘿蔔和100個馬鈴薯)相比,尋找頻繁項集稍有不同。确切地說,為了找出頻繁項集,我們要搜尋較大的組中共同出現的項集。有時候可以把這些較大的組視為超市交易或者購物籃,整個活動有時候稱為市場籃子分析。我們仍然采用超市的類比,在這些籃子中同時出現的物品有時候被視為在超市中購買的産品組合。例如,已知一組超市交易或者籃子,我們可能對籃子中{胡蘿蔔,馬鈴薯}的組合是否比{黃瓜、檸檬}的組合更頻繁出現感興趣。
頻繁項集挖掘的目的是發現一組交易中共同出現的有趣項目組合。換言之,如果我們發現某些組合在多個籃子中頻繁出現,則這種挖掘可能很有實用價值。如果我們發現的頻繁項集有些不同尋常或者有些意外,那就更加有趣了。在頻繁項集挖掘中令人滿意的有趣規則的典範是一再被傳頌的都市傳奇—“尿布與啤酒”。
2.1.1 都市傳奇“尿布與啤酒”
我記得第一次聽到這個故事是在1998年的一個資料挖掘研究所學生課程上。我的教授試圖解釋頻繁項集和關聯規則的實用性,他給我們班上的學生講了如下故事:
“中西部的一家連鎖超市欲挖掘頻繁項集,以便發現一同購買的有趣商品組合。他們的計劃是通過在商店中将這些産品放在一起,優化銷售業績。令他們高興的是,商店的資料挖掘團隊發現,周四下午5點~7點,男人們頻繁地購買尿布和啤酒。該商店将一個小的尿布陳列櫃移到啤酒通道中,結果兩種産品的銷售量同時飙升。”
我對這個故事表示懷疑,立刻提出了許多問題。這家商店是如何知道男人購買了這些東西?畢竟,這個故事發生的時候,商店的電子優惠卡或者獎勵卡尚未出現。這家商店怎麼可能選擇合适的尿布放入啤酒通道中間的小展示櫃?畢竟,尿布有5種不同的尺寸,至少有3種品牌,而且(我像一位初為人父的男人一樣快速學習)—一時興起地更換某種尺寸或者品牌不是好主意,那可能會帶來災難性的後果。
如果你相信這兩篇文章講述的細節,尿布與啤酒的故事則是說明早期資料挖掘可能性的一個示例:使用我們的資料庫産品,你可以查詢像尿布和啤酒這樣不尋常的模式!這一示例以某種方式擴充成了這個“真實發生”的故事,此後又随着事實的延伸,加入各種不同的細節及講述者的不同動機而演變成一個都市傳奇。在多年的傳頌中,這個故事的常見變種包括:
沃爾瑪進行了這項資料挖掘工作。
零售商利用發現的知識,在周四這天提高啤酒的價格。
購買啤酒的動機是作為照顧孩子的報酬(購買尿布想必是為了孩子)。
零售商對這些模式特别感興趣,因為尿布是有利可圖的商品。
實際上,這一故事的真相并不神奇,但是作為一個勵志案例它一直很受歡迎。如果你對頻繁項集或者關聯規則挖掘進行了研究,就會明白市場籃子分析在現實世界中應用的這個故事是個很恰當的例子。關于關聯規則的幾乎每本書、每篇文章和每次示範都用到了它。
2.1.2 頻繁項集挖掘基礎知識
出于我們的目的,我們将把尿布和啤酒的故事當做一個有用的隐喻。具體地說,我們可以使用這個故事中的術語,幫助定義市場籃子分析(或者頻繁項集挖掘)中的3個突出部分:
首先,為了進行市場籃子分析,我們需要一個市場。在這個隐喻中,市場就是真正的超市。
其次,我們需要一個籃子。在這個例子中,籃子是一次購物交易。有時候,我們使用“籃子”一詞,有時候,你也可能聽到“交易”一詞。
我們還需要商品(項目)。在這個隐喻中,為了購買要把零售商品放入籃子(或者交易)中。
隻要我們有市場、籃子和商品的概念,隻要這些東西的表現和我們所描述的相同,我們就很可能有一個可供挖掘頻繁項集的資料集。
但是,市場分析的故事中還埋藏着幾個假設,這些假設将影響我們是否能夠擁有可挖掘的資料集。是以,現在要明确這些假設:
商品和籃子之間應該是多對多的關系。籃子由許多商品組成,一件商品可以出現在許多籃子中。
不考慮商品的數量。不管購買的是6包尿布還是1包尿布,相關的事實都是籃子中有尿布。
某件商品可能不出現在任何一個籃子中(我确定大家都想到了不受歡迎的某一件商品),但是任何籃子都包含至少一件商品。空的籃子是不會讓人感興趣的!
籃子中商品的順序無關緊要。從這個隐喻的角度看,啤酒或者尿布哪一個先放進購物籃并不重要,哪一個放到傳送帶上、哪一個先進入收銀機也是如此。相反,我們将把購買的商品組合起來,比喻成一次交易或者一個籃子,而不管它們在籃子中的位置。
在市場籃子分析的這個階段,我們最感興趣的是找出頻繁項集,也就是在籃子中頻繁同時出現的項目組。在超市中,人們同時購買的某些商品組合很容易用常識猜出,但是有些組合則較為少見。蛋糕粉和糖霜是可預測的商品組合,但是啤酒和尿布這種組合則不同尋常。
有時候,某些組合因為天氣、假日或者地區偏好而比其他組合更可能出現。和任何資料挖掘活動一樣,重要的是了解你所研究的領域。在購物籃的例子中,由于不同的食物偏好,可能有廣泛的地區性差異。例如:
我生活在美國南部,我們商店中有許多在其他地區不太常見的有趣組合。例如,人們常常同時購買香草威化餅幹和橡膠,以便制作流行的甜食香蕉布丁。
在我所在的州,新年的常見食物包括豇豆(一種莢果)和羽衣甘藍(一種葉菜),是以在接近年底時包含這些商品的籃子可能增加。
我所住的地方很少下雪。每當天氣預報報告本地區将要下雪,人們都很驚慌,搶購商店中的所有牛奶和面包。雖然不管什麼天氣,牛奶和面包都是人們經常購買的商品,但是在下雪的日子裡,你可能發現牛奶和面包是更常見的頻繁項集。
我們可以用集合标記符表示這些項集:
有兩個項目的項集稱為2-項集或配對,有3個項目的項集稱為3-項集(或者三元組),以此類推。有時候,配對和三元組分别稱為“雙個體集”和“三個體集”。