数据分析实战45讲
陈旸
清华大学计算机博士
立即订阅
17314 人已学习
课程目录
已完结 48 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 你为什么需要数据分析能力?
免费
第一模块:数据分析基础篇 (16讲)
01丨数据分析全景图及修炼指南
02丨学习数据挖掘的最佳路径是什么?
03丨Python基础语法:开始你的Python之旅
04丨Python科学计算:用NumPy快速处理数据
05丨Python科学计算:Pandas
06 | 学数据分析要掌握哪些基本概念?
07 | 用户画像:标签化就是数据的抽象能力
08 | 数据采集:如何自动化采集数据?
09丨数据采集:如何用八爪鱼采集微博上的“D&G”评论
10丨Python爬虫:如何自动化下载王祖贤海报?
11 | 数据科学家80%时间都花费在了这些清洗任务上?
免费
12 | 数据集成:这些大号一共20亿粉丝?
13 | 数据变换:考试成绩要求正态分布合理么?
14丨数据可视化:掌握数据领域的万金油技能
15丨一次学会Python数据可视化的10种技能
16丨数据分析基础篇答疑
第二模块:数据分析算法篇 (20讲)
17 丨决策树(上):要不要去打篮球?决策树来告诉你
18丨决策树(中):CART,一棵是回归树,另一棵是分类树
19丨决策树(下):泰坦尼克乘客生存预测
20丨朴素贝叶斯分类(上):如何让机器判断男女?
21丨朴素贝叶斯分类(下):如何对文档进行分类?
22丨SVM(上):如何用一根棍子将蓝红两色球分开?
23丨SVM(下):如何进行乳腺癌检测?
24丨KNN(上):如何根据打斗和接吻次数来划分电影类型?
25丨KNN(下):如何对手写数字进行识别?
26丨K-Means(上):如何给20支亚洲球队做聚类?
27丨K-Means(下):如何使用K-Means对图像进行分割?
28丨EM聚类(上):如何将一份菜等分给两个人?
29丨EM聚类(下):用EM算法对王者荣耀英雄进行划分
30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?
31丨关联规则挖掘(下):导演如何选择演员?
32丨PageRank(上):搞懂Google的PageRank算法
33丨PageRank(下):分析希拉里邮件中的人物关系
34丨AdaBoost(上):如何使用AdaBoost提升分类器性能?
35丨AdaBoost(下):如何使用AdaBoost对房价进行预测?
36丨数据分析算法篇答疑
第三模块:数据分析实战篇 (7讲)
37丨数据采集实战:如何自动化运营微博?
38丨数据可视化实战:如何给毛不易的歌曲做词云展示?
39丨数据挖掘实战(1):信用卡违约率分析
40丨数据挖掘实战(2):信用卡诈骗分析
41丨数据挖掘实战(3):如何对比特币走势进行预测?
42丨当我们谈深度学习的时候,我们都在谈什么?
43丨深度学习(下):如何用Keras搭建深度学习网络做手写数字识别?
第四模块:数据分析工作篇 (2讲)
44丨如何培养你的数据分析思维?
45丨求职简历中没有相关项目经验,怎么办?
加餐 (1讲)
加餐丨在社交网络上刷粉刷量,技术上是如何实现的?
结束语 (1讲)
结束语丨当大家都在讲知识和工具的时候,我更希望你重视思维和实战
数据分析实战45讲
登录|注册

30丨关联规则挖掘(上):如何用Apriori发现用户购物规则?

陈旸 2019-02-20
今天我来带你进行关联规则挖掘的学习,关联规则这个概念,最早是由 Agrawal 等人在 1993 年提出的。在 1994 年 Agrawal 等人又提出了基于关联规则的 Apriori 算法,至今 Apriori 仍是关联规则挖掘的重要算法。
关联规则挖掘可以让我们从数据集中发现项与项(item 与 item)之间的关系,它在我们的生活中有很多应用场景,“购物篮分析”就是一个常见的场景,这个场景可以从消费者交易记录中发掘商品与商品之间的关联关系,进而通过商品捆绑销售或者相关推荐的方式带来更多的销售量。所以说,关联规则挖掘是个非常有用的技术。
在今天的内容中,希望你能带着问题,和我一起来搞懂以下几个知识点:
搞懂关联规则中的几个重要概念:支持度、置信度、提升度;
Apriori 算法的工作原理;
在实际工作中,我们该如何进行关联规则挖掘。

搞懂关联规则中的几个概念

