机器学习-关联规则算法Apriori及编码实现

发布时间:2026/10/10 12:28:03

机器学习-关联规则算法Apriori及编码实现 一、前置知识在了解关联规则之前首先了解一些相关概念包含项集、频繁项集、支持度、置信度、提升度等基础概念。假如我们在经营一家商品超市顾客进行购买商品的订单信息如下TIDItemsT1{耳机背包}T2{背包手机手表鞋子}T3{耳机手机手表相机}T4{背包耳机手机手表}T5{背包耳机手机相机}-- TID是交易编号表示一次购物交易的唯一标识即用户购买的一次记录。-- Items表示一次购买记录中顾客购买的商品如{耳机背包}1.项集项的集合包含k个项的项集称为k项集例如上面{耳机背包}是2项集。2.支持度表示物品A和物品B同时出现的次数在总的交易次数中的占比例如 A表示手机B表示手表手机和手表同时出现的次数是3次总的交易记录是5次则支持度3/560%。公式如下support(X→Y)|X交Y|/N表示物品集X和Y同时出现的次数占总记录数的比例。3.置信度表示物品A和物品B同时出现的总次数/物品A出现的总次数例如手机和手表同时出现的次数是3次手机出现的总次数是4次则置信度3/475%。公式如下confidence(X→Y)|X交Y|/|X|集合X与集合Y同时出现的总次数/集合X出现的记录数。4.提升度就是置信度 除以 支持度。即 3/4/3/55/4 1 。公式如下lift(X→Y)confidence(X→Y)/P(Y),表示含有X的条件下同时含有Y的概率与Y总体发生的概率之比。说明提升度越高说明置信度和支持度越好说明物品之间的关联性也比较强。5、频繁项集满足规定的最小支持度的项集即出现频率大于最小支持度的项集被称作频繁项集。 例如给定支持度是50%耳机和相机的支持度为2/540%不满足规定的最小支持度即 50%。而手机与手表的支持度是 3/560%满足规定的最小支持度即50%因此{手机手表}是频繁项集。例如如果在一个超市的销售数据中发现葡萄酒、尿布和豆奶这三个商品经常一起被购买那么{葡萄酒尿布豆奶}就是一个频繁项集。二、关联规则某超市的管理者发现纸尿裤和啤酒放通常会出现在一个订单里经过数据分析发现买尿不湿的家长以父亲居多如果他们在买尿不湿的同时恰好看到了啤酒就会有很大的概率购买从而就能提高啤酒的销售量。根据纸尿裤与啤酒的关联规则买尿不湿的家长以父亲居多超市经营者可以将这两件商品放在一起出售并且还可以通过推荐系统向购买纸尿裤的顾客推荐啤酒这样可以提高超市的效益。因此关联规则是分析挖掘购物篮中的购买行为。通过分析购物篮中不同商品之间的关联关系可以揭示商品之间的搭配规律为商家提供定制化的推荐策略优化产品摆放和促销活动以提高销售额和顾客满意度。关联规则分析也被称为购物篮分析用于分析数据集各项之间的关联关系。关联规则挖掘是一种用于发现数据集中的频繁项集和关联规则的数据挖掘技术。它可以帮助我们找到数据集中的相关性从而可以用于市场篮子分析、推荐系统等领域。关联规则的生成可以通过计算支持度和置信度来完成。支持度表示项集在数据集中的出现频率而置信度表示在前提项集出现的情况下结论项集出现的概率。例如我要计算商品A和B在一起出售的支持度支持度 (同时包含商品A、B的交易数目) / (所有交易数目)置信度是指在购买商品A的交易中同时也购买了商品B的比例置信度 (同时包含商品A、B的交易数目) / (购买商品A的交易数目)如果支持度和置信度都较高说明商品A和B之间存在较强的关联关系可以作为推荐系统中的一条关联规则。三、数据挖掘算法频繁项集的挖掘通常使用数据挖掘算法如Apriori算法、FPTreeFrequent Pattern Tree、GSP、CBA等算法后几种算法都是基于Apriori算法和思想产生这些可以帮助我们有效地从大规模数据集中找出频繁项集为商业决策提供支持。现在一般很少直接用Apriori算法来挖掘数据但理解Apriori算法是理解其它相关算法的前提。1、学习Apriori算法前提假如我们在经营一家商品种类并不多的杂货店我们对哪些经常在一起被购买的商品非常感兴趣。我们只有四种商品商品0、商品1、商品2、商品3。那么所有商品的组合有15种{0}、{1}、{2}、{3}、{01}、{02}、{03}、{12}、{13}、{23}、{012}、{013}、{023}、{0123}。那么所有可能被一起购买的商品组合可能只有一种商品比如商品0也可能包括两种、三种或所有四种商品。但我们不关心某人买了两件商品0以及四件商品2的情况只关心他购买了一种或多种商品。下图显示了物品之间所有可能的组合图中使用物品的编号0来表示物品0本身。图中从上往下的第一个集合是ϕ表示空集或不包含任何物品的集合。物品集合之间的连线表明两个或者更多集合可以组合形成一个更大的集合。我们的目标是找到经常在一起购买的物品集合。我们使用集合的支持度来度量其出现的频率。如何对一个给定的集合比如{03}来计算其支持度我们可以遍历上面15种记录中的毎条记录并检查该记录包含0和3如果记录确实同时包含这两项那么就增加总计数值。在扫描完所有数据之后同时出现0和3的总次数是3次即{03}、{013}、{0123} 除以总的交易记录使用统计得到的总数数就可以得到支持度。上述过程我们只有4个商品组合是15个只是针对单个集合{0,3}需要遍历15次。而随着物品数目的增加遍历次数会急剧增长。对于包含N种物品的组合项目有2^n-1数据集共需要遍历 2^n-1次而且实际上出售10000或更多种物品的商店并不少见。即使只出 售100种商品的商店也会有 2^99-1个组合。需要变量2^99-1次而且还是一个单个集合的遍历。如果所有集合都进行遍历这样的运算量其实即使是对于现在的很多计算机而言也需要很长的时间才能完成运算。据挖掘算法Apriori算法的原理可以帮我们减少可能感兴趣的项集降低所需的计算时间。2、Apriori算法据挖掘算法Apriori算法的原理可以帮我们减少可能感兴趣的项集降低所需的计算时间。2.1 Apriori算法原理​如果某个项集是频繁的那么它的所有子集都是频繁的例如假设{1,2}是频繁的那么{1}和{2}也一定是频繁的。将这个原理取反会发现如果一个项集是非频繁的那么它的所有超集也是非频繁的如下图中已知项集{2,3}是非频繁的那么可立即判断出项集{0,2,3}、{1,2,3}、{0,1,2,3}都是非频繁的因此这些项集的支持度也就不需要再计算。使用该原理就可以避免项集数目的指数增长从而在合理的时间内计算出频繁项集。使用该原理就可以避免项集数目的指数增长从而在合理的时间内计算出频繁项集。
延伸阅读

