数据挖掘:模型选择——关联规则

关联规则介绍

关联规则是一种从大型数据库中发现事物间相关性的方法。

  • 关联:当某件事物发生时,其他事物也会发生。
  • 关联分析:两个或多个事物之间存在一定的关联,那么其中一个事物就能通过其他事物进行预测,其目的是挖掘数据之间的相关性和规律性。

比较常见的应用就是购物篮分析,分析用户购买产品的习惯,购买A产品后,购买B产品的概率。网上传的“啤酒和尿布”的故事,虽然是假的,但却是个比较好的例子,来说明事物之间关联性。

关联规则可以表示为如下式子:R:X→Y。比如尿布→啤酒,就是一条规则。

关联规则中的概念

项与项集:

  • 项:数据库中可不分割的最小单位信息,也叫项目,用符号i表示。(即单个商品,比如牛奶,尿布等
  • 项集:项的集合,设集合I={i1,i2,i3,……,ik}是项集,I中项目个数为k,集合称为k-项集。(集合中有k个商品就是k-项集,类似超市的采购清单

事务:假设I={i1,i2,i3,……,ik}是数据库中所有项构成的集合(即整个超市),给定一个交易数据库D,每个事务t是I的子集,每个交易都与一个唯一的标示符TID对应。(即每个人购物车里的商品情况
在这里插入图片描述

关联规则中重要的三个概念:

支持度

支持度:项集在整个D(所有数据,假设有N个数据)中出现的概率。某个商品组合出现的次数与总次数之比。其公式为:
在这里插入图片描述
这里{牛肉,鸡肉}的组合出现在t1,t4,t5,出现次数为3,一共的数据量为7(事务数),所以支持度为3/7。下一个同理。
在这里插入图片描述

最小支持度

对于出现次数不多的商品,往往不用去关注,为了衡量哪些商品出现得频繁,哪些商品出现得不频繁,提出了最小支持度的概念。这里的最小支持度是人为设定的。
在这里插入图片描述

置信度

置信度:购买A商品后,购买B商品的概率。
可看作条件概率。P(B|A) = P(AB)/P(A)
在这里插入图片描述
举个例子:计算牛肉→鸡肉间的置信度(购买牛肉后,买鸡肉的概率)。
{牛肉,鸡肉}=3/7,{牛肉}=4/7(牛肉出现了4次),所以,目标的置信度为3/4.
在这里插入图片描述

最小置信度

跟之前的最小支持度一样:

  • 最小支持度关心的是商品组合出现的次数要足够多,次数过少说明商品组合性太差,研究无意义;
  • 最小置信度关心的是商品之间的关联性要足够强,关联性不强说明这些商品之间没有什么相关性,研究无意义。

这个最小置信度也是人为设定的。
在这里插入图片描述

提升度

提升度:商品A的出现,对商品B的出现概率的提升程度。
提升度(A→B)=置信度(A→B)/支持度(B)
仅仅依靠支持度和置信度的不可靠,比如下面这个例子。通过计算发现肉牛和米饭的关联性很高,但给买牛肉的人推荐米饭是没有意义的,什么都不做的情况下,还有80%的人都会买米饭。
按照常识我们也知道这种做法是无意义的。(热门产品不需要去推荐,基于冷门产品推荐热门产品不可取,反过来才是我们想要的。)

在这里插入图片描述
引入提升度(Lift)来筛选挖掘的规则。
在这里插入图片描述
按照提升度计算后的结果,发现小于1,说明推荐无意义。
在这里插入图片描述

小结

举个例子:
在这里插入图片描述
{牛奶,面包}组合=0.6,P(面包|牛奶)=P(牛奶,面包)/P(牛奶)=0.75
在买牛奶的情况下,推荐面包这条规则的提升度为Lift(牛奶→面包)=0.75/0.8<1,所以不用推荐。
在这里插入图片描述
不去推荐,那么P(啤酒,鸡蛋)=0.2,推荐买啤酒的去买鸡蛋,P(鸡蛋|啤酒)=1/3>0.2,说明在买啤酒的条件下,购买鸡蛋的概率增加了,(具体增加了多少)再对这个指标进行量化,也就是提升率=1.67>1,因此,可以推荐。
在这里插入图片描述

基于X推荐Y:
在这里插入图片描述
:需要关注前提条件,即支持度和置信度都满足一定要求后,才能继续往下分析,计算提神度,而提升度过低,则无效。
在这里插入图片描述
关联规则的两个挖掘阶段
- 大部分的计算都集中在

Apriori算法

Apriori性质:频繁项集的所有非空子集都必须也是频繁的;如果一个项集是非频繁的,那它的所有超集也都是非频繁的(包括非频繁项集的集合,也都是非频繁的)。
Apriori性质是反单调的,其意义在于压缩搜索空间。

项集的格空间理论

在这里插入图片描述
举个例子:
在这里插入图片描述
1.通过项集间不断的交叉,生成所有的项集,一项集,二项集……四项集。但若对所有的项集进行计算,那么计算量会非常大,因此采用定理2.
2.如果说B是非频繁项集,那么包含B的项集也都是非频繁的,因此计算时可以去除,降低不必要的计算量。

生成频繁项集

举个例子:

  • 对给定数据库进行第一次扫描,得到候选一项集。其中{4}的支持度过小,因此删除不考虑,得到频繁一项集。
    在这里插入图片描述
  • 对频繁一项集进行组合,生成候选二项集。再对其进行扫描,找出其中支持度不满足要求的{1 2},{1 5},删除。得到频繁二项集。
    在这里插入图片描述
  • 用频繁一项集和频繁二项集进行组合,比如{1 3}和{1}组合,生成{1 3}不是三项,去掉。{1 3}和{2},得到{1 2 3},是三项,但是其中{1 2}是非频繁的二项集,因此也去掉。综上,最终得到频繁三项集{2 3 5}。
    在这里插入图片描述

构造关联规则

  • 对于三项集的子集,来计算强关联规则。{2 3}推出5,{3 5}推出2。
    在这里插入图片描述

Apriori算法特点

在这里插入图片描述

FP-growth算法

频繁模式树(Frequent-Pattern tree)压缩数据库,避免频繁地对数据库进行扫描,不用生成候选集来挖掘频繁项集的方法。
在这里插入图片描述

建立FP-tree

  • 1.对数据库进行扫描,把一项集的支持计数都列出来,再根据最小的支持度,去掉非频繁的一项集。
  • 2.根据支持计数的大小,对一项集由大到小进行排序。得到一个新的数据集
  • 3.再扫描一次数据集,得到FP-tree。
    在这里插入图片描述
  • 对于第一条数据。根据新生成的频繁一项集,对原始数据进行提取计数。根据频繁一项集的顺序构建子树。
    在这里插入图片描述
  • 接下来再查看第二条数据。
    在这里插入图片描述
  • 第三条数据。
    在这里插入图片描述
  • 第四条数据。
    在这里插入图片描述
  • 第五条数据。
    在这里插入图片描述

FP-tree优点

在这里插入图片描述

FP-tree挖掘频繁项集

在这里插入图片描述
举个例子:

  • 1.从FP-tree到条件模式库。先看f,f之前是空集,说明f的条件模式库是空的。c:3对应的是f:3,c:1对应的是空集。其他同理。
    在这里插入图片描述
  • 2.建立条件FP-tree。把共同的前缀合并起来。比如m,m的条件模型库为fca:2,fcab:1。最小支持度为0.5,记录数为5条,支持计数最小为2.5,取整为3。
    在这里插入图片描述
  • 3.通过建立条件模型库得到频繁项集
    在这里插入图片描述
    在这里插入图片描述
    FP-tree适合长模式({cp},{fcam},{fca},{fc}),Apriori算法适合短模式的。

参考资料

https://www.bilibili.com/video/BV1U741167o5?p=3
https://www.bilibili.com/video/BV167411X71K
https://www.cnblogs.com/lsqin/p/9342926.html
https://blog.csdn.net/Andy_shenzl/article/details/83084572#(8)%20Apriori%E7%AE%97%E6%B3%95%E6%8C%96%E6%8E%98%E9%A2%91%E7%B9%81%E9%A1%B9%E9%9B%86%F0%9F%8C%9F%F0%9F%8C%9F%F0%9F%8C%9F%F0%9F%8C%9F%F0%9F%8C%9F%E9%87%8D%E7%82%B9

猜你喜欢

转载自blog.csdn.net/AvenueCyy/article/details/105404542
今日推荐