关联规则介绍

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

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

比较常见的应用就是购物篮分析,分析用户购买产品的习惯,购买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个数据)中出现的概率。某个商品组合出现的次数与总次数之比。其公式为:
在整个N中支持了多少个X。

这里{牛肉,鸡肉}的组合出现在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

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

  1. 数据挖掘:模型选择——监督学习(回归)

    数据挖掘:模型选择--监督学习(回归) 在上一篇文章数据挖掘:模型选择--监督学习(分类)中介绍了分类相关的算法原理,这次来介绍回归的一些算法.回归主要是预测连续型数据的目标值. 本文来自:机器学习菜 ...

  2. 数据挖掘:模型选择——监督学习(分类)

    数据挖掘:模型选择--监督学习(分类) 机器学习算法可分为监督学习和非监督学习.本文主要讨论非监督学习中的分类任务. 一.简单介绍 简单的说,监督学习就是有标签的数据,有需要预测的变量. 分类任务就是 ...

  3. 第六课.模型评估与模型选择

    目录 导语 模型评估 回归任务的评估指标 分类任务的评估指标 过拟合现象 过拟合的原因 过拟合解决办法 模型选择与调整超参数 正则化 留出法 交叉验证 网格搜索 实验:线性回归预测股票走势 实验说明 ...

  4. 做好数据挖掘模型的9条经验总结

    数据挖掘是利用业务知识从数据中发现和解释知识(或称为模式)的过程,这种知识是以自然或者人工形式创造的新知识. 当前的数据挖掘形式,是在20世纪90年代实践领域诞生的,是在集成数据挖掘算法平台发展的支撑 ...

  5. 运用高斯核模型进行最小二乘回归_数据科学 | 第8讲:模型选择与正则化

    点击上方"蓝字"带你去看小星星 模型选择,是指利用统计方法,从众多自变量中,选择显著的.最能解释因变量变化的那一部分自变量参与建模.在统计建模中,模型选择是重要的也是核心的步骤之一 ...

  6. Py之scikit-learn:机器学习sklearn库的简介、六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类)、安装、使用方法(实际问题中如何选择最合适的机器学习算法)之详细攻略

    Py之scikit-learn:机器学习sklearn库的简介(组件/版本迭代).六大基本功能介绍(数据预处理/数据降维/模型选择/分类/回归/聚类).安装.使用方法(实际问题中如何选择最合适的机器学 ...

  7. PRML读书会第一章 Introduction(机器学习基本概念、学习理论、模型选择、维灾等)...

    主讲人 常象宇 大家好,我是likrain,本来我和网神说的是我可以作为机动,大家不想讲哪里我可以试试,结果大家不想讲第一章.估计都是大神觉得第一章比较简单,所以就由我来吧.我的背景是统计与数学,稍懂 ...

  8. r语言中popsd和sd的区别_R语言中回归和分类模型选择的性能指标

    有多种性能指标来描述机器学习模型的质量.但是,问题是,对于哪个问题正确的方法是什么?在这里,我讨论了选择回归模型和分类模型时最重要的性能指标.请注意,此处介绍的性能指标不应用于特征选择,因为它们没有考 ...

  9. 构建一个数据挖掘模型,基本分为哪几步?

    数据挖掘的目的,就是从数据中找到更多的优质用户.什么是有指导的数据挖掘方法模型,以及数据挖掘如何构建模型.在构建一个有指导的数据挖掘模型,首先要理解和定义一些模型试图估计的目标变量. 首先要定义模型的 ...

最新文章

  1. jquery获取服务器控件的值
  2. VC++ 使用TeeChart图表控件(1)
  3. 数据库对数字不限长度的冒泡排序
  4. 远程控制工具_不要让您的工具控制您
  5. timespan怎么比较大小_钻石吊坠回收怎么选择大小?
  6. 静态类 c# 1615139615
  7. new to python什么意思_Python中__new__的作用
  8. Windows2003搭建IIS网站
  9. Unity小游戏算法分析与实现(Unity+XR+游戏开发+算法+MVC+斗地主+耳轮跳+见缝插针+王者荣耀+绝地求生+立钻哥哥+==)
  10. python中fn是什么意思_按Fn键Python 3
  11. 【最新版】贝塔智能挪车v2.5.2+前端-已测试
  12. 局域网监控软件——邮件监控
  13. 用Python写一个简单的24点计算器
  14. 【特征工程】定性数据的编码
  15. 百度之星2017资格赛1003 度度熊与邪恶大魔王
  16. 条形码数据的批量制作用什么软件?
  17. python数据分析-线性回归选择基金
  18. [FUNC]AHK有没有日期运算?比如,20-DEC-2018 减2天
  19. Total Recorder去除噪音
  20. 爱他人之前,先认真爱自己

热门文章

  1. 使用PyInstaller2将Python脚本转化为可执行文件(下-进阶使用)
  2. 火星舱如何备份oracle_倒计时!火星,我们来了
  3. 开始使用windows live writer写博客。
  4. 后端传到前端的字符串如何在pre标签中实现换行
  5. 怎么查看WINDOWS端口被哪个程序占用
  6. Aspose-Cells结合Apache POI生成excel文件以及转换为pdf
  7. Log4net使用指南[转]
  8. GDAL库三个读取Jpeg2000格式驱动测试
  9. Openresty各个阶段的执行次序
  10. PhoneGap插件开发实例