关联规则挖掘算法_基于Apriori关联规则的协同过滤算法
Apriori 算法
apriori關聯規則算法的原理設計較為簡單,著名的“啤酒和尿布”說的就是Apriori算法,通俗來講apriori旨在尋找頻繁項集,以幫助商家將消費者有可能一起搭配購買的物品放置在同一個地方,提高消費者的購物效率和良好的購物體驗感。Apriori還是十大數據挖掘算法之一,可見Apriori關聯規則算法的重要性。
(一)算法基本理論
1、基本概念
Apriori是最常用最經典的挖掘頻繁項集的算法,其核心思想是通過連接產生候選項及其支持度然后通過剪枝生成頻繁項集。在一個數據集中找出項之間的關系,比如購買鞋子用戶10%可能也會去購買襪子。該算 法通過計算3個值來尋找強關聯規則!
2、基本名詞解釋
1)事務:每一條交易稱為一個事務
2)項:交易的每一個物品稱為一個項
3)項集:包含零個或者多個項的集合叫做項集
4)K-項集:包含K個項的項集叫做K-項集,比如{cola,egg}叫做2-項集
5)頻繁項集:支持度大于等于某個閾值的項集就叫做頻繁項集
3、關鍵值:支持度、置信度、提升度,計算這個3個值來尋找強關聯規則
1)A->B支持度:表示同時購買A、B的訂單數占總訂單數的比例;
2)A->B置信度:表示購買A物品訂單同時購買了B物品訂單的比例,即等于同時購買A和B訂單數占購買A物品訂單數比例(條件概率)。置信度表示購買A物品有多少概率去購買B物品。
3)A->B提升度:表示購買A物品的用戶同時購買B物品的用戶數占購買B物品的比例,計算公式為=置信度/B物品占總數的比例。如果大于1表示正相關性越高,如果等于1表示沒有相關性,互相獨立,如果小于1則表示負相關性越高。一般在提升度大于3,則認為提升度是有價值的。
4、結論
A->B:購買A的用戶有【置信度】的概率去購買B,而這種情況發生的概率為【支持度】
1)滿足支持度和置信度的規則,稱之為【強關聯規則】,該又分【無效強關聯規則】和【有效強關聯規則】
2)無效強關聯規則:如果提升度<=1,則表示無效強關聯規則
3)有效強關聯規則:如果提升度>1,則表示有效強關聯規則
(二)算法實現案例演示
求最小支持度計數為2的候選項集及頻繁項集。(數據集)
樣例演示數據集(來源于網絡)
首先,找出頻繁“1項集”的集合,該集合記作L1。L1用于找頻繁“2項集”的集合L2,而L2用于找L3。如此下去,直到不能找到“K項集”。找每個Lk都需要一次數據庫掃描。
核心思想是:連接步和剪枝步。連接步是自連接,原則是保證前k-2項相同,并按照字典順序連接。剪枝步,是使任一頻繁項集的所有非空子集也必須是頻繁的。反之,如果某個候選的非空子集不是頻繁的,那么該候選肯定不是頻繁的,從而可以將其從CK中刪除。
簡單的講,1、發現頻繁項集,過程為(1)掃描(2)計數(3)比較(4)產生頻繁項集(5)連接、剪枝,產生候選項集 重復步驟(1)~(5)直到不能發現更大的頻集
Apriori 性質:任一頻繁項集的所有非空子集也必須是頻繁的。意思就是說,生成一個k-itemset的候選項時,如果這個候選項有子集不在(k-1)-itemset(已經確定是frequent的)中時,那么這個候選項就不用拿去和支持度判斷了,直接刪除。
比如:K項集{I1,I3,I5},如果任一個子集({I1},{I3},{I5},{I1,I3},{I1,I5},{I3,I5})不在之前的K-1項集的頻繁項集里,那么就把該{I1,I3,I5}候選項集去掉。
開始分析
第一次掃描: (左邊為候選項集C1,右邊為頻繁項集L1)
第二次掃描:(左邊為C2,右邊為L2)
去掉最小支持度小于2的項。
連接:是指產生候選項,如兩項{I1,I2},{I1,I3},三項{I1,I2,I3},{I1,I2,I4}等。
L2自身連接(根據算法性質,注意理解,這樣只需要對有可能成為頻繁項集的候選項集進行處理,提高效率):(如果看得出下一步結果,這一步以及剪枝可以省略,直接進行第三次掃描)
剪枝得到:(剪枝規則是將自身連接得到的C2,將次數小于最小支持度2的剪掉)
第三次掃描:(左邊為C3,右邊為L3)
得到最終結果:
如果購買I1,那么可以推薦I2,I3或者I2,I5給用戶搭配購買。
(三)算法優缺點
優點:Apriori算法使用Apriori性質來生產候選項集的方法,大大壓縮了頻繁集的大小, 取得了很好的性能。
缺點:每一次迭代都要遍歷整個數據進行計數計算和判斷,運行效率低。
(四)參考資料
[1] 參考公式,https://www.jianshu.com/p/26d61b83492e
[2] 參考案例,https://blog.csdn.net/qq_28697571/article/details/84678422
[3] 參考流程,https://www.jianshu.com/p/d0dc8c8bf465
今天的文章主要是Apriori算法的理論以及如何實現的案例流程思路,后續將用python語言來實現算法,進行頻繁項集的實戰挖掘,并公開到github,方便大家一起交流學習。
想學習python、數據分析、可視化、機器學習、深度學習、目標檢測、NLP情感分析中的哪些內容,歡迎大家留言,小編會根據大家的需要來寫哦,感謝大家的關注!
有不懂的地方或者文章有不足的地方,歡迎留言一起探討學習!覺得文章對你有幫助,點贊、關注、轉發喔!總結
以上是生活随笔為你收集整理的关联规则挖掘算法_基于Apriori关联规则的协同过滤算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 兴业银行爱奇艺信用卡年费是多少
- 下一篇: 李嘉诚说每个月存一千40年后变亿万富翁?