【大数据分析与挖掘】挖掘建模之关联分析

article/2025/10/13 1:06:53

文章目录

  • 一、关联规则
    • 1.1 常用的关联规则算法
    • 1.2 Apriori算法介绍
      • 1.2.1 关联规则与频繁项集
      • 1.2.2 Apriori算法的思想与性质
      • 1.2.3 Apriori算法的实现的两个过程
      • 1.2.4 Apriori算法的实现案例


一、关联规则

关联规则分析也成为购物篮分析,最早是为了发现超市销售数据库中不同的商品之间的关联关系。例如一个超市的经理想要更多地了解顾客的购物习惯,比如“哪组商品可能会在一次购物中同时购买?”或者“某顾客购买了个人电脑,那该顾客三个月后购买数码相机的概率有多大?”他可能会发现如果购买了面包的顾客同时非常有可能会购买牛奶,这就导出了一条关联规则“面包=>牛奶”,其中面包称为规则的前项,而牛奶称为后项。通过对面包降低售价进行促销,而适当提高牛奶的售价,关联销售出的牛奶就有可能增加超市整体的利润。

关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找出各项之间的关联关系,而这种关系并没有在数据中直接表示出来。

1.1 常用的关联规则算法

在这里插入图片描述

1.2 Apriori算法介绍

以超市销售数据为例,提取关联规则的最大困难在于当存在很多商品时,可能的商品的组合(规则的前项与后项)的数目会达到一种令人望而却步的程度。因而各种关联规则分析的算法从不同方面入手减小可能的搜索空间的大小以及减小扫描数据的次数。

Apriori算法是最经典的挖掘频繁项集的算法,第一次实现了在大数据集上可行的关联规则提取,其核心思想是通过连接产生候选项与其支持度然后通过剪枝生成频繁项集。

1.2.1 关联规则与频繁项集

(1)关联规则的一般形式
项集A、B同时发生的概率称为关联规则的支持度:
S u p p o r t ( A − > B ) = P ( A ∪ B ) Support(A->B) = P(A∪B) Support(A>B)=P(AB)

项集A发生,则项集B也同时发生的概率为关联规则的置信度:
C o n f i d e n c e ( A − > B ) = P ( B ∣ A ) Confidence(A->B)=P(B|A) Confidence(A>B)=P(BA)

(2)最小支持度和最小置信度
最小支持度是用户或专家定义的衡量支持度的一个阈值,表示项目集在统计意义上的最低重要性

最小置信度是用户或专家定义的衡量置信度的一个阈值,表示关联规则的最低可靠性。同时满足最小支持度阈值和最小置信度阈值的规则称作强规则

(3)项集
项集是项的集合。包含 k 个项的项集称为 k 项集,如集合{牛奶,麦片,糖}是一个3项集。

项集的出现频率是所有包含项集的事务计数,又称作绝对支持度支持度计数。如果项集 I 的相对支持度满足预定义的最小支持度阈值,则 I 是频繁项集。频繁k项集通常记作 L k L_k Lk

(4)支持度计数
项集A的支持度计数是事务数据集中包含项集 A 的事务个数。

已知项集的支持度计数,则规则 A − > B A->B A>B的支持度和置信度很容易从所有事务计数、项集A和项集 A ∪ B A∪B AB 的支持度计数推出:
S u p p o r t ( A − > B ) = A , B 同时发生的事务个数 所有事务个数 = θ ( A ∪ B ) N Support(A->B)=\frac{A,B同时发生的事务个数}{所有事务个数}=\frac{\theta(A∪B)}{N} Support(A>B)=所有事务个数A,B同时发生的事务个数=Nθ(AB)
C o n f i d e n c e ( A − > B ) = P ( A ∣ B ) = θ ( A ∪ B ) θ ( A ) Confidence(A->B)=P(A|B)=\frac{\theta(A∪B)}{\theta(A)} Confidence(A>B)=P(AB)=θ(A)θ(AB)
其中 N N N表示事务个数, θ \theta θ表示计数。

1.2.2 Apriori算法的思想与性质

