关联规则

购物篮数据:

TID项集
1{面包, 牛奶}
2{面包, 尿布, 啤酒, 鸡蛋}
3{牛奶, 尿布, 啤酒, 可乐}
4{面包, 牛奶, 尿布, 啤酒}
5{面包, 牛奶, 尿布, 可乐}

关联分析除了用于购物篮数据外, 也可以用于生物信息学, 医疗诊断, 网页挖掘和科学数据分析等.

在对购物篮数据进行关联分析时, 需要处理两个关键的问题:
- 大数据集计算代价很高
- 发现的模式可能是偶然发生的, 不可信

关联规则算法

  1. 将购物篮数据转化为二元形式来表示, 如下表, 出现过为1, 没出现为0
TID面包牛奶尿布啤酒鸡蛋可乐
1110000
2101110
3011100
4111100
5111001

2. 计算项集支持度计数
- 项集: 包含k个项的集合称为k项集, k=0,1,… 如:
- 1项集: {面包}
- 2项集: {面包, 牛奶}
- 3项集: {面包, 牛奶, 啤酒}
- 支持度计数: 包含该项集的事务的个数(即购物篮中该项集出现过几次), 如上例中:
- {面包, 牛奶}的支持度计数为3
- {啤酒, 尿布}的支持度计数为3

  1. 求解关联规则的支持度置信度

定义:
- 关联规则:
形如项集X–>项集Y的表达式, 其中X与Y无交集, 则称之为一个关联规则
- 支持度:
一个关联规则X–>Y的支持度s=该规则组成的项集(X+Y)的支持度计数/总事务数.
如上例中: {面包, 牛奶} –> {啤酒} 的支持度={面包, 牛奶, 啤酒}的支持度计数1/总事务数5=0.4
- 置信度:
一个关联规则X–>Y的置信度=X+Y的支持度计数/X的支持度计数.
如上例中: {面包, 牛奶} –> {啤酒} 的支持度={面包, 牛奶, 啤酒}的支持度计数1/{面包, 牛奶} 的支持度3 = 1/3

注意:
为什么要用支持度和置信度?
- 支持度很低则说明是偶然发生的规则, 多半无意义, 因此支持度常用来删除那些无意义的规则
- 置信度越高, Y在包含X的事务中出现的可能性就越大, 这样推理具有可靠性

  1. 关联规则发现

定义:
- 关联规则发现
给定事务集合T, minsup(支持度阈值), minconf(置信度阈值), 找出大于阈值的规则的过程就是关联规则发现
- 频繁项集
支持度大于支持度阈值的项集称为频繁项集
- 强规则(强关联规则)
从频繁项集中提取出的高置信度的规则称为强规则
- 先验原理
如果一个项集是频繁的, 则它的所有子集也是频繁的
如果一个项集是非频繁的, 则它的所有超集(包含该项集的项集)也是非频繁的

算法:
- 蛮力法: 求出每个可能的规则的支持度和置信度, 挨个剔除.
这个方法代价很高, 从d个项中提取的可能规则总数为 3d2d+1+1 3 d − 2 d + 1 + 1
- Apriori算法
1. 产生频繁项集

1. 给定事务T, minsup支持度阈值, minconf置信度阈值
2. 扫描一遍T, 对每个一项集计数, 得出表C1={a:3, b:4, c:5, ...}.
   挑出大于minsup的一项集F1假设为[{a},{b},{c},{d}]
3. 根据F1得出所有二项集=[{a,b}, {a,c}, {a,d}, ...{c,d}]
4. 在扫描一遍T, 从3中产生的二项集筛出大于minsup的二项集F2假设为[{a, b}, {a,c}]
5. 根据F2得出所有三项集=[{a,b,c}], 重复34的过程, 直到不再产生新的频繁项集算法结束

第3步中如何得出所有k(此处为2)项集:
- 蛮力法: 把所有可能的k项集都列出来, 再挨个筛掉
- Fk1F1 F k − 1 ∗ F 1
- Fk1Fk1 F k − 1 ∗ F k − 1 :
对于所有的k-1频繁项集, 仅当他们的前k-2个项都相同, 才合并

关联分析中使用Hash树进行支持度计数的原理未搞懂 TODO
2. 从1产生的频繁项集中提取规则

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值