当前位置: 首页 > news >正文

关联规则Apriori算法

1.前置知识

经典应用场景:购物车商品的关联规则。 

符号表示: 

I代表项集,项是可能出现的值,例如购物车中能有尿布、啤酒、奶粉等,I={尿布、啤酒、奶粉},尿布是项 

K代表I中包含的项的数目,上面的k=3 

事务T,是项的子集,一个父亲进入超市买了啤酒和尿布,这里的事务是{尿布,啤酒} 

D代表事务库,相当于超市的系统账单 

支持度(存在数量):support(尿布奶粉) = 包含尿布奶粉的事务条数/总的事务条数,换句话说,尿布奶粉同时购买的购物记录条数/超市总的购物记录条数 ,绝对支持是出现次数,相对支持是频率。一般都是说的P,频率。

可信度/置信度:confidence(A->B) = support(AB)/support(A),也就是单从包含A的购物记录中找出B存在的记录,得到一个存在比值。 

频繁项集:也就是项集出现的频率>minsup(最小支持度)。 

强关联规则 R :关联项集频率>minsup and 关联项集置信度>minconf 

提升度LIFT:顾名思义:LIFT(A=>B)代表商品 A 的出现,对商品 B 的出现概率提升的”程度 。所以提升度公式是 AB置信度/B支持度 = P(A->B)/P(B) = P(AB)/(P(A)*P(B))。这个公式背后的意思就是      B在含A事务集中的占比/B在所有事务中的占比。 

提升度>1代表关联关系强,=1代表没有关系,<1代表 负 关联关系。 

性质**:频繁项集的子集仍为频繁项集,非频繁项集的超集仍为非频繁项集。 

很好理解,频繁项集出现多少次,子集就出现多少次,当然频繁。非频繁项集出现频率低,包含它的超集出现次数只能是最多等于它。 

2.Apriori-找关联规则的算法 

关联规则的寻找分为两步:1.寻找频繁项集 2.从频繁项集中寻找>=最小置信度的规则 

频繁项集用Lk表示可能包括频繁项集的集合Ck表示(C全名可能是Collection?)。k代表集合中项的个数。 

Apriori是从频繁1项集L1生成频繁2项集L2,再用频繁2项集L2生成频繁3项集L3的算法.又名Level-wise.

具体过程:首先项集itemsets里的每一条项集itemset里的项item必须按照排序,如果是名字,按拼音排序,排序后是为了方便比对,从Lk-1生成Lk,需要用 Lk-1和 Lk-1进行组合生成组合,组合的规则是循环拿出itemset1(记作l1) in Lk-1,itemset2(记作l2) in Lk-1,l1、l2前 k-2个数 必须相同,l1、l2最后一个数坐标是k-1必须不同。例如 l1 {橘子,苹果,牛奶}和l2{橘子,苹果,汽水},我要生成4项集,就要比对橘子=橘子,苹果=苹果,最后一个数牛奶!=汽水,然后组合在一起是{橘子,苹果,牛奶,汽水}。但是这种两两比对的方式会生成很多组合集,再拿去在总的事务库中扫描每一条事务记录,看是不是频繁项集,这样的搜索次数非常高。由此,Apriori算法引入先验属性。 

先验属性剪枝就是,生成一个剪枝过的Ck,再到数据库里去搜索,剪枝过的Ck子集都是频繁子集,但是不能保证它本身就是频繁项集,生成Ck之前看到每一条itemset如果有k-1子项集不在Lk里的,删去,循环操作,生成Lk.因为上面所说的性质,也叫先验知识丢弃会剪枝,减少工作量的意思)。先从事务库D生成频繁项集L1,再从L1生成C2。这里就是因为不频繁项集的超集一定是不频繁项集,那我们就只能从L1中选取项集生成C2. 

