Apriori算法——用于求得物品之间的关联关系,也可用作推荐算法。
首先需要知道3个名词解释
支持度:support=P(AB),即AB同时发生的概率
置信度:confidence=P(B|A),即A发生的条件下B发生的概率
频繁项集:满足最小支持度的数据集合
最小支持度和最小置信度是人为设置的。
下面拿出实际例子:
薯片、可乐、鸡爪 | 鸡爪、可乐 |
薯片、可乐、鸡爪 | 泡面 |
薯片、泡面、鸡爪 | 薯片、鸡爪、可乐 |
观察到其中共有薯片、可乐、鸡爪、泡面4种元素,分别标记为ABCD。
Apriori采取逐层搜索迭代找出数据集项关系算出各个项集的支持度。此处设定最小支持度为0.4
P(A)=4/6 P(B)=4/6 P(C)=5/6 P(D)=2/6
此处可以看出P(D)并不满足
P(AB)=3/6 P(AC)=4/6 P(AD)=1/6 P(BC)=4/6 P(BD)=0 P(CD)=1/6
此处看出P(AD)、P(BD)、P(CD)并不满足
P(ABC)=3/6 P(ABD)=0 P(ACD)=1/6 P(BCD)=0
除了P(ABC)其余全部不满足
此处不必讨论ABCD情况
观察图形(将不满足支持度的项集涂黑),发现一个项集中元素越多,成为频繁项集就越苛刻,在若需要{ABC}成为频繁项集,需要{A}、{B}、{C}、{AB}、{AC}、{BC}都满足频繁项集才有可能。相同的,若是{D}不为频繁项集,那么{AD}、{BD}、{CD}也不会为频繁项集。
算法过程:
(1)扫描整个数据库,找出所有元素
(2)遍历求得所有项集中的支持度
(3)将低于支持度的项集丢弃
(4)基于剩下的项集,组成+1项项集
(5)重复234,直至剩下最后一项
缺点,由于每次都需要对数据进行遍历扫描,所以数据量多时运算量极大,效率较低。