機器學習-Apriori

積跬步以致千里,積怠惰以致深淵

主要內(nèi)容

“啤酒與尿布”的例子相信很多人都聽說過吧,故事是這樣的:在一家超市中霍转,人們發(fā)現(xiàn)了一個特別有趣的現(xiàn)象荐绝,尿布與啤酒這兩種風馬牛不相及的商品居然擺在一起。但這一奇怪的舉措居然使尿布和啤酒的銷量大幅增加了避消。這可不是一個笑話低滩,而是一直被商家所津津樂道的發(fā)生在美國沃爾瑪連鎖超市的真實案例。原來岩喷,美國的婦女通常在家照顧孩子恕沫,所以她們經(jīng)常會囑咐丈夫在下班回家的路上為孩子買尿布,而丈夫在買尿布的同時又會順手購買自己愛喝的啤酒纱意。這個發(fā)現(xiàn)為商家?guī)砹舜罅康睦麧櫳羲荩侨绾螐暮迫鐭熀s又雜亂無章的數(shù)據(jù)中,發(fā)現(xiàn)啤酒和尿布銷售之間的聯(lián)系呢?這種從大規(guī)模的數(shù)據(jù)中發(fā)現(xiàn)物品間隱含關系的方法被稱為關聯(lián)分析偷霉,也就是本文要主要研究的一種常用的分析方法迄委,Apriori算法是最著名的關聯(lián)規(guī)則挖掘算法之一。下面就圍繞該算法展開學習类少。

關聯(lián)分析

關聯(lián)分析是在大規(guī)模數(shù)據(jù)集中尋找有趣關系的任務跑筝。這些關系可以有兩種形式:

1、頻繁項集

2瞒滴、關聯(lián)規(guī)則

頻繁項集(frequent item sets)是經(jīng)常出現(xiàn)在一塊兒的物品的集合曲梗,關聯(lián)規(guī)則(association rules)暗示兩種物品之間可能存在很強的關系赞警。

下面用一個例子來說明這兩種概念:圖1給出了某個雜貨店的交易清單。

圖1 某雜貨店交易清單

頻繁項集是指那些經(jīng)常出現(xiàn)在一起的商品集合虏两,圖中的集合{葡萄酒,尿布,豆奶}就是頻繁項集的一個例子愧旦。從這個數(shù)據(jù)集中也可以找到諸如尿布->葡萄酒的關聯(lián)規(guī)則,即如果有人買了尿布定罢,那么他很可能也會買葡萄酒笤虫。使用頻繁項集和關聯(lián)規(guī)則,商家可以更好地理解顧客的消費行為祖凫,所以大部分關聯(lián)規(guī)則分析示例來自零售業(yè)琼蚯。

我們用支持度和可信度來度量這些有趣的關系。一個項集的支持度(support)被定義數(shù)據(jù)集中包含該項集的記錄所占的比例惠况。如上圖中遭庶,{豆奶}的支持度為4/5,{豆奶,尿布}的支持度為3/5稠屠。支持度是針對項集來說的峦睡,因此可以定義一個最小支持度,而只保留滿足最小值尺度的項集权埠。

可信度置信度(confidence)是針對關聯(lián)規(guī)則來定義的榨了。規(guī)則{尿布}?{啤酒}的可信度被定義為"支持度({尿布,啤酒})/支持度({尿布})",由于{尿布,啤酒}的支持度為3/5攘蔽,尿布的支持度為4/5龙屉,所以"尿布?啤酒"的可信度為3/4。這意味著對于包含"尿布"的所有記錄满俗,我們的規(guī)則對其中75%的記錄都適用叔扼。

Apriori原理

假設我們有一家經(jīng)營著4種商品(商品0,商品1漫雷,商品2和商品3)的雜貨店瓜富,2圖顯示了所有商品之間所有的可能組合:

圖2 集合{0,1,2,3,4}中所有可能的項集組合

