python数据关联分析_关联分析(Apriori)详解和python实现

关联分析是一种数据挖掘技术,用于发现数据中隐藏的频繁项集和关联规则。Apriori算法是其中著名的算法,通过计算支持度和置信度来挖掘商品之间的关联关系。本文详细介绍了Apriori算法原理,包括支持度和置信度的概念,并提供了Python代码实现。通过Apriori算法,可以高效地处理大数据中商品的关联关系,避免全组合计算的高复杂度。
摘要由CSDN通过智能技术生成

关联分析

关联关系是一种非常有用的数据挖掘算法,它可以分析出数据内在的关联关系。其中比较著名的是啤酒和尿不湿的案例

交易号

清单

0

豆奶,莴苣

1

莴苣,尿布,啤酒,甜菜

2

豆奶,尿布,啤酒,橙汁

3

莴苣,豆奶,尿布,啤酒

4

莴苣,豆奶,尿布,橙汁

当超市在分析顾客的购物清单时发现一个比较奇怪的问题,为什么大部顾客在购买啤酒的时候还会买啤酒呢?后来经过超市的调查发现,顾客的妻子提醒丈夫买尿不湿时丈父会把自己的啤酒也一起带上。这是超市调查发现的尿不湿和啤酒的关系,如果数据量小我们还是可以处理的,但是涉及到大数据时,其复杂度就非常高,那我们有没有其它方式去寻找这种关系呢?其实我们可以使用关联算法去挖掘我们商品之间的关联关系,这些关系可以有两种形式:频繁项集或者关联规则。频繁项集(frequent item sets)是经常出现在一块的物品的集合(即经常被一起购买的商品),关联规则(association rules)暗示两种物品之间可能存在很强的关系。

支持度和置信度

为了有效定义频繁和关联,我们引入两个概念,支持度和置信度。

支持度(support),即事件发生的频率,记作

equation?tex=support(%5C%7BA%2C%20B%5C%7D)%20%3D%20num(A%5Ccup%20B)%20%3D%20P(A%20%5Ccap%20B) ,例如一共有5条记录,啤酒和尿布出现的次数是3次,这样啤酒的支持度就是 3 / 5 = 0.6,支持度越大表格商品出现的次数就越多。

置信度(confidence),置信度揭事了如果事件A发生了,则事件B发生的的概率,记作

equation?tex=confidence(A%20%5Cto%20B)%20%3D%20%5Cfrac%7Bsupport(%5C%7BA%20%2CB%5C%7D)%7D%7Bsupport(%5C%7BA%5C%7D)%7D%20

例如啤酒和尿布被购买时,橙汁也一起被购买的概率记作

equation?tex=confidence(%5C%7B%E5%95%A4%E9%85%92%2C%20%E5%B0%BF%E5%B8%83%5C%7D%20%5Cto%20%5C%7B%E6%A9%99%E6%B1%81%5C%7D)%20%3D%20%5Cfrac%7Bsupport(%5C%7B%5C%7B%E5%95%A4%E9%85%92%2C%20%E5%B0%BF%E5%B8%83%5C%7D%20%2C%5C%7B%E6%A9%99%E6%B1%81%5C%7D%5C%7D)%7D%7B(%5C%7B%E6%A9%99%E6%B1%81%5C%7D)%7D%20%3D%20%5Cfrac%7B%5Cfrac%7B1%7D%7B5%7D%7D%7B%5Cfrac%7B2%7D%7B5%7D%7D%20%3D%20%5Cfrac%7B1%7D%7B2%7D,置信度的值表示事件A和B同时发生后的概率占了A事件出现的概率的百份比,值越大表明买了啤酒和尿刷的顾客购买橙汁的概率比较大。

Apriori原理

由上面的介绍可以知道,我们需要计算所有组合的支持度和置信度,从而计算出所有可能被购买的频繁项集这样我们就可以对商品进行合理的布局。

支持度

下面为了说明问题我们先假设我们有n种商品,那我们所有的商品排列组合为

equation?tex=totalSupport%20%3D%20%5Csum_%7Bk%3D2%7D%5E%7Bn%7DC_%7Bn%7D%5E%7Bk%7D%20(%7Bk%3C%3Dn%7D)%EF%BC%881%EF%BC%89

其中k表示频繁集合中元素的个数,也就是说我们要运算出所有的频繁集合的话,时间复杂度为

equation?tex=O(totalSupport),如下图(来自网络)例示我们有四种商品0, 1, 2, 3,那我们就有

equation?tex=C_4%5E2%20%2B%20C_4%5E3%20%2B%20C_4%5E4%3D11种频繁集合,如果我们有1000种频繁集合的话,可想而知这个数据量是非常的庞大的。

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值