Apriori算法

Apriori算法由R. Agrawal和R. Srikant于1994年在数据集中寻找布尔关联规则的频繁项集。该算法的名称是Apriori,因为它使用了频繁项集属性的先验知识。我们应用迭代方法或逐层搜索,其中k-频繁项集用于找到k+1个项集。

为了提高频繁项集逐层生成的效率,使用了一个重要的属性Apriori属性,该属性有助于减少搜索空间。

Apriori属性

频繁项集的所有非空子集必须是频繁项集。Apriori算法的核心概念是支持度的反单调性。Apriori假设,

频繁项集的所有子集必须是频繁的(Apriori属性)。
如果一个项集是不频繁的,那么它的所有超集都是不频繁的。

在我们开始理解算法之前,可以看看前一篇文章中解释过的一些定义。

考虑以下数据集,我们将找到频繁项集并为其生成关联规则。

在这里插入图片描述
最小支持计数为2
最低置信度为60%

步骤1:K=1

(I)创建一个表,其中包含数据集中存在的每个项目的支持计数-称为C1(候选集)

在这里插入图片描述
(II)将候选集合项的支持计数与最小支持计数进行比较(这里min_support=2,如果候选集合项的support_count小于min_support,则移除那些项)。这给了我们项集L1。

在这里插入图片描述

步骤2:K=2

  • 使用L1生成候选集C2(这称为连接步骤)。连接Lk-1和Lk-1的条件是它应该具有共同的(K-2)个元素。
  • 检查项目集的所有子集是否频繁,如果不频繁,则删除该项目集。({I1,I2}的示例子集是{I1},{I2},它们是频繁的。检查每个项集)
  • 现在通过在dataset中搜索来找到这些项集的支持计数。

在这里插入图片描述
将候选(C2)支持计数与最小支持计数进行比较(这里min_support=2,如果候选集合项的support_count小于min_support,则移除那些项),这给出了项集合L2。

在这里插入图片描述

步骤3:

  • 使用L2生成候选集合C3(连接步骤)。连接Lk-1和Lk-1的条件是它应该具有共同的(K-2)个元素。所以这里,对于L2,第一个元素应该匹配。
    所以通过连接L2生成的项集是{I1,I2,I3}{I1,I2,I5}{I1,I3,I5}{I2,I3,I4}{I2,I4,I5}{I2,I3,I5}

  • 检查这些项集的所有子集是否都是频繁的,如果不是,则删除该项集。({I1,I2,I3}的子集是{I1,I2},{I2,I3},{I1,I3},它们是频繁的。对于{I2,I3,I4},子集{I3,I4}不是频繁的,因此将其移除。类似地检查每个项集)

  • 通过在数据集中搜索来找到这些剩余项集的支持计数。

在这里插入图片描述
将候选(C3)支持计数与最小支持计数进行比较(这里min_support=2,如果候选集合项的support_count小于min_support,则移除那些项),这给出了项集合L3。

在这里插入图片描述

步骤4:

  • 使用L3生成候选集合C4(连接步骤)。连接Lk-1和Lk-1(K=4)的条件是,它们应该具有(K-2)个共同元素。因此,对于L3,前两个元素(项目)应该匹配。
  • 检查这些项集的所有子集是否频繁(这里通过连接L3形成的项集是{I1,I2,I3,I5},因此其子集包含{I1,I3,I5},这不是频繁的)。所以C4中没有项集
  • 我们停在这里,因为没有进一步发现频繁项集

这样,我们就发现了所有的频繁项集。强关联规则的生成是目前研究的热点。为此,我们需要计算每个规则的置信度。

置信度

60%的置信度意味着60%的购买牛奶和面包的顾客也购买了黄油。

Confidence(A->B)=Support_count(A∪B)/Support_count(A)

因此,在这里,通过以任何频繁项集为例,我们将展示规则生成。

Itemset {I1, I2, I3} //from L3
SO rules can be
[I1^I2]=>[I3] //confidence = sup(I1^I2^I3)/sup(I1^I2) = 2/4*100=50%
[I1^I3]=>[I2] //confidence = sup(I1^I2^I3)/sup(I1^I3) = 2/4*100=50%
[I2^I3]=>[I1] //confidence = sup(I1^I2^I3)/sup(I2^I3) = 2/4*100=50%
[I1]=>[I2^I3] //confidence = sup(I1^I2^I3)/sup(I1) = 2/6*100=33%
[I2]=>[I1^I3] //confidence = sup(I1^I2^I3)/sup(I2) = 2/7*100=28%
[I3]=>[I1^I2] //confidence = sup(I1^I2^I3)/sup(I3) = 2/6*100=33%