對于單個項集的支持度,我們可以通過遍歷每條記錄并檢查該記錄是否包含該項集來計算降盹。對于包含N中物品的數(shù)據(jù)集共有2^N-1種項集組合与柑,重復上述計算過程是不現(xiàn)實的。

研究人員發(fā)現(xiàn)一種所謂的Apriori原理蓄坏,可以幫助我們減少計算量价捧。Apriori原理是說如果某個項集是頻繁的,那么它的所有子集也是頻繁的涡戳。更常用的是它的逆否命題结蟋,即如果一個項集是非頻繁的,那么它的所有超集也是非頻繁的渔彰。

在圖3中嵌屎,已知陰影項集{2,3}是非頻繁的推正。利用這個知識,我們就知道項集{0,2,3}宝惰,{1,2,3}以及{0,1,2,3}也是非頻繁的植榕。也就是說,一旦計算出了{2,3}的支持度尼夺,知道它是非頻繁的后尊残,就可以緊接著排除{0,2,3}、{1,2,3}和{0,1,2,3}淤堵。

圖3 圖中給出了所有可能的項集寝衫,其中非頻繁項集用灰色表示。

使用Apriori算法來發(fā)現(xiàn)頻繁項集

前面提到拐邪,關聯(lián)分析的目標包括兩項:發(fā)現(xiàn)頻繁項集和發(fā)現(xiàn)關聯(lián)規(guī)則慰毅。首先需要找到頻繁項集,然后才能獲得關聯(lián)規(guī)則(正如前文所講庙睡,計算關聯(lián)規(guī)則的可信度需要用到頻繁項集的支持度)。

Apriori算法是發(fā)現(xiàn)頻繁項集的一種方法技俐。Apriori算法的兩個輸入?yún)?shù)分別是最小支持度和數(shù)據(jù)集乘陪。該算法首先會生成所有單個元素的項集列表。接著掃描數(shù)據(jù)集來查看哪些項集滿足最小支持度要求雕擂,那些不滿足最小支持度的集合會被去掉啡邑。然后,對剩下來的集合進行組合以生成包含兩個元素的項集井赌。接下來谤逼,再重新掃描交易記錄,去掉不滿足最小支持度的項集仇穗。該過程重復進行直到所有項集都被去掉或直至包含個數(shù)等于所有候選元素個數(shù)的頻繁項集流部。

從頻繁集中挖掘相關規(guī)則

解決了頻繁項集問題,下一步就可以解決相關規(guī)則問題纹坐。

要找到關聯(lián)規(guī)則枝冀,我們首先從一個頻繁項集開始。從雜貨店的例子可以得到耘子,如果有一個頻繁項集{豆奶,萵苣}果漾,那么就可能有一條關聯(lián)規(guī)則“豆奶?萵苣”。這意味著如果有人購買了豆奶谷誓,那么在統(tǒng)計上他會購買萵苣的概率較大绒障。注意這一條反過來并不總是成立,也就是說捍歪,可信度(“豆奶?萵苣”)并不等于可信度(“萵苣?豆奶”)户辱。

前文也提到過鸵钝,一條規(guī)則P?H的可信度定義為support(P | H)/support(P),其中“|”表示P和H的交集焕妙〗祝可見可信度的計算是基于項集的支持度的。

圖4給出了從項集{0,1,2,3}產(chǎn)生的所有關聯(lián)規(guī)則焚鹊,其中陰影區(qū)域給出的是低可信度的規(guī)則痕届。可以發(fā)現(xiàn)如果{0,1,2}?{3}是一條低可信度規(guī)則末患,那么所有其他以3作為后件(箭頭右部包含3)的規(guī)則均為低可信度的研叫。

圖4 頻繁項集{0,1,2,3}的關聯(lián)規(guī)則網(wǎng)格示意圖

可以觀察到,如果某條規(guī)則并不滿足最小可信度要求璧针,那么該規(guī)則的所有子集也不會滿足最小可信度要求嚷炉。以圖4為例,假設規(guī)則{0,1,2} ?{3}并不滿足最小可信度要求探橱,那么就知道任何左部為{0,1,2}子集的規(guī)則也不會滿足最小可信度要求申屹。可以利用關聯(lián)規(guī)則的上述性質(zhì)屬性來減少需要測試的規(guī)則數(shù)目隧膏,類似于Apriori算法求解頻繁項集哗讥。

