第11章 使用Apriori算法進(jìn)行關(guān)聯(lián)分析(代碼)
-
關(guān)聯(lián)分析
-
關(guān)聯(lián)分析是一種在大規(guī)模數(shù)據(jù)集中尋找有趣關(guān)系的任務(wù)御板。這些關(guān)系可以有兩種形式:
頻繁項(xiàng)集(frequent item sets): 經(jīng)常出現(xiàn)在一塊的物品的集合影钉。
關(guān)聯(lián)規(guī)則(associational rules): 暗示兩種物品之間可能存在很強(qiáng)的關(guān)系。
-
交易號(hào)碼 | 商品 |
---|---|
0 | 豆奶草莓 |
1 | 草莓缩举,尿布,啤酒匹颤,辣椒醬 |
2 | 豆奶仅孩,尿布,黃瓜印蓖,餅干 |
3 | 黃瓜辽慕,餅干,尿布赦肃,啤酒 |
4 | 黃瓜溅蛉,啤酒,尿布他宛,黃瓜 |
頻繁項(xiàng)集指的就是那些經(jīng)常一起出現(xiàn)的物品集合船侧,比如{啤酒,尿布厅各,餅干}就是頻繁項(xiàng)集中的一個(gè)例子镜撩,而根據(jù)上表也可以找到尿布->啤酒這樣的關(guān)聯(lián)規(guī)則。而我們是要通過(guò)關(guān)聯(lián)分析大規(guī)模數(shù)據(jù)從而發(fā)現(xiàn)數(shù)據(jù)之間存在的有趣關(guān)系队塘,那么問(wèn)題來(lái)了琐鲁,什么樣的關(guān)系是有趣的呢?而這個(gè)有趣又是怎么定義的呢人灼?我們可以通過(guò)支持度(support)和可信度(置信度confidence)來(lái)定義围段。一個(gè)項(xiàng)集的支持度指的是數(shù)據(jù)集中包含該項(xiàng)集記錄所占的比例,上例中{豆奶}的支持度是2/5,{啤酒投放,尿布}的支持度是3/5奈泪;可信度是針對(duì)于像{尿布}->{啤酒}這樣的關(guān)聯(lián)規(guī)則來(lái)定義的,定義為:支持度({尿布,葡萄酒})/支持度(尿布).
-
Apriori 原理
-
Apriori算法優(yōu)缺點(diǎn)
優(yōu)點(diǎn):易編碼實(shí)現(xiàn)
缺點(diǎn):在大數(shù)據(jù)集上可能較慢
適用數(shù)據(jù)類型:數(shù)值型 或者 標(biāo)稱型數(shù)據(jù)涝桅。
-
Apriori 算法流程步驟
收集數(shù)據(jù):使用任意方法
準(zhǔn)備數(shù)據(jù):任何數(shù)據(jù)類型都可以拜姿,因?yàn)槲覀冎槐4婕?/p>
分析數(shù)據(jù):使用任意方法
訓(xùn)練數(shù)據(jù):使用Apiori算法來(lái)找到頻繁項(xiàng)集
測(cè)試算法:不需要測(cè)試過(guò)程
使用算法:用于發(fā)現(xiàn)頻繁項(xiàng)集以及物品之間的關(guān)聯(lián)規(guī)則
-
-
使用Apriori算法來(lái)發(fā)現(xiàn)頻繁集
Apriori 算法的兩個(gè)輸入?yún)?shù)分別是最小支持度和數(shù)據(jù)集
該算法首先會(huì)生成所有單個(gè)物品的項(xiàng)集列表
接著掃描交易記錄來(lái)查看哪些項(xiàng)集滿足最小支持度要求,那些不滿足最小支持度要求的集合會(huì)被去掉
燃盡后對(duì)生下來(lái)的集合進(jìn)行組合以聲場(chǎng)包含兩個(gè)元素的項(xiàng)集
接下來(lái)再重新掃描交易記錄冯遂,去掉不滿足最小支持度的項(xiàng)集
該過(guò)程重復(fù)進(jìn)行直到所有項(xiàng)集被去掉
-
生成候選項(xiàng)集
-
數(shù)據(jù)集掃描偽代碼
對(duì)數(shù)據(jù)集中的每條交易記錄 tran
對(duì)每個(gè)候選項(xiàng)集 can
檢查一下 can 是否是 tran 的子集: 如果是則增加 can 的計(jì)數(shù)值
對(duì)每個(gè)候選項(xiàng)集
如果其支持度不低于最小值蕊肥,則保留該項(xiàng)集
返回所有頻繁項(xiàng)集列表
-
-
從頻繁項(xiàng)集中挖掘關(guān)聯(lián)規(guī)則
頻繁項(xiàng)集可以使用Apriori算法尋找,當(dāng)然下來(lái)就是要找出關(guān)聯(lián)規(guī)則了蛤肌。我們知道壁却,假設(shè)有一個(gè)頻繁項(xiàng)集,它們之間就有可能有一條關(guān)聯(lián)規(guī)則裸准,即可以表示為:"...—>..."展东,但反過(guò)來(lái)并不一定成立(其中箭頭左邊對(duì)應(yīng)的集合為前件,箭頭右邊對(duì)應(yīng)的集合為后件)炒俱。在上一節(jié)盐肃,我們使用最小支持度來(lái)量化頻繁項(xiàng)集,對(duì)應(yīng)的权悟,采用可信度來(lái)量化關(guān)聯(lián)規(guī)則砸王。其中一條規(guī)則p—>H的可信度定義為:support(P|H)/support(P),為找到其中的關(guān)聯(lián)規(guī)則峦阁,我們可以先生成一個(gè)可能的規(guī)則列表处硬,然后測(cè)試每條規(guī)則的可信度,結(jié)合可信度的最小要求拇派,得到關(guān)聯(lián)規(guī)則荷辕。同尋找頻繁項(xiàng)集類似,我們可以為每個(gè)頻繁項(xiàng)集產(chǎn)生許多關(guān)聯(lián)規(guī)則件豌,這樣就會(huì)有很多的關(guān)聯(lián)規(guī)則產(chǎn)生疮方。結(jié)合Apriori原理,如果某條規(guī)則不滿足最小可信度要求茧彤,那么該規(guī)則的所有子集也就不滿足最小可信度要求骡显,據(jù)此我們可以減少需要測(cè)試的規(guī)則數(shù)目,簡(jiǎn)化問(wèn)題曾掂。
-
尋找關(guān)聯(lián)規(guī)則的思想
- 從一個(gè)頻繁項(xiàng)集開始惫谤,創(chuàng)建一個(gè)規(guī)則列表,首先將規(guī)則的右邊限定為一個(gè)元素珠洗,對(duì)這些規(guī)則進(jìn)行測(cè)試
- 合并剩下的規(guī)則來(lái)創(chuàng)建一個(gè)新的規(guī)則列表溜歪,規(guī)則的右邊限定為兩個(gè)元素
-
-
小節(jié)
關(guān)聯(lián)分析適用于發(fā)現(xiàn)發(fā)數(shù)據(jù)之間有趣關(guān)系的一個(gè)工作集,可以采用兩種方式许蓖,一種是使用頻繁項(xiàng)集蝴猪,另外一種是使用關(guān)聯(lián)規(guī)則
使用Apriori原理可以有效的減少數(shù)據(jù)庫(kù)上進(jìn)行檢查的集合的數(shù)目