更多相关文章

2026/10/7 5:37:08

请解释一下PHP中的垃圾回收机制。

首先,我们要明白什么是“垃圾”。在这里,“垃圾”指的是程序中不再需要使用的数据。这些数据占用了计算机的内存空间,但是如果我们不去清理它们,它们就会一直待在那里,浪费宝贵的内存资源。那么,PHP中的垃圾…

2026/10/10 12:27:16

QQ聊天记录恢复:本地消息数据库也能扫回来

讲完微信,这一篇说 QQ。很多人以为 QQ 是"云端聊天",记录丢了找不回——其实和微信一样,QQ 在电脑上也会把聊天落地成本地数据库文件。只要你没把这套文件覆盖掉,用数据恢复的思路一样能捞。下面直接讲 QQ 的存储位置和…

2026/10/10 12:27:16

轻量机房管理系统实战:从数据建模到自动化运维

简介:机房管理系统数据库设计完整项目资料,面向高校数据库课程设计学生及需要开发机房管理系统的开发者。资源围绕机房信息、设备信息、用户信息、预约信息、使用记录五个核心实体展开,涵盖ER模型设计、关系模式转换、范式规范化、索引优化与…

2026/10/10 12:27:16

网络货运系统搭建全解析:核心模块、技术架构与合规落地

做网络货运系统这事,我从零搭过完整的一套,也帮几个物流公司做过改造升级。圈子里聊起来,很多人第一反应是"这不就是做个APP让司机接单嘛",真踩进去才发现完全不是那么回事。网络货运系统说白了,是把传统物流…

2026/10/10 12:27:16

UDP实时像素传输与舞台可视化:LED点阵屏显示系统实战解析

最近在搞一个舞台可视化项目,核心需求其实非常简单粗暴:把计算端实时生成的动态画面,通过局域网传到一大块LED点阵屏上,用来做现场演出的背景视频。一开始考虑过HDMI转矩阵灯板的方案,结果发现线材布设、信号转换、成本…

2026/10/10 12:27:16

MFC监听剪切板:消息链机制与避坑指南

简介:这份资源是面向MFC Windows程序设计初学者的一套剪切板监听实例工程,围绕Windows剪切板消息机制展开,帮助学习者理解如何让程序实时感知剪切板内容变化。包内共43个文件,涵盖cpp与h源码、rc资源脚本、ico图标、vcxproj与sln工…

2026/10/10 12:22:15

Unity3D实现MB903工业HMI仿真:协议解析与UI同步开发指南

简介:Unity3D设计MB903是一款面向游戏开发初学者与进阶学习者的3D冒险类项目实战资源,聚焦游戏设计核心流程——从角色战斗系统、装备收集机制到剧情驱动式关卡推进,帮助开发者掌握Unity引擎在真实项目中的综合应用。资源包为ZIP格式&#xf…

2026/10/10 7:31:36

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/9 20:15:56

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/8 6:05:44

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/10 0:04:53

从逻辑门到计算机:数字电路核心原理与全加器搭建实战

如果你拆过一台旧电脑的主板,盯着那些黑乎乎的小芯片看上一会儿,可能会冒出同一个疑问:这堆引脚密集的元件,到底是怎么“变”出那么复杂的应用的?答案并不在某个神秘的部件里,而是在所有芯片内部都在反复使…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