Apriori算法的思想
Apriori算法的主要思想是找出存在于事务数据集中的最大的频繁项集,在利用得到的最大频繁项集与预先设定的最小置信度阈值生成强关联规则。

Apriori算法的性质
频繁项集的所有非空子集也必须是频繁项集。
根据该性质可以得出:向不是频繁项集 I 的项集中添加事务A,新的项集 I ∪ A I∪A IA一定也不是频繁项集。

1.2.3 Apriori算法的实现的两个过程

  1. 找出所有的频繁项集。
    在这个过程中连接步和剪枝步互相融合,最终得到最大频繁项集 。

  2. 连接步
    连接步的目的是找到K项集。

  3. 剪枝步
    剪枝步紧接着连接步,在产生候选项 C k C_k Ck 的过程中起到减小搜索空间的目的。

连接步:
(1)对给定的最小支持度阈值,分别对 1 项候选集 C 1 C_1 C1,剔除小于该阈值的的项集得到 1 项频繁集 L 1 L_1 L1
(2)下一步由自身连接产生 2 项候选集 C 2 C_2 C2 ,保留 C 2 C_2 C2中满足约束条件的项集得到 2 项频繁集,记为 L 2 L_2 L2
(3)再下一步由 L 1 L_1 L1 L 2 L_2 L2连接产生 3 项候选集 C 3 C_3 C3,保留 C 3 C_3 C3中满足约束条件的项集得到 3 项频繁集,记为 L 3 L_3 L3
− − − − − − --- ---
这样循环下去,得到最大频繁项集 L k L_k Lk

剪枝步:
剪枝步紧接着连接步,在产生候选项 C k C_k Ck的过程中起到减小搜索空间的目的。
由于 C k C_k Ck L k − 1 L_{k-1} Lk1 L k − 1 L_{k-1} Lk1连接产生的,根据Apriori 的性质频繁项集的所有非空子集也必须是频繁项集,所以不满足该性质的项集将不会存在于 C k C_k Ck,该过程就是剪枝。

过程一:找出所有的频繁项集。
过程二:由频繁项集产生强关联规则
由过程一可知未超过预定的最小支持度阈值的项集已被剔除,如果剩下这些规则又满足了预定的最小置信度阈值,那么就挖掘出了强关联规则。

1.2.4 Apriori算法的实现案例

下面将结合餐饮行业的实例来讲解Apriori关联规则算法挖掘的实现过程。数据库中部分点餐数据下表:
在这里插入图片描述
首先将上表中的事务数据(一种特殊类型的记录数据)整理成关联规则模型所需的数据结构。从中抽取10个点餐订单作为事务数据集为方便起见将菜品{18491,8842,8693,7794,8705}分别简记为{a,b,c,d,e}),如:
在这里插入图片描述
设支持度为0.2,即支持度计数为2,算法过程如下图:
在这里插入图片描述

过程一:找最大k项频繁集

  1. 算法简单扫描所有的事务,事务中的每一项都是候选 1 项集的集合 C 1 C_1 C1的成员,计算每一项的支持度。比如
    P ( a ) = 项集 a 的支持度计数 所有事务个数 = 7 10 = 0.7 P({a})=\frac{项集{a}的支持度计数}{所有事务个数}=\frac{7}{10}=0.7 P(a)=所有事务个数项集a的支持度计数=107=0.7
  2. C 1 C_1 C1中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得1项频繁集 L 1 L_1 L1
  3. 扫面所有事务, L 1 L_1 L1 L 1 L_1 L1连接得候选2项集 C 2 C_2 C2,并计算每一项的支持度。如
    P ( a , b ) = 项集 a , b 的支持度计数 所有事务个数 = 5 10 = 0.5 P({a,b})=\frac{项集{a,b}的支持度计数}{所有事务个数}=\frac{5}{10}=0.5 P(a,b)=所有事务个数项集a,b的支持度计数=105=0.5