因此,如果最小置信度为50%,则前3条规则可以被认为是强关联规则。

Apriori算法的局限性

Apriori算法可能很慢。主要的限制是需要时间来保持大量的候选集,具有非常频繁的项集,低的最小支持度或大的项集,即它不是一个有效的方法,用于大量的数据集。

例如,如果有104个来自频繁1-项集,则需要生成超过107个候选项到2-长度中,然后这些候选项将被测试和累积。此外,为了检测大小为100的频繁模式,即v1,v2… v100,必须生成2^100个候选项集,这导致候选项集生成的成本和时间浪费。因此,它将从候选项集中检查许多集合,并且它将多次重复地扫描数据库以寻找候选项集。当存储器容量有限且事务数量较多时,Apriori将非常低且效率低下。
[来源:https://arxiv.org/pdf/1403.3948.pdf]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/157810.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

oracle21c安装报错【[INS-32014] 指定的 Oracle 基目录位置XXX无效】

一.问题 [INS-32014] 指定的 Oracle 基目录位置XXX无效 二.解决办法 安装包的文件放置不可以在中文字文件夹下面,改为英文【soft】,就可以成功安装完成了!

米尔AM62x核心板,高配价低,AM335x升级首选

AM335x是TI经典的工业MPU,它引领了一个时代,即工业市场从MCU向MPU演进,帮助产业界从Arm9迅速迁移至高性能Cortex-A8处理器。随着工业4.0的发展,HMI人机交互、工业工控、医疗等领域的应用面临迫切的升级需求,AM62x处理器…

mysql统计整个数据库记录条数

SELECTSUM(TABLE_ROWS) FROM(SELECTTABLE_NAME,TABLE_ROWSFROMINFORMATION_SCHEMA.TABLESWHERETABLE_SCHEMA 数据库名,其他不变) t;效果如下:

[pybind11] debug C++代码

首先要有一个项目,我发布在github上了【传送门】 项目的结构如下: 其中src目录下是C代码,test.py是python测试代码。 然后直接开始演示。 1、把项目下载到本地 git clone --recursive https://github.com/immortalmin/pybind11_debug_eg.g…

4月2日-3日·上海 | 3DCC 第二届3D细胞培养与类器官研发峰会携手CGT Asia 重磅来袭

类器官(Organoids)作为干细胞研究领域最重要的成果之一,在基础医学研究、转化医学及药物研发领域展现出巨大的应用潜力,特别是在精准医疗以及药物安全性和有效性评价等方向凭借其先天优势引起了极大的市场关注,成为各大…

采访仁川市政府:探索《仁川登陆行动》体验及其 NFT 作品集背后的故事!

请简单介绍一下自己 大家好,我是仁川市政府品牌经理崔俊浩,负责《仁川登陆行动》的元宇宙活动。很高兴见到您。 是什么启发了你创作《仁川登陆行动》体验? 《仁川登陆行动》并未得到广泛认可,并且被认为是一项几乎不可能完成的任务…

golang学习笔记——斐波纳契数列

斐波纳契数列 编写一个程序来计算某个数字的斐波纳契数列。 斐波那契数列是一个数字列表,其中每个数字是前两个斐波那契数字之和。 例如,数字 6 的序列是 1,1,2,3,5,8,数字 7 的序列是 1,1,2,3,5,8,13,数字 8 的序列是 1,1,2,3,5…

前端实现页面内容的截图与下载(html2canvas)

今天是一个发文的好日子😀~ 👇👇👇 一个需求,要截取页面中的内容并截图保存,来看一看我是怎么实现的吧: 这里需要使用到插件--html2canvas 1.安装并引入html2canvas npm install html2canv…

创作者焦点:Temple of Dum-Dum(试炼 3)

《Bomkus 博士的试炼》创作的幕后花絮。 《创作者焦点》系列共分为六部分,重点介绍《Bomkus 博士的试炼》的游戏创作过程及其独特的游戏功能。 Temple of Dum-Dum: Temple of Dum-Dum 是 Bomkus 博士试炼中的第三个挑战,该试炼由六项体验组成…

阎良区公益创投之“小飞机大梦想” 航模DIY主题活动

创造是人类探索迈出的第一步,科学是开启奇妙世界的金钥匙。为进一步提升“未来星”对科技知识的兴趣,培养他们的科学创新精神,11月16日,阎良区社会组织公益创投——“未来星”助力乡村留守儿童成长计划项目在阎良区聚宝小学开展“…

【hive-解决】HiveAccessControlException Permission denied: CREATEFUNCTION

文章目录 一.任务描述二. 解决 一.任务描述 Error while compiling statement: FAILED: HiveAccessControlException Permission denied: Principal [nameroot, typeUSER] does not have following privileges for operation CREATEFUNCTION [ADMIN PRIVILEGE on INPUT, ADMIN…

springboot 数据传输的加密解密方式一: AES(对称加密)

全文目录,一步到位 1.加密/解密方式一: AES1.1 AES加密简介1.2 AES解密简介1.3 AES细致介绍(外链) 2. AES加密解密使用2.1 应用场景2.2 工具包使用方式2.2.0 (关键)生成一个秘钥(16位)2.2.1 AES加密文本2.2.2 AES解密文本2.2.3 AES加密文件(源)2.2.4 AES解密文件(源)2.2.5 文件…

leetcode刷题日记:168. Excel Sheet Column Title(Excel表列名称)

我不知道你看到这一道题目有什么感觉,我先告诉你我有什么感觉,在此之前我再给你写一组有相同模式的数字。 你先告诉我你有什么感觉,有没有感觉,没有感觉的话,那我们就来更深的了解一下: 我们分析最后一…

Echarts -- 实现动态加载series

一、需求说明 1.1具体说明 根据每天的订单,查询出券码(title字段)的核销情况,如下单成功,已核销,取消订单,订单失败, title字段又分大概七八种,最后数据进行整合完毕之后,前端使用Echarts进行堆叠柱状图显示每天数据。 1.2 需求拆解 根据时间范围查询出每天的订单数据后,根据…

PostgreSQL 数据类型

文章目录 PostgreSQL数据类型说明PostgreSQL数据类型使用单引号和双引号数据类型转换布尔类型数值类型整型浮点型序列数值的常见操作 字符串类型日期类型枚举类型IP类型JSON&JSONB类型复合类型数组类型 PostgreSQL数据类型说明 PGSQL支持的类型特别丰富,大多数…

用户运营:如何搭建用户分析体系

在运营的工作范畴中,用户运营是很重要的一个环节,甚至有公司会设置专门的“用户运营”岗位。 用户运营的价值体现在多个方面,不仅可以帮助引流、吸引更多用户使用产品,在用户正式使用产品之后的运营则更为重要。通过日常用户运营&…

深度学习到智能小车(1)深度学习框架

0.前提 最近新开了一门叫机器学习的课程,老师一直在跟我们讲一些有关这方面的知识,告诉我们一定要学好数学,因为数学是算法的基础。我手上的donkeycar刚好也涉及到Keras深度神经网络,所以出于好奇我去图书馆借回了一本叫《Keras深…

Fedora 项目近日发布了 Fedora Linux 39

导读几经推迟之后,Fedora 项目近日发布了 Fedora Linux 39,这是红帽公司赞助的面向大众的 GNU/Linux 发行版的最新稳定版本,采用了最新的技术和开源应用程序。 Fedora Linux 39 由 Linux 内核 6.5 支持,并提供了一些最新的桌面环境…

顺序表在线OJ题(详解+图解)

1:原地移除数组中所有的元素val(时间复杂度为O(N)空间复杂度为O(1)) 题目的大概意思是:用户自行输入一个数组,还要输入一个val的整形值,然后从数组中移除等于val的元素 我们根据题目的要求,时间…

处理机器学习数据集中字符串列(pandas.get_dummies)

如图,在数据集中week列的数据不是数值型,会导致我们在训练过程中难以处理。 而pandas库中有一个非常好用的函数,独热编码pandas.get_dummies(df) 使用此函数之后,会在原数据中新建各列代表Fri-Sun,值为0或1&#xff…