关联规则

关联规则(AssociationRules),无监督学习方法,用于知识发现。

其可以用于给数据进行标注,但缺点是其结果难以进行评估。

关联规则的最经典的案例就是购物篮分析。同样也可用于电影推荐、约会网站或者药物间的相互副作用。

若X,Y均为项集,且X⊂I,Y⊂I,并且X∩Y= ∅ ,用蕴含式X =>Y表示一个关联规则。它表示某些项(X项集)在一个事务中的出现,可推导出另一些项(Y项集)在同一事务中也出现 。这里,“=>”称为“关联”操作,X称为关联规则的前提, Y称为关联规则的结果。

事物和项

数据挖掘用到的基本数据集记为D,它是由事务构成的,一般多存储于事务数据库中。事物数据库表示为D={t1,t2,…,tm,…,tq}, 事务则表示为tk(k=1,2,…,n)。每一个事务可再细分,表示为tk={i1,i2,…,in,…,ip},im(m=1,2,…,p)称为项(item)。「所以事务是由若干个项组成的集合。」

每个事务可以用唯一的标识符事务编号TID来标识。设I={i1,i2,…,ip}是D中全体数据项组成的集合,I的任意子集X称为D中的项集(itemset)。若项集中项的个数为k,称为k项集(k-itemset)。「频繁项集是指出现次数较多的项集。」

支持度

支持度表示该数据项在事务中出现的频度。数据项集X的支持度support(X)是D中包含X的事务数量与D的总事务数量之比,如下公式所示:

关联规则X=>Y的支持度等于项集X∪Y的支持度,如下公式所示:

如果support(X)大于等于用户指定的最小支持度minsup,则称X为频繁项目集,否则称X为非频繁项目集。

置信度

置信度也称为可信度,规则 X=>Y 的置信度表示D中包含X的事务中有多大可能性也包含Y。表示的是这个规则确定性的强度,记作confidence(X=>Y)。通常,用户会根据自己的挖掘需要来指定最小置信度阈值,记为minconf。

如果数据项集X满足support(X) >= minsup,则X是频繁数据项集。若规则X=>Y同时满足confidence(X=>Y)>=minconf,则称该规则为强关联规则,否则称为弱关联规则。一般由用户给定最小置信度阈值和最小支持度阈值。发现关联规则的任务就是从数据库中发现那些置信度、支持度大于等于给定最小阈值的强关联规则。

Lift

Lift定义为:

如果一个规则的lift值等于1,这表示前提和结论对应的事件相互独立;如果lift值大于1,指示了两个事件之间的相互依赖程度,值越大,关联越强;如果lift值小于1,表明一个item的出现对其他item的出现存在消极影响(相斥),反之亦然(其中一个出现另一个一般不会出现)。lift的意义在于其即考虑了置信度也考虑了整个数据集中结论的支持度。

Conviction

Conviction,用来表示规则预测出错的概率,定义为:

在有了这些可计算的指标后,还需要给这些指标设定一个阈值,关联规则只有满足最小支持度阈值和最小置信度阈值,这条规则才能认为是有趣的。而且关联规则的生成可分以下两个步骤:

利用最小支持度阈值从数据库中找出所有的频繁项集;

利用最小置信度阈值从这些频繁项集中生成规则。

关联规则的生成规则的阶段是直接的,但寻找频繁项集却是非常耗时的,常用的高效的算法有Apriori,FP-growth等。


计算置信度与支持度

为了更好帮助大家理解置信度与支持度,请看下面这个例子:

  • 生成频繁项集

  • 生成频繁项集是Apriori算法的核心,如何更快、更有效的生成频繁项集是算法的关键。下图是生成频繁项集的拓扑图:

  • 为了帮助大家理解,在此我用一个虚拟交易数据来说明生成频繁项集的具体过程。设事务有一数据库D,其中有四个事务记录如表所示:

假设最小支持度为50%,那么我们要这样生成频繁项集嘞?

  • 步骤1:扫描事务集,「得到候选1项集C1」,然后计算每一项的支持度,从而构建下表:

  • 对C1中的各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于等于该阈值的项,「得1项频繁集L1」

L1与L1做连接得到候选2项集C2,并计算各项支持度,接下来就是剪枝步,由于C2的每个子集都是频繁项集,所以没有项集从C2中剔除。

对C2中的各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于等于该阈值的项,「得2项频繁集L2」

L2与L1连接得候选3项集C3,并计算每一项的支持度。接下来是剪枝步。L2余L1连接得所有项集为:{I1,I2,I3},{I1,I3,I5},{I2,I3,I5},{I1,I2,I5}。根据Apriori算法性质,频繁项集的所有非空子集必须是频繁项集,因为{I1,I2},{I1,I5}不在2项频繁项集中,所以应该剔除。最后三项候选集只剩下{I2,I3,I5}。