// 伪代码input:D(事务集),min_sup
output:L(频繁项集itemsets)L1 = find_fre_1_itemset(D); //这里先生成C1,还是L1都是一样的
for(k=2;Lk-1不为空;k++){Ck = apriori_generation(L k-1) //先验属性生成Ckfor each t 属于 D{ //循环扫描事务库集Ct = find_subsets(Ck,t) //找到事务库事务中也存在的 候选频繁项集(Ck中的)for each c 属于 Ct{c.count++ //循环将频繁项集的数量属性加1}}Lk = {c属于Ck|c.count>=min_sup}
}
return L(所有频繁项集)// 找到候选K项集
apriori_generation(Lk-1)for each itemset l1 in L k-1{for each itemset l2 in L k-1{// 集合要排序对齐,后面还要剪枝if (l1[0]==l2[0]) and (l1[1]==l2[1]) and ... and(l1[k-1]<l2[k-1]){c = l1Xl2}if has_infrequent_subsets(c,Lk-1){delete c}else{add c into Ck}}}return Ck//先验属性剪枝
has_infrequent_subsets(c,Lk-1)for each k-1 subset s in c{if s 不属于 Lk-1{return True}}return False

实际举例

0.输入

D:

事务
1I1,I2,I3,I4,I7
2I2,I3,I4,I5,I7
3I1,I3,I4I7
4I3,I4,I7
5I2,I3,I4,I5,I6,I7

min_sup = 2

1.生成L1

候选1项集sup_count
I12
I23
I35
I45
I52
I61
I75

min_sup筛选一下(写候选1的这个步骤也可以省去)

L1

I12

I2

3
I35
I45
I52
I75

2.生成候选2项集C2

L1XL1:

{I1,I2},{I1,I3},{I1,I4},{I1,I5},{I1,I7},

{I2,I3},{I2,I4},{I2,I5},{I2,I7}

{I3,I4},{I3,I5},{I3,I7}

{I4,I5},{I4,I7}

{I5,I7}

剪枝

注意候选2项集比较特殊,不用剪枝,因为k-1子集是频繁1项集,全部符合min_sup.后面的C3..Ck要剪枝。

3.生成L2

用c2循环事务库D,过滤不频繁项集

{I1,I3},{I1,I4},{I1,I7},

{I2,I3},{I2,I4},{I2,I5},

{I3,I4},{I3,I5},{I3,I7}

{I4,I5},{I4,I7}

{15,17}

4.生成C3

L2XL2:

{I1,I3,I4}(这举个例子,是I1,I3和I1,I4组合,那主要看I3,I4是不是频繁项集来剪枝),{I1,I3,I7},{I1,I4,I7}

{I2,I3,I4},{I2,I3,I5},{I2,I4,I5}

{I3,I4,I5},{I3,I4,I7},{I3,I5,I7},

{I4,I5,I7}

剪枝,循环每一个2项集看在不在L2里,都在。

5.生成L3

用c3循环事务库D,过滤不频繁项集

{I1,I3,I4},{I1,I3,I7},{I1,I4,I7}

{I2,I3,I4},{I2,I3,I5},{I2,I4,I5}

{I3,I4,I5},{I3,I4,I7},{I3,I5,I7},

{I4,I5,I7}

6.生成C4

L3XL3

{I1,I3,I4,I7}(记得顺序,{I1,I3,I4}和{I1,I4,I7}合不上,因为I1=I1,I3!=I4第二步不等于就结束了,为什么要前面全等于,最后一个不等于,如果能合得上有{I1,I3,I4,I7},那一定存在{I1,I3,I4}和{I1,I3,I7}是频繁项集,这个例子在上一步集合比较就已经出来这个结果了)

{I2,I3,I4,I5}

{I3,I4,I5,I7}

子集都在频繁项集,不剪枝。

7.生成L4

用C4循环事务库D,过滤不频繁项集

{I1,I3,I4,I7}

{I2,I3,I4,I5}

{I3,I4,I5,I7}

8.C5集合为空(第一个数没有相同得,l1!=I2,I1!=I3,I2!=I3)

9.L5集合为空,返回全部频繁项集

reference:

[1]Han Jiawei ,Kamber Micheline , Pei,Jian ."data mining "3rd ed 253 page

相关文章:

关联规则Apriori算法

1.前置知识 经典应用场景&#xff1a;购物车商品的关联规则。 符号表示&#xff1a; I代表项集,项是可能出现的值&#xff0c;例如购物车中能有尿布、啤酒、奶粉等&#xff0c;I{尿布、啤酒、奶粉}&#xff0c;尿布是项 K代表I中包含的项的数目&#xff0c;上面的k3 事…...

书生·浦语大模型全链路开源体系-第4课

书生浦语大模型全链路开源体系-第4课 书生浦语大模型全链路开源体系-第4课相关资源XTuner 微调 LLMXTuner 微调小助手认知环境安装前期准备启动微调模型格式转换模型合并微调结果验证 将认知助手上传至OpenXLab将认知助手应用部署到OpenXLab使用XTuner微调多模态LLM前期准备启动…...

HTML优化SEO

在网站开发中&#xff0c;除了关注设计和用户体验&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;也是提升网站流量和可见度的关键。合理的HTML结构和元素运用能够帮助搜索引擎更好地理解页面内容&#xff0c;从而提高搜索排名。以下是一些基于HTML的SEO优化技巧&#xf…...

RabbitMQ-交换机

文章目录 交换机fanoutDirecttopicHeadersRPC 交换机 **交换机 **是消息队列中的一个组件&#xff0c;其作用类似于网络路由器。它负责将我们发送的消息转发到相应的目标&#xff0c;就像快递站将快递发送到对应的站点&#xff0c;或者网络路由器将网络请求转发到相应的服务器…...

mapreduce中的MapTask工作机制(Hadoop)

MapTask工作机制 MapReduce中的Map任务是整个计算过程的第一阶段&#xff0c;其主要工作是将输入数据分片并进行处理&#xff0c;生成中间键值对&#xff0c;为后续的Shuffle和Sort阶段做准备。 1. 输入数据的划分&#xff1a; 输入数据通常存储在分布式文件系统&#xff08;…...

景区文旅剧本杀小程序亲子公园寻宝闯关系统开发搭建

要开发景区文旅剧本杀小程序亲子公园寻宝闯关系统&#xff0c;您需要考虑以下步骤&#xff1a; 1. 设计游戏场景和规则&#xff1a;根据亲子公园的主题和特点&#xff0c;设计适合亲子游玩的游戏场景和规则。您需要考虑游戏的安全性、趣味性和互动性&#xff0c;确保孩子们能够…...

性能优化---webpack优化

1、如何提高webpack打包速度 a、优化Loader--影响Loader打包速度的首要元素是Babel&#xff0c;Babel 会将代码转为字符串生成 AST&#xff0c;然后对 AST 继续进行转变最后再生成新的代码&#xff0c;项目越大&#xff0c;转换代码越多&#xff0c;效率就越低。先优化 Loader …...

YOLOv9改进策略 | 损失函数篇 | EIoU、SIoU、WIoU、DIoU、FocusIoU等二十余种损失函数

一、本文介绍 这篇文章介绍了YOLOv9的重大改进&#xff0c;特别是在损失函数方面的创新。它不仅包括了多种IoU损失函数的改进和变体&#xff0c;如SIoU、WIoU、GIoU、DIoU、EIOU、CIoU&#xff0c;还融合了“Focus”思想&#xff0c;创造了一系列新的损失函数。这些组合形式的…...

贪心算法-跳跃游戏

给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输…...

sql知识总结二

一.报错注入 1.什么是报错注入&#xff1f; 这是一种页面响应形式&#xff0c;响应过程如下&#xff1a; 用户在前台页面输入检索内容----->后台将前台输入的检索内容无加区别的拼接成sql语句&#xff0c;送给数据库执行------>数据库将执行的结果返回给后台&#xff…...

VSCode和CMake实现C/C++开发

VSCode和CMake实现Ubuntu下C/C++开发总结 目录 0.简介1.Linux系统介绍2.开发环境搭建2.1 编译器,调试器安装2.2 CMake安装3.GCC编译器3.1 编译过程3.2 g++重要编译参数4.g++编译实战4.0 编译前4.1 直接编译4.2 生成库文件并编译4.3 编译后4.3.1 编译完成后的目录结构4.3.2 运行…...

【机器学习300问】74、如何理解深度学习中L2正则化技术?

深度学习过程中&#xff0c;若模型出现了过拟合问题体现为高方差。有两种解决方法&#xff1a; 增加训练样本的数量采用正则化技术 增加训练样本的数量是一种非常可靠的方法&#xff0c;但有时候你没办法获得足够多的训练数据或者获取数据的成本很高&#xff0c;这时候正则化技…...

C语言程序设计每日一练(4)

完全平方数 首先&#xff0c;我们需要明确什么是完全平方数。完全平方数是指一个整数&#xff0c;它可以表示为另一个整数的平方。例如&#xff0c;1、4、9、16等都是完全平方数&#xff0c;因为它们分别是1、2、3、4的平方。 现在&#xff0c;让我们回到这个问题。我们知道这…...

m4p转换mp3格式怎么转?3个Mac端应用~

M4P文件格式的诞生伴随着苹果公司引入FairPlay版权管理系统&#xff0c;该系统旨在保护音频的内容。M4P因此而生&#xff0c;成为受到FairPlay系统保护的音频格式&#xff0c;常见于苹果设备的iTunes等平台。 MP3文件格式的多个优点 MP3格式的优点显而易见。首先&#xff0c;其…...

全国产化无风扇嵌入式车载电脑在车队管理嵌入式车载行业应用

车队管理嵌入式车载行业应用 车队管理方案能有效解决车辆繁多管理困难问题&#xff0c;配合调度系统让命令更加精确有效执行。实时监控车辆状况、行驶路线和位置&#xff0c;指导驾驶员安全有序行驶&#xff0c;有效降低保险成本、事故概率以及轮胎和零部件的磨损与损坏。 方…...

爬虫入门——Request请求

目录 前言 一、Requests是什么&#xff1f; 二、使用步骤 1.引入库 2.请求 3.响应 三.总结 前言 上一篇爬虫我们已经提及到了urllib库的使用&#xff0c;为了方便大家的使用过程&#xff0c;这里为大家介绍新的库来实现请求获取响应的库。 一、Requests是什么&#xff1…...

创建一个javascript公共方法的npm包,js-tool-big-box,发布到npm上,一劳永逸

前端javascript的公共方法太多了&#xff0c;时间日期的&#xff0c;数值的&#xff0c;字符串的&#xff0c;搞复制的&#xff0c;搞网络请求的&#xff0c;搞数据转换的&#xff0c;几乎就是每个新项目&#xff0c;有的拷一拷&#xff0c;没有的继续写&#xff0c;放个utils目…...

【在线OJ系统】自定义注解实现分布式ID无感自增

实现思路 首先自定义参数注解&#xff0c;然后根据AOP思想&#xff0c;找到该注解作用的切点&#xff0c;也就是mapper层对于mapper层的接口在执行前都会执行该aop操作&#xff1a;获取到对于的方法对象&#xff0c;根据方法对象获取参数列表&#xff0c;根据参数列表判断某个…...

35. UE5 RPG制作火球术技能

接下来&#xff0c;我们将制作技能了&#xff0c;总算迈进了一大步。首先回顾一下之前是如何实现技能触发的&#xff0c;然后再进入正题。 如果想实现我之前的触发方式的&#xff0c;请看此栏目的31-33篇文章&#xff0c;讲解了实现逻辑&#xff0c;这里总结一下&#xff1a; …...

计算机网络 TCP/IP体系 物理层

一. TCP/IP体系 物理层 1.1 物理层的基本概念 物理层作为TCP/IP网络模型的最低层&#xff0c;负责直接与传输介质交互&#xff0c;实现比特流的传输。 要完成物理层的主要任务&#xff0c;需要确定以下特性&#xff1a; 机械特性&#xff1a;物理层的机械特性主要涉及网络…...

微服务相关

1. 微服务主要七个模块 中央管理平台&#xff1a;生产者、消费者注册&#xff0c;服务发现&#xff0c;服务治理&#xff0c;调用关系生产者消费者权限管理流量管理自定义传输协议序列化反序列化 2. 中央管理平台 生产者A在中央管理平台注册后&#xff0c;中央管理平台会给他…...

虚拟机下如何使用Docker(完整版)

Docker详细介绍&#xff1a; Docker 是一款开源的应用容器引擎&#xff0c;由Docker公司最初开发并在2013年发布。Docker的核心理念源自于操作系统级别的虚拟化技术&#xff0c;尤其是Linux上的容器技术&#xff08;如LXC&#xff09;&#xff0c;它为开发人员和系统管理员提供…...

asp.net core 依赖注入后的服务生命周期

ASP.NET Core 依赖注入&#xff08;DI&#xff09;容器支持三种服务的生命周期选项&#xff0c;它们定义了服务实例的创建和销毁的时机。理解这三种生命周期对于设计健壯且高效的应用程序非常重要&#xff1a; 瞬时&#xff08;Transient&#xff09;&#xff1a; 瞬时服务每次…...

交换排序:冒泡排序和快速排序

冒泡排序 思路 通过多次遍历数组&#xff0c;比较相邻的元素&#xff0c;并交换它们&#xff0c;使得每次遍历结束后&#xff0c;最大&#xff08;或最小&#xff09;的元素都“冒泡”到数组的末尾 实现 public class Main {public static void main(String[] args) {int[] …...

聊天机器人ChatGPT指导下的论文写作

ChatGPT无限次数:点击直达 聊天机器人ChatGPT指导下的论文写作 引言 随着人工智能技术的不断发展&#xff0c;聊天机器人在各个领域得到了广泛应用。其中&#xff0c;ChatGPT作为一个先进的自然语言处理模型&#xff0c;为各种文本生成任务提供了强大的支持。在学术界&#xf…...

康谋技术 | 深入探讨:自动驾驶中的相机标定技术

随着自动驾驶技术的快速发展&#xff0c;多传感器的数据采集和融合可以显著提高系统的冗余度和容错性&#xff0c;进而保证决策的快速性和正确性。在项目开发迭代过程中&#xff0c;传感器标定扮演着至关重要的角色&#xff0c;它位于数据采集平台与感知融合算法之间&#xff0…...

如何在 Ubuntu 上启用 IPv6

一、前提条件 一台安装了 Ubuntu 22.04 的计算机具有 sudo 权限的用户账户已连接到支持 IPv6 的网络 二、检查系统是否支持 IPv6 在启用 IPv6 之前&#xff0c;首先要确保您的系统支持 IPv6。要检查内核是否启用了 IPv6&#xff0c;可以运行以下命令&#xff1a; cat /proc/…...

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏&#xff1f;你是不是想在你的Mac电脑上体验一些刺激和激烈的对战&#xff1f;在这篇文章中&#xff0c;我们将介绍Mac电脑上有什么好玩的格斗游戏&#xff0c;以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…...

【leetcode面试经典150题】55. 逆波兰表达式求值(C++)

【leetcode面试经典150题】专栏系列将为准备暑期实习生以及秋招的同学们提高在面试时的经典面试算法题的思路和想法。本专栏将以一题多解和精简算法思路为主&#xff0c;题解使用C语言。&#xff08;若有使用其他语言的同学也可了解题解思路&#xff0c;本质上语法内容一致&…...

云轴科技ZStack入选中国信通院《高质量数字化转型产品及服务全景图(2023年度)》

近日&#xff0c;由中国互联网协会主办、中国信通院承办的“2024高质量数字化转型创新发展大会”暨“铸基计划”年度会议在北京成功召开。 本次大会发布了2024年度行业数字化转型趋势&#xff0c;总结并展望了“铸基计划”2023年取得的工作成果及2024年的工作规划。同时&#…...

做的网站空白了/百度在线咨询

find找到非零元素的索引和值语法&#xff1a;1. ind find(X)找出矩阵X中的所有非零元素&#xff0c;并将这些元素的线性索引值(linear indices&#xff1a;按列)返回到向量ind中。如果X是一个行向量&#xff0c;则ind是一个行向量&#xff1b;否则&#xff0c;ind是一个列向量…...

天权网站建设/seo入门培训

为类定义方法和属性<?php //缺省值须是常量&#xff0c;不可以是变量&#xff0c;或类成员或方法调用 class A { // 属性(成员)声明 public $aa 缺省值; public $bbarray("苹果","葡萄","香蕉"); // 方法声明 public function echo_aa()…...

263企业邮箱后缀是什么/seo技巧优化

修改 &#xff1a; SELINUXdisabled 正确 误修改&#xff1a; SELINUXTYPEdisabled 错误 导致无法开机 错误结果 重启后 机器就报 Failed to load SELinux policy. Freezing 错误 导致一直不能启动 解决办法&#xff1a; 1. 重启时在启动页面&#xff0c;选择你要…...

网站用户引导/宁波seo在线优化方案

请帮助我如何使用deviation_2DArray.java中的变量到NBC.java&#xff0c;在NBC.java我想平均b[i] d[i][j]和c[j]例&#xff1a;b[1]avg (d[1][1]d[1][2].....d[1][5])提前致谢。2DArray.javapublic class 2DArray {public static void main(String[] args) {double[][] d new …...

重庆做网站的公司有哪些/产品怎样推广有效

2019独角兽企业重金招聘Python工程师标准>>> 情况一&#xff1a; 客户端---------&#xff08;调用&#xff09;----------> 服务端 &#xff08;服务端处理超时&#xff0c;但服务端整个事务处理正常且数据修改正常&#xff09;。此情况&#xff0c;无影响…...

wordpress主题图片路径换取l/52种新颖的促销方式

文件上传几乎是每个项目实现的一个必须的模块。 上传就是将信息从个人计算机(本地计算机)传递到中央计算机(远程计算机)系统上&#xff0c;让网络上的人都能看到。将制作好的网页、文字、图片等发布到互联网上去&#xff0c;以便让其他人浏览、欣赏。这一过程称为上传。 JAVA实…...