接下来是剪枝步,由于 C 2 C_2 C2的每个子集(即 L 1 L_1 L1)都是频繁集,所以没有项集从 C 2 C_2 C2中剔除;

  1. C 2 C_2 C2 中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得 2 项频繁集 L 2 L_2 L2

  2. 扫描所有事务, L 2 L_2 L2 L 2 L_2 L2连接得候选 3 项集 C 3 C_3 C3,并计算每一项的支持度,如: P ( a , b , c ) = 项集 a , b , c 的支持度计数 所有事务个数 = 3 10 = 0.3 P({a,b,c})=\frac{项集{a,b,c}的支持度计数}{所有事务个数}=\frac{3}{10}=0.3 P(a,b,c)=所有事务个数项集a,b,c的支持度计数=103=0.3

接下来是剪枝步, L 2 L_2 L2 L 1 L_1 L1连接的所有项集为:{ a,b,c},{ a,b,d},{ a,b,e},{ a,c,d},{ a,c,e},{ b,c,d},{ b,c,e}。

根据Apriori算法,频繁集的所有非空子集也必须是频繁集,因为{b,d},{b,e},{c,d}不包含在b项频繁集 中,即不是频繁集,应剔除,最后的 L 2 L_2 L2 中的项集只有{ a,b,c}和{ a,c,e};

  1. C 3 C_3 C3中各项集的支持度与预先设定的最小支持度阈值作比较,保留大于或等于该阈值的项,得3项频繁集 L 3 L_3 L3
  2. L 3 L_3 L3 L 3 L_3 L3 连接得候选 4 项集 ,易得剪枝后为空集。最后得到最大3项频繁集{ a,b,c}和{ a,c,e}。

由以上过程可知 L 3 , L 2 , L 3 L_3,L_2,L_3 L3,L2,L3 都是频繁项集, L 3 L_3 L3是最大频繁项集。

过程二:由频繁集产生关联规则
根据公式:
在这里插入图片描述
尝试产生关联规则。
Python程序输出的关联规则如下:
在这里插入图片描述
在这里插入图片描述
就第一条输出结果进行解释:客户同时点菜品e和a的概率是30%,点了菜品e,再点菜品a的概率是100%。知道了这些,就可以对顾客进行智能推荐,增加销量同时满足客户需求。


http://chatgpt.dhexx.cn/article/BvarYqMY.shtml

相关文章

Hands-on-data-analysis 动手数据分析

动手数据分析笔记 第一章 第一节 数据载入及初步观察 数据载入 df pd.read_csv(file_path)df2 pd.read_table(file_path)read_csv 函数 见CSDN 博客: https://blog.csdn.net/weixin_39175124/article/details/79434022 问:read_csv 和 read_table …

python数据分析-因子分析(转载)