对C3中的各项集的支持度与预先设定的最小支持度阈值进行比较,保留大于等于该阈值的项,「得3项频繁集L3」

  • L3与L1连接得候选4项集C4,剪枝后为空集,所以停止迭代。最后得到最大频繁项集{I2,I3,I5}。

由以上过程可知L1,L2,L3都是频繁项集,L3是最大频繁项集。

产生强关联规则

上面我们已经得到了频繁项集,接下来我们要基于频繁项集生成关联规则(假设最小置信度为50%)。

我们不妨基于最大频繁项集{I2,I3,I5}来生成规则:

  • 步骤1:找出最大频繁项集的所有非空子集:{I2,I3},{I2,I5},{I3,I5},{I2},{I3},{I5}。

  • 步骤2:生成所有可能的关联规则:{I2,I3}=>{I5},{I2,I5}=>{I3},{I3,I5}=>{I2},{I5}=>{I2,I3},{I3}=>{I2,I5},{I2}=>{I3,I5}

  • 步骤3:计算所有规则的置信度,找出所有大于最小置信度的规则,它们就是强规则:



Apriori 算法概述
Apriori 算法是一种机器学习算法,用于深入了解所涉及的不同项目之间的结构化关系。Apriori算法也是一个经典的挖掘规则算法,也是最常用的挖掘频繁项集的算法。该算法最突出的实际应用是根据用户购物车中已经存在的产品推荐产品。沃尔玛尤其在向其用户推荐产品时充分利用了该算法。

主要步骤如下

文字描述下算法流程就是:

  1. 扫描TDB, 对每个候选项计算支持度得到表C1

  2. 比较C中各个后选项支持度与最小支持度,得到1维的最大项集L1

  3. 由L1得到候选集C2

  4. 由C2比较支持度得到L2

  5. 由L2得到C3

  6. 由C3得到3维项集L3

根据上述流程我们也会发现,这个算法每一步产生候选集时循环产生的组合过多,我们可以通过挖掘关联规则的性质来做剪枝。

  • 任何频繁集的子集必须是频繁的

  • Apriori剪裁规则: 若存在某些项集是不频繁的,则和这些项集的任何超集都是不频繁的,因为无需生成和测试

如图所示,AB是不频繁的,那么红色虚线圈出的所有超集也是不频繁的,因此可以剪掉。所以生成候选集的方法可以这样总结:

生成关联规则

前面说完了如何生成频繁项集,接下来说说如何生成关联规则,现有频繁项集l,生成每个非空子集S,若S满足最小置信度:

如图所示,最小置信度minconf=80%,对于频繁项集BCE,得到如下几个关联规则,其中大于80%的为BC->E和CE-<B两条规则。

欢迎各位同学了解《呆瓜半小时入门python数据分析》。

作者用python编程语言完成了在线电子零售公司的跨国交易数据集的数据分析与可视化、根据关联规则原理设计实现了基于Apriori算法的关联规则挖掘程序并将程序封装、使用封装好的关联规则挖掘程序对数据集进行关联规则的挖掘,并对挖掘结果进行分析。

Apriori 算法实战亚马逊购物零售数据挖掘

数据集:亚马逊购物-杂货数据,共50万多万数据

**变量列表如下
**

探索数据

看看前五条数据

数据汇总如下

数据总共有541909条,其中“Description”、“CustomerID”两个字段存在数据缺失情况。“Quantity”、“UnitPrice”字段最小值为负数,产品销售数量存在负数可能是存在退货情况,但是这种情况对产生关联规则存在反向作用(削弱关联强度),产品销售单价存在负数说明该字段存在异常数据。

数据中国家变量处重后如下:

建立模型并分析结果

从上面的输出可以看出,纸杯和纸盘是在法国一起买的。这是因为法国人有一种文化,即每周至少与朋友和家人聚会一次。此外,由于法国政府已禁止在该国使用塑料,人们不得不购买纸质替代品。

如果再深入分析一下英国的交易规则,就会发现英国人一起购买不同颜色的茶盘。这背后的一个原因可能是因为英国人通常非常喜欢喝茶,并且经常为不同的场合收集不同颜色的茶盘。

在分析葡萄牙交易的关联规则时,观察到 Tiffin 集 (Knick Knack Tins) 和彩色铅笔。这两种产品通常属于小学生。这两种产品是学校的孩子们分别用来携带午餐和创造性工作的必需品,因此在逻辑上将它们配对在一起是有意义的。

分析上述规则,发现男孩和女孩的餐具是搭配在一起的。这是有实际意义的,因为当父母为他/她的孩子购买餐具时,他/她会希望根据孩子的意愿对产品进行一些定制。

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