總結

關聯(lián)分析是用于發(fā)現(xiàn)大數(shù)據(jù)集中元素間有趣關系的一個工具集,可以采用兩種方式來量化這些有趣的關系胞枕。第一種方式是使用頻繁項集杆煞,它會給出經(jīng)常在一起出現(xiàn)的元素項。第二種方式是關聯(lián)規(guī)則腐泻,每條關聯(lián)規(guī)則意味著元素項之間的“如果……那么”關系决乎。

發(fā)現(xiàn)元素項間不同的組合是個十分耗時的任務,不可避免需要大量昂貴的計算資源派桩,這就需要一些更智能的方法在合理的時間范圍內(nèi)找到頻繁項集构诚。能夠?qū)崿F(xiàn)這一目標的一個方法是Apriori算法,它使用Apriori原理來減少在數(shù)據(jù)庫上進行檢查的集合的數(shù)目铆惑。Apriori原理是說如果一個元素項是不頻繁的唤反,那么那些包含該元素的超集也是不頻繁的。Apriori算法從單元素項集開始鸭津,通過組合滿足最小支持度要求的項集來形成更大的集合彤侍。支持度用來度量一個集合在原始數(shù)據(jù)中出現(xiàn)的頻率。

關聯(lián)分析可以用在許多不同物品上逆趋。商店中的商品以及網(wǎng)站的訪問頁面是其中比較常見的例子盏阶。

每次增加頻繁項集的大小,Apriori算法都會重新掃描整個數(shù)據(jù)集闻书。當數(shù)據(jù)集很大時名斟,這會顯著降低頻繁項集發(fā)現(xiàn)的速度脑慧。FP-growth算法,和Apriori算法相比砰盐,該算法只需要對數(shù)據(jù)庫進行兩次遍歷闷袒,能夠顯著加快發(fā)現(xiàn)頻繁項集的速度。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岩梳,一起剝皮案震驚了整個濱河市囊骤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌冀值,老刑警劉巖也物,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異列疗,居然都是意外死亡滑蚯,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進店門抵栈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來告材,“玉大人,你說我怎么就攤上這事古劲〕飧常” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵绢慢,是天一觀的道長灿渴。 經(jīng)常有香客問我洛波,道長胰舆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任蹬挤,我火速辦了婚禮缚窿,結果婚禮上,老公的妹妹穿的比我還像新娘焰扳。我一直安慰自己倦零,他們只是感情好,可當我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布吨悍。 她就那樣靜靜地躺著扫茅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪育瓜。 梳的紋絲不亂的頭發(fā)上葫隙,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天,我揣著相機與錄音躏仇,去河邊找鬼恋脚。 笑死腺办,一個胖子當著我的面吹牛毕泌,可吹牛的內(nèi)容都是我干的闽巩。 我是一名探鬼主播肢藐,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼哆键,長吁一口氣:“原來是場噩夢啊……” “哼杆兵!你這毒婦竟也來了材原?” 一聲冷哼從身側(cè)響起窿侈,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤念秧,失蹤者是張志新(化名)和其女友劉穎灿意,沒想到半個月后估灿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡缤剧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年馅袁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荒辕。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡汗销,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出抵窒,到底是詐尸還是另有隱情弛针,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布李皇,位于F島的核電站削茁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏掉房。R本人自食惡果不足惜茧跋,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卓囚。 院中可真熱鬧瘾杭,春花似錦、人聲如沸哪亿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蝇棉。三九已至讨阻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間篡殷,已是汗流浹背钝吮。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人搀绣。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓飞袋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親链患。 傳聞我的和親對象是個殘疾皇子巧鸭,可洞房花燭夜當晚...
    茶點故事閱讀 45,851評論 2 361

推薦閱讀更多精彩內(nèi)容