python数据分析-因子分析(转载) (获取更多知识,前往前往我的wx ————公z号 (程式解说) 原文来自python数据分析-因子分析

ThreeJs 数据可视化学习扫盲

一:前言 数据可视化是一个跨领域的行业,其中包含了图形学、数学、视觉传达等专业领域。 下图罗列出了一个简单的学习方向。 二:可视化方案以及学习路线 目前采用的是比较成熟,社区活跃度更高的Three.js,它是一个开源…

数据处理以及Hive数据分析

数据处理以及Hive数据分析 一、pandas进行数据预处理【1】待处理的一部分数据【2】原始数据文件的格式说明【3】数据预处理要求【4】 处理完成的数据字段说明【5】 实验方法使用pandas进行数据预处理 【6】解析题意【7】代码展示(1)读取文件(…

Python交互式数据分析报告框架~Dash介绍

原文作者:Plotly,Chris Pamer 原文链接: https://link.jianshu.com/?thttps%3A%2F%2Fmedium.com%2F%40plotlygraphs%2Fintroducing-dash-5ecf7191b503 译者序:原文于2017年6月21日发布,时过半载,将这篇既不是教程…

CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information

开放性知识库的规范化(个人理解:这里的规范化实际上就是将相同语义的实体或关系聚集在一起,从而表示一个实体或关系),主要是OPENie提取的过程中没有进行区分,最近的研究发现,开放KBS的规范化实际…

计算机一级仿宋gb2312,仿宋gb2312字体

一般情况下,这款软件在试用的过程可能还有点小问题,但是正所谓瑕不掩瑜,相信用不了多久,只要程序猿给力点,这种小小的反馈不爽就可以解决。 仿宋gb2312字体字体简介 仿宋_GB2312字体是印刷字体的一种 ,仿照…

Supervisor部署(离线部署需要提前下载部署包)

1.软件准备 下载tar包:wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz 解压:tar -xvf supervisor-3.1.3.tar.gz 进入解压包:cd supervisor-3.1.3 开始安装:python setup.py install 下载me…

Docker 学习之 Docker 容器数据卷

容器数据卷 什么是容器数据卷 docker 理念回顾 将应用和环境打包成一个镜像! 问题:数据?如果数据都在容器中,那么我们删除容器,数据就会丢失!需求:数据可以持久化! 容器之前可以…

Supervisor 安装与配置

文章目录 Supervisor 安装与配置一、介绍二、名词释义三、Supervisor 安装三、Supervisor 配置四、启动控制终端五、注册为系统服务六、管理界面1、管理界面的弊端 Supervisor 安装与配置 一、介绍 ​ Supervisor 是用Python开发的一个 client/server 服务,是Linu…

使用Cesi+Supervisor实现进程管理

使用CesiSupervisor实现进程管理 相信很多的运维小伙伴都是饱受进程丢失的痛苦,最怕半夜被手机吵醒,那一定是经理想你 不管进程是前台运行还是后台静默运行,我们都需要能监控其进程状态。 原因有三: 一,在意外结束时…

echarts学习笔记1

可视化面板介绍 ​ 应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使用,可视化图表来展示体现数据,让数据更加直观,数据特点更加突出。 [外链图片转存失败,源站可能…

supervisor集群管理

1.介绍 Supervisor是一个进程管理工具,就是有一个进程需要每时每刻不断的运行,但是这个进程又有可能由于各种原因有可能停止运行。supervisor官网:http://www.supervisord.org/ 当进程停止运行的时候我们希望能自动重新启动,Super…

UOS桌面操作系统专业版字体

fc-list |sort| awk {print $1 } |uniq| wc -l cesi授权的字体 /usr/share/fonts/fonts-cesi/CESI_FS_GB13000.TTF: CESI仿宋\-GB13000,CESI_FS_GB13000:styleRegular /usr/share/fonts/fonts-cesi/CESI_FS_GB18030.TTF: CESI仿宋\-GB18030,CESI_FS_GB18030:styleRegular /…

罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书

2022年11月25日,2022(冬季)亚洲户外电源大会于深圳市南山区科兴科学园ECO国际会议中心举办。本次大会由中国电子技术标准化研究院、北京京东世纪贸易有限公司、充电头网、全国电子产品安全标准化技术委员会、工信部锂离子电池及类似产品标准化…

supervisor 的 web 管理工具 cesi

一、supervisor 配置 说明:如果只是使用 supervisor 自带的 web,仅如下配置就可以vim /etc/supervisor/supervisord.conf[inet_http_server] ; inet (TCP) server disabled by default port192.168.5.149:9001 ; ip_address:port specif…

管理ELK进程工具: Supervisor Cesi

一、Supervisor简介 supervisor是一个Linux/Unix系统上的进程监控工具,supervisor是一个Python开发的通用的进程管理程序,可以管理和监控Linux上面的进程,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常…

CeSi 进程集中管理部署

一:安装环境 CentOs 7环境 sudo yum install -y git epel-releasesudo yum install -y python34 python34-pip 二: 安装CeSi https://github.com/Gamegos/cesi 有详细的安装步骤,需要安装一些工具 ## 安装yarn curl --silent --location http…

Linux 系统进程守护工具 cesi + superviosr

一、安装 Supervisor pip install supervisor 使用 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 配置文件说明 位置:etc/supervisord.conf内容:# 指定了socket file的位置 [unix_http_server] f…

进程管理工具-Supervisord +CeSi

Supervisor 简介 Supervisor 是一个用 Python 写的进程管理工具,可以很方便的用来在 UNIX-like 系统(不支持 Windows)下启动、重启(自动重启程序)、关闭进程(不仅仅是 Python 进程) Superviso…