Python实现 关联规则的Apriori 算法-亚马逊购物零售数据挖掘相关推荐

  1. Python实现通过ASIN爬取亚马逊产品评论

    Python实现通过ASIN爬取亚马逊产品评论 一.最近一直在研究爬取亚马逊评论相关的信息,亚马逊的反爬机制还是比较严格的,时不时就封cookie啊封ip啊啥的.而且他们的网页排版相对没有那么规则,所 ...

  2. 转:海外购之Amazon亚马逊购物手把手教程

    来源:http://www.smzdm.com/overseas-purchases-of-amazon-amazon-shopping-shoubashoujiao-process.html 本篇教 ...

  3. 美国三州对亚马逊购物开征销售税

    1月2日消息,对于印第安纳.内华达与田纳西的用户来说,新的一年在亚马逊购物要多花钱了:从1月1日起,在该网站上购物要交销售税.政府官员称,由此增加的税收预计每年达5000万美元. 销售税是美国州和地方 ...

  4. 原来卓越亚马逊购物也很爽

    今天由于老婆大人要买一本书<好妈妈胜过好老师>[尹建莉著] 总共17.10 ,运费5元. 以前都在当当买的,由于前两天在当当买了两件百货极度不爽,商品有问题,客服也不解决.所以干脆连书也不 ...

  5. 亚马逊购物用户体验分析

     [版权声明]:版权归作者Alite所有,转载时请以超链接形式标明文章原始出处和作者信息及本声明:http://www.alitedesign.com/  现在电子商务网站的设计,正面临着一系列的挑战 ...

  6. python实现食品推荐_Python分析亚马逊赞不绝口食物评论

    1.背景: 本文是来源于Kaggle平台的亚马逊50多万条食物评论的数据集.此数据集采集时间跨度有十余年,直到2012年十月份共计有56万多条评论信息. 这些信息由食品产品号.用户信息.评分和评价文本 ...

  7. Python基于BeautifulSoup4库爬取亚马逊网页

    引言 我写的这个爬虫非常的简单,没有什么难的逻辑思维,只是简单运用BeautifulSoup进行爬取,相信初学者都可以看懂,就是代码写的比较乱,因为我也是初学者....可能你没有耐心看完,我会尽量一部 ...

  8. python电子病历交接班系统_亚马逊电子病历上的Pydoop

    我终于成功了.所有事情都发生在主节点上-作为用户hadoop,ssh到该节点 你需要一些包裹:sudo easy_install argparse importlib sudo apt-get upd ...

  9. 【转】美国amazon亚马逊购物教程 包学包会 550人民币买kindle4

    美国Amazon官方网站: www.amazon.com 这是美国Amazon所有kindle的链接,点击下面对应的型号即可: kindle 4 WiFi 价格 $79 Kindle touch Wi ...

最新文章

  1. c++人脸特征保存到本地_尚邦小规模人脸识别布控系统
  2. 基于SpringBoot+Vue前后端分离管理系统
  3. Android 性能优化 之谈谈Java内存区域
  4. 优化JS代码的34种方法(上)
  5. mysql修改表结构例子_mysql修改表结构方法实例详解
  6. linux家庭云服务器,linux服务器云(linux家用云服务器)
  7. ②C语言,求数组里相同的位置并输出
  8. avr单片机教程 csdn_从古老的attiny85升级到新的AVR 1系列attiny412教程
  9. Teamviewer 更改ID
  10. vue防止用户恶意点击按钮
  11. python打印菱形_python打印菱形
  12. java eml_javamail读取并解析eml文件
  13. Android 设备Id 唯一不重复,Redmi
  14. 乐动机器人 2D DTOF激光雷达 LD06、LD19驱动包开源仓库分享
  15. Linux云计算运维之Shell
  16. Eclipse集成Mybatis Generator及应用
  17. 国内外量化平台发展现状简析
  18. java中字符串转数组,数组转字符串,集合转字符串
  19. [原创]Android x86开启houdini(arm兼容库) 手动安装houdini 支持arm app
  20. Windows为无扩展名程序设置默认打开方式

热门文章

  1. 有哪些好的自媒体平台?哪些平台流量大?
  2. 房产中介APP开发需要哪些功能|房产中介app开发多少钱?
  3. 【面试】美团面试真题和答案
  4. 基于Spring Boot 2.7.7 + Vue3前后端分离的未来众创车检管理系统
  5. 2017年网友还在使用的广告屏蔽插件大集合!
  6. sql求某列的平均值
  7. 『区块链+TR069协议』打造全球通用区块链物联网
  8. mysql 单表子查询语句_MySQL基本SQL查询语句:多表查询和子查询示例
  9. 如何备战Shopee大促活动?有什么技巧?
  10. 高性能 Java 缓存库 — Caffeine