我举一个超市购物的例子,下面是几名客户购买的商品列表:
什么是支持度呢?
支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大。
在这个例子中,我们能看到“牛奶”出现了 4 次,那么这 5 笔订单中“牛奶”的支持度就是 4/5=0.8。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《数据分析实战45讲》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(22)

  • third 置顶
    我也是自己的理解,不知道是否正确,给大家参考一下

    构建子树
    1.假设已经完成创建项头表的工作,省略count+1
    2.扫描数据集,按照项头表排列好的结果,一次创建节点
    3.因为尿布出现在所有订单中,没有例外情况,所以这只有一个子节点
    4.因为牛奶出现在尿布中的所有订单里,所以只有一个子节点
    5.由表中数据可得,在出现牛奶的订单中,面包出现的情况,分为两种,
    1)出现3次面包,出现在有牛奶的订单中
    2)出现一次面包,出现在没有牛奶的订单中
    故,生成两个子节点
    6.后续内容属于迭代内容,自行体会


    3.创建条件模式集
    是一个减掉子树过程。将祖先节点的支持度,记为叶子节点之和,减少频繁项集。
    简单理解,就是有几个叶子,说明最开始的节点,怀了几个孩子,怀几个生几个
    理解
    1.创建含有啤酒的FP树,只有订单中含有啤酒的频繁项集才存在


    2.去掉啤酒节点,品酒节点为空,得到,两个频繁项集
    见图可理解



    作业
    1.工作原理
    1)K=1,计算支持度
    2)筛选小于最小支持度的项集
    3)判断如果项集项集为空,K-1项集为最终结果
    4)判断失败,K=K+1,重复1-3
    2.优化
    1)利用FP树和项头表,减少频繁项集的数量存储和计算

    编辑回复: 总结的不错,都可以看下。

    2019-02-20
    8
  • 王彬成
    简述FP-Growth 算法创建过程:
    【1】创建项头表。
     项 支持度
    尿布 5
    牛奶 4
    面包 4
    啤酒 3
    【2】将数据集按照【尿布-牛奶-面包-啤酒】进行排序,得到
    1)尿布、牛奶、面包
    2)尿布、面包、啤酒、可乐
    3)尿布、牛奶、啤酒、鸡蛋
    4)尿布、牛奶、面包、啤酒
    5)尿布、牛奶、面包、可乐
    【3】构造FP树
    1)遍历第1条数据,得到
    尿布1 |牛奶1 |面包1
    2)遍历第2条数据,得到
    尿布2 |面包1 |啤酒1
             |牛奶1 |面包1
    3)遍历第3条数据,得到
    尿布3 |面包1 |啤酒1
             |牛奶2 |面包1
                      |啤酒1
    4)遍历第4条数据,得到
    尿布4 |面包1 |啤酒1
             |牛奶3 |面包2 |啤酒1
                      |啤酒1
    5)遍历第5条数据,得到
    尿布5 |面包1 |啤酒1
             |牛奶4 |面包3 |啤酒1
                      |啤酒1
    【4】寻找条件模式基
    1)以‘啤酒’为节点的链条有3条
    -尿布1 |面包1 |啤酒1
    -尿布1 |牛奶1 |面包1 |啤酒1
    -尿布1 |牛奶1 |啤酒1
    2)FP子树
    尿布3 |面包1 |啤酒1
            |牛奶2 |面包1 |啤酒1
                     |啤酒1

    3)“啤酒”的条件模式基是取以‘啤酒’为节点的链条,取‘啤酒’往前的内容,即
    -尿布1 |面包1
    -尿布1 |牛奶1 |面包1
    -尿布1 |牛奶1
    2019-02-24
    3
    29
  • Sam.张朝
    https://www.ibm.com/developerworks/cn/analytics/library/machine-learning-hands-on2-fp-growth/index.html FP 还是这里说的清楚
    2019-05-09
    3
  • 曹恒源
    您好,陈哥,在文章中,k=2,(1,3)的支持度,不应该是4/5么?这部分的计算方式,不是(1,3)在总的购买的商品出现的次数除以总次数所得到的最后结果?
    2019-04-08
    3
  • lipan
    k=2时,商品项集1,3的支持度是4/5啊
    2019-02-28
    3
  • 白夜
    Apriori 的工作原理:
    0.设置一个最小支持度,
    1.从K=1开始,筛选频繁项集。
    2.在结果中,组合K+1项集,再次筛选
    3.循环1、2步。直到找不到结果为止,K-1项集的结果就是最终结果。

    FP-Growth相比Apriori的优点:
    降低了计算复杂度,只要遍历两次数据集。可以直接得到指定商品的条件模式基。

    编辑回复: 对的 是Apriori和FP-Growth的特点。

    2019-02-21
    3
  • leestar54
    为啥“啤酒“的条件模式基为空呢?图上祖先节点尿布:3的支持度=3/5大于0.5,这样啤酒的频繁项集可以得到{尿布,啤酒}
    2019-06-13
    1
    2
  • 滨滨
    使用步骤图来解释FG-Growth算法https://www.cnblogs.com/zhengxingpeng/p/6679280.html
    2019-04-06
    2
  • Sam.张朝
    构造FP 树,看不懂
    2019-05-09
    1
    1
  • ken
    Apriori挖掘频繁项集,那么置信度和提升度是对得出的频繁项集进行验证的是吧?如得出了啤酒的频繁项集后是对每个结果计算提升度,怎么选择最优的组合呢?是否会出现提升度大而置信度下降的情况?

    编辑回复: 置信度和提升度是对频繁项集的一种验证,在筛选最优组合的时候,一般会设置最小支持度,最小置信度,这样频繁项集和关联关系都要满足这个条件。提升度 (A→B)= 置信度 (A→B)/ 支持度 (B),所以提升度是对满足前两者条件的另一种验证方式,这样避免一种情况:置信度(A->B)很高,是因为本身支持度(B)很高,实际上和A的出现关系不大。

    2019-02-20
    1
  • Ronnyz
    老师,想问下那置信度和提升度在Aproiri和FP-Growth算法中应用在哪了

    作者回复: 可以用于筛选,比如itemsets, rules = apriori(data, min_support=0.5, min_confidence=1)

    2019-11-21
  • Maybrittnelson
    在Apriori的改进算法中,面包的条件模式基,应该只有{尿布,牛奶,面包}吧?因为{尿布,面包}中的面包为1,小于最小支持度的项可乐为2,得删除。
    2019-08-26
  • Sniper
    这个支持度 不应该是个小于1的百分比么,怎么到输出结果里面都变成具体的数字了,这些数字的大小怎么理解呢
    2019-08-16
  • 滨滨
    Apriori 的工作原理是根据排列组合来计算频繁项集,去掉低于阈值的,然后继续排列组合,直到频繁项集为空。FP-Growth 算法就是利用树来减少查询遍历的次数。
    2019-04-06
  • 梁林松
    Apriori算法工作原理是通过计算子集的置信度来寻找频繁项集,从而确立关联。
    PF-Growth算法是改进的 Apriori, 改进之处在于它是按照明确品类去计算频繁项目集的,而不是去求全部数据集的频繁项集。
    2019-02-28
  • 李沛欣
    支持度:购买ABC这一商品组合,在所有商品组合中的出现概率

    置信度:购买A商品的条件下,购买B商品的概率

    提升度:购买A商品又购买B商品的概率,与所有购买了B商品的概率之比。也就是购买A商品对购买B商品的可能性提升能力。

    提升度>1,说明相互促进
    等于1,没影响,
    <1,相互排斥
    2019-02-26
  • 幸福时光
    在创建FP子树前,提醒大家记得删除订单中不满足最小支持度的商品,再按照项头表对每个订单从高到底排序来依次构造FP树。
    2019-02-24
  • 王彬成
    1、Apriori 的工作原理吗?
    Apriori算法的关键是频繁项集。
    Apriori算法的基本过程是:
    1、扫描一遍数据库,得到一阶频繁项集;
    2、用一阶频繁项集构造二阶候选项;
    3、扫描数据库对二阶候选项进行计数,删除其中的非频繁项,得到二阶频繁项;
    4、然后构造三阶候选项,以此类推,直到无法构造更高阶的候选项,或到达频繁项集的最大长度限制。

    2、相比于 Apriori,FP-Growth 算法都有哪些改进?
    通过创建FP树存储频繁项集。减少存储空间。
    整个生成过程只遍历数据集2次,减少计算量。

    2019-02-24
  • Red Cape
    构造FP树的过程这里看不懂,面包,啤酒为什么会拆分呢

    编辑回复: FP -Growth中有一个概念叫:条件模式基。它在FP树创建的时候还用不上,创建的时候主要是通过扫描整个数据,和项头表来构造FP树。条件模式基用于挖掘频繁项的过程。通过数找到每个项(item)的条件模式基,递归挖掘频繁项集

    2019-02-21
  • Grandia_Z
    1 2 5在k=2时就被筛选剔除了
    2019-02-20
收起评论
22
返回
顶部