【机器学习】Apriori算法详解 整理

新手也能看懂的BUUCTF LoveSQL注入通关实录:从万能密码到爆库拿Flag 本文详细解析了BUUCTF LoveSQL注入的实战过程,从万能密码登录到数据库结构探索,再到最终获取flag的全流程。通过通俗易懂的比喻和具体SQL语句示例,帮助新手理解SQL注入原理及防御措施,是Web安全学习的实用指南。 阅读详情

1、数据挖掘与机器学习

有时候,人们会对机器学习与数据挖掘这两个名词感到困惑。如果你翻开一本冠以机器学习之名的教科书,再同时翻开一本名叫数据挖掘的教材,你会发现二者之间有相当多重合的内容。比如机器学习中也会讲到决策树和支持向量机,而数据挖掘的书里也必然要在决策树和支持向量机上花费相当的篇幅。可见二者确有相当大的重合面,但如果细研究起来,二者也的确是各自不同的领域。
大体上看,数据挖掘可以视为数据库、机器学习和统计学三者的交叉。简单来说,对数据挖掘而言,数据库提供了数据管理技术,而机器学习和统计学则提供了数据分析技术。所以你可以认为数据挖掘包含了机器学习,或者说机器学习是数据挖掘的弹药库中一类相当庞大的弹药集。既然是一类弹药,其实也就是在说数据挖掘中肯定还有其他非机器学习范畴的技术存在。Apriori算法就属于一种非机器学习的数据挖掘技术。
我们都知道数据挖掘是从大量的、不完全的、有噪声的、模糊的、随机的数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。 而机器学习是以数据为基础,设法构建或训练出一个模型,进而利用这个模型来实现数据分析的一类技术。这个被训练出来的机器学习模型当然也可以认为是我们从数据中挖掘出来的那些潜在的、有意义的信息和知识。在非机器学习的数据挖掘技术中,我们并不会去建立这样一个模型,而是直接从原数据集入手,设法分析出隐匿在数据背后的某些信息或知识。在后续介绍Apriori算法时,你会相当明显地感受到这一特点。

2、基本概念

许多商业企业在日复一日的运营中积聚了大量的交易数据。例如,超市的收银台每天都收集大量的顾客购物数据。例如,下表给出了一个这种数据集的例子,我们通常称其为购物篮交易(market basket transaction)。表中每一行对应一个交易,包含一个唯一标识TID和特定顾客购买的商品集合。零售商对分析这些数据很感兴趣,以便了解其顾客的购买行为。可以使用这种有价值的信息来支持各种商业中的实际应用,如市场促销,库存管理和顾客关系管理等等。

令I={i1,i2,⋯,id}是购物篮数据中所有项的集合,而T={t1,t2,⋯,tN}是所有交易的集合。包含0个或多个项的集合被称为项集(itemset)。如果一个项集包含k个项,则称它为 k-项集。显然,每个交易ti包含的项集都是I的子集。
关联规则是形如 X→Y 的蕴涵表达式,其中X和Y是不相交的项集,即 X∩Y=∅。关联规则的强度可以用它的支持度(support)和置信度(confidence)来度量。支持度确定规则可以用于给定数据集的频繁程度,而置信度确定Y在包含X的交易中出现的频繁程度。支持度(s:Fraction of transactions that contain both X and Y)和置信度(c:How often items in Y appear in transactions that contain X)这两种度量的形式定义如下:

 

例如考虑规则{Milk, Diaper}→{Beer},则易得:

Association Rule Mining Task:Given a set of transactions T, the goal of association rule mining is to find all rules having:
1)support ≥ minsup threshold
2)confidence ≥ minconf threshold
因此,大多数关联规则挖掘算法通常采用的一种策略是,将关联规则挖掘任务分解为如下两个主要的子任务。

频繁项集产生:其目标是发现满足最小支持度阈值的所有项集,这些项集称作频繁项集(frequent itemset)。
规则的产生:其目标是从上一步发现的频繁项集中提取所有高置信度的规则,这些规则称作强规则(strong rule)。
通常,频繁项集产生所需的计算开销远大于产生规则所需的计算开销。

最容易想到、也最直接的进行关联关系挖掘的方法或许就是暴力搜索(Brute-force)的方法:
1)List all possible association rules
2)Compute the support and confidence for each rule
3)Prune rules that fail the minsup and minconf thresholds

然而,由于Brute-force的计算量过大,所以采样这种方法并不现实!格结构(Lattice structure)常被用来枚举所有可能的项集。如下图所示为I={a,b,c,d,e}
的项集格。一般来说,排除空集后,一个包含k
个项的数据集可能产生2k−1
个频繁项集。由于在实际应用中k
的值可能非常大,需要探查的项集搜索空集可能是指数规模的。

 

 

发现频繁项集的一种原始方法是确定格结构中每个候选项集(candidate itemset)的支持度计 数。为了完成这一任务,必须将每个候选项集与每个交易进行比较,如下图所示。如果候选项集包含在交易中,则候选项集的支持度计数增加。例如,由于项集{Bread, Milk}出现在事务1、4 和5中,其支持度计数将增加3次。这种方法的开销可能非常大,因为它需要进行O(NMw)次比 较,其中N是交易数,M=2^k−1是候选项集数,而w是交易的最大宽度(也就是交易中最大的项数)。

3、先验原理

在上一小节的末尾,我们已经看到Brute-force在实际中并不可取。我们必须设法降低产生频繁项集的计算复杂度。此时我们可以利用支持度对候选项集进行剪枝,这也是Apriori所利用的第一条先验原理:
Apriori定律1:如果一个集合是频繁项集,则它的所有子集都是频繁项集。
例如:假设一个集合{A,B}是频繁项集,即A、B同时出现在一条记录的次数大于等于最小支持度min_support,则它的子集{A},{B}出现次数必定大于等于min_support,即它的子集都是频繁项集。
Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。
举例:假设集合{A}不是频繁项集,即A出现的次数小于 min_support,则它的任何超集如{A,B}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。
下图表示当我们发现{A,B}是非频繁集时,就代表所有包含它的超级也是非频繁的,即可以将它们都剪除。

 

4、Apriori算法

R. Agrawal 和 R. Srikant于1994年在文献【2】中提出了Apriori算法,该算法的描述如下:

或者在其他资料上更为常见的是下面这种形式化的描述(注意这跟前面的文字描述是一致的):

 

5、实例介绍

 

 

下面是一个具体的例子,最开始数据库里有4条交易,{A、C、D},{B、C、E},{A、B、C、E},{B、E},使用min_support=2作为支持度阈值,最后我们筛选出来的频繁集为{B、C、E}。

 

 

上述例子中,最值得我们从L2到C3的这一步。这其实就是在执行伪代码中第一个蓝色框条所标注的地方:Ck+1=GenerateCandidates(Lk),具体来说在Apriori算法中,它所使用的策略如下:


可见生成策略由两部分组成,首先是self-joining部分。例如,假设我们有一个L3={abc, abd, acd, ace, bcd}(注意这已经是排好序的}。选择两个itemsets,它们满足条件:前k-1个item都相同,但最后一个item不同,把它们组成一个新的Ck+1的项集。如下图所示,{abc}和{abd}组成{abcd},{acd}和{ace}组成{acde}。生成策略的第二部分是pruning。对于一个位于Ck+1中的项集c,s是c的大小为k的子集,如果s不存在于Lk中,则将c从Ck+1中删除。如下图所示,因为{acde}的子集{cde}并不存在于L3中,所以我们将{acde}从C4中删除。最后得到的C4,仅包含一个项集{abcd}。


回到之前的例子,从L2到C3的这一步,我们就只能获得{B、C、E}。以上便是Apriori算法的最核心思想。当然在具体实现的时候,如何Count Supports of Candidates也是需要考虑的问题,我们这里略去这部分内容的讨论。

文章来源:
http://blog.youkuaiyun.com/baimafujinji/article/details/53456931

机器学习—关联规则分析之Apriori算法及其python实现 文章目录引言一、一些概念1.关联规则的一般形式2.最小支持度和最小置信度3.项集4.支持度计数二、Apriori算法:使用候选产生频繁项集1.Apriori的性质2.Apriori算法实现过程3.Apriori算法实现过程实例三.Apriori算法—python实现 引言   关联规则分析是数据挖掘中最活跃的研究方法之一,目的是在一个数据集中找到各项之间的关联关系,而这种关系并没有在数据中直接体现出来。以超市的销售数据为例,当存在很多商品时,可能的商品组合数量达到了令人望而却步的程度,这是提取关联规则的最大 阅读详情

相关推荐

机器学习9—关联分析之Apriori算法和FP-Growth算法

FpGrowth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。FP-Tree(频繁模式树):是一个树形结构,包括一个频繁项组成的头表,一个标记为null的根结点,它的子结点为一个项前缀子树的集合。频繁项:单个项目的支持度超过最小支持度则称其为频繁项(frequentitem)。频繁头表:频繁项头表的每个表项由两个域组成,一个是项目名称,一个是链表指针,指向下一个相同项目名称的结点。生成FP-Growth树。......

ex_6450的博客 7613

数据挖掘——关联规则分析(二)Apriori算法

Apriori算法 1、Apriori算法最早是Agrawal和Srikant在1996年提出的,后经不断完善,已成为数据挖掘中简单关联分析的核心算法。 2、为克服简单搜索可能产生大量无效规则,计算效率低下,且在大样本下甚至可能无法实现的问题,Apriori算法包括如下两大部分: 第一,搜索频繁项集。 第二,依据频繁项集产生关联规则。 搜索频繁项集 1、频繁项集:支持度不低于用户设定最小支持度阈值的项集。 2、频繁项集的性质: 性质1:频繁项集的子集必为频繁项集。 性质2:非频...

woxingliu2018的博客 2381

机器学习:Peter Harrington《机器学习实战》代码jupyter notebook整理

个人使用jupyter notebook整理的peter的《机器学习实战》代码,使其更有层次感,更加连贯,也根据自己的代码习惯,加了一些自己的修改,以及注释。 既是为了给自己做一个笔记,如果有人需要,也是希望大家一起学习。 GitHub传送门 kmeans文件夹:kmeans + 二分kmeans算法 k-Nearest Neighbor文件夹:k近邻算

huakai16的博客 7495

关联分析:Apriori算法

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 步骤1:设定最小支持度和最小置信度 首先设定最小支持度为2/5,即40%;最小置信度为4/5,即80%。 步骤2:根据最小支持度找出所有的频繁项集 这一步骤是关联分析中较为重要的一个环节,我们需要找到所有的频繁项集,因为强关联规则都是从频繁项集中产生的。 举例来说,项集{A,B,C,D}只出现了1次,支持度为1/5,小于最小支持度2/5,该项集就不是频繁项集,这就意味着很难从该项集中挖掘出类似{A,B,C}→{D}的强关联规则,即.

m0_46388544的博客 8480

【机器学习与数据挖掘实战 | 医疗】案例18:基于Apriori算法的中医证型关联规则分析

本案例针对三阴乳腺癌患者,经问卷调查收集数据并筛选处理形成原数据,经清洗、特征选择与变换后,构建Apriori模型,基于业务理解与建模结果,分析患者症状与中医证型关联,并据症状给出建议 。

Morse_Chen的博客 1380

stm32H743基于CubeMX配置为双ADC多通道DMA规则采样

stm32H743的ADC支持的最大频率为36MHz,有相关资料上说是可以超频,具体技术细节不多讨论。 需求: 使用stm32H743的ADC采集5路ovrc

xtqbp的博客 4361

数据挖掘十大算法--Apriori算法

Apriori 算法是一种用于关联规则挖掘的经典算法。它用于在大规模数据集中发现频繁项集,进而生成关联规则。关联规则揭示了数据集中项之间的关联关系,常被用于市场篮分析、推荐系统等应用。Apriori 算法的主要优点是它相对简单,并且易于理解和实现。然而,在处理大规模数据集时,它可能面临性能挑战。后续的改进算法,如 FP-Growth 等,通过不同的方式优化了频繁项集的发现过程,提高了算法的效率。

Wzideng@qq.com 1万+

用友U8自定义按钮开发:从基础配置到实战业务集成

本文详细介绍了用友U8自定义按钮开发的完整流程,从基础配置到实战业务集成。通过实际案例演示如何在U8系统中添加和替换功能按钮,包括数据库配置、SQL脚本编写和VB组件开发等关键技术点,帮助企业用户实现业务场景的深度定制。

weixin_29698641的博客 254

基于Python的机器学习实战:Apriori

基于Python的机器学习实战:Apriori 目录: 1.关联分析 2. Apriori 原理 3. 使用 Apriori 算法来发现频繁集 4.从频繁集中挖掘关联规则 5. 总结 1.关联分析 返回目录 关联分析是一种在大规模数据集中寻找有趣关系的任务。这种关系表现为两种形式: 1.频繁项集(frequency item sets):经常同时出现的一...

weixin_30522183的博客 339

Altium Designer 16来自原理图/PCB的各种报错 (持续更新):

NO1.Nets with only one pin: 根本原因: 在BGA的原理图绘制时,我一般习惯拉出该元件的所有IO的网络,这方便利于我开发其他款板卡。同样也会因为不同板卡的需求不同而造成有些IO并没有使用到,也就是整个原理图中only one pin。 解决方案: 鼠标右键工程文件>工程参数>下图圈中的选项将“错误”更改为“警告/不报告” ...

优快云@猿谷攻城狮 1万+

# 执行 DISM 命令时出错 87 未在此上下文中识别出 restorehealth 选项。解决方法

# 执行 DISM 命令时出错 87 未在此上下文中识别出 restorehealth 选项。解决方法

段子手168的博客 1万+

【机器学习】采用关联规则算法分析蔬菜涨跌规律实验(Apriori算法)

实验目的:在掌握关联规则算法的原理的基础上,能够应用关联规则算法解决实际问题。 实验内容:根据实验数据,采用Apriori等关联规则发现算法,给出相关关联规则。 实验要求:给出数据预处理过程、关联规则发现算法及发现关联规则,并对关联规则结果进行分析说明。 实验题目:蔬菜价格相关性分析 蔬菜的价格会受季节、天气等多方面因素的影响,但许多会出现同涨或者同跌等现象,请根据给出的蔬菜价格数据,采用关联规则...

○( ^皿^)っHiahiahia…的博客 5997

ch32v103xx 烧写

烧写方式 串口uart, usb,swd(wch link)但不建议按此使用,参官方说明。

qq_39239990的博客 637

apriori算法实现_MLK | 机器学习常见算法优缺点了解一下

MLK,即Machine Learning Knowledge,本专栏在于对机器学习的重点知识做一次梳理,便于日后温习,这篇文章很久之前在本公众号发过,现在拿回来整理下,也算是一种温故而知新了。 Index决策树算法分类算法聚类算法集成算法(AdaBoost算法)人工神经网络算法排序算法关联规则算法(Apriori算法)01 决策树算法决策树优点1、决策树易于理解和解释,可以可视化分析,容易提取...

weixin_31539461的博客 2316

从零开始:使用PacBio HiFi和ONT超长读取组装基因组(保姆级教程)

本文提供了一份从零开始的基因组组装保姆级教程,详细讲解了如何融合PacBio HiFi高精度读长与ONT超长读长数据。内容涵盖数据质控、预处理、混合组装策略选择、结果评估及Hi-C支架构建等关键步骤,旨在帮助研究人员获得高质量的完整基因组。

weixin_29266647的博客 202

STM32低功耗模式下ADC采样抖动的5个隐藏陷阱及解决方案(实测避坑)

本文深入探讨了STM32低功耗模式下ADC采样抖动的5个常见陷阱及解决方案,包括多通道采样电压跃迁、外设开关信号稳定、低功耗模式与ADC时钟同步、输入阻抗失配以及基准电压稳定性问题。通过实测数据和优化代码示例,帮助工程师有效规避ADC采样数据抖动问题,提升物联网设备的测量精度和稳定性。

weixin_30316097的博客 381

机器学习之apriori算法实现及案例

apriori 算法 # -*- coding: utf-8 -*- """ Created on Tue Jan 1 21:06:36 2019 @author: muli """ from __future__ import print_function import pandas as pd #自定义连接函数,用于实现L_{k-1}到C_k的连接 def connect_stri...

muli 1586

Sonatype nexus3 数据迁移及升级3.71+(迁移到H2数据库)

nexus3旧版本OrientDB升级H2,及整体迁移nexus3数据到其它服务器。

葫芦娃 5550

机器学习10大经典算法详解

本文归纳了机器学习的10大算法,并分别整理了各算法的优缺点及主要特征,供大家学习参考。读完本文,你将掌握以下机器学习10大算法的基本概念及主要适用情况,是机器学习过程不可错过的基础概念篇。

weixin_46880696的博客 3114

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【项目实战】Python基于Apriori关联规则算法实现商品零售购物篮分析

Python基于Apriori关联规则算法实现商品零售购物篮分析

张陈亚的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

机器学习方法:使用Apriori算法和FP-growth算法进行关联分析(Python版)

转自:http://blog.youkuaiyun.com/lizhengnanhua/article/details/9061755 感谢红兰整理的PPT,简单易懂,现在将其中精彩之处整理,与大家分享。 一、Apriori算法简介:  Apriori算法是一种挖掘关联规则的频繁项集算法,其核心思想是通过候选集生成和情节的向下封闭检测两个阶段来挖掘频繁项集。 Apriori(先验的,推测的)算

ChelseaForeverLove的博客 2213

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

机器学习算法整理面试宝典

机器学习算法 传统机器学习算法 本篇整理了传统的机器学习算法在面试中的考点,主要涉及算法的基本原理和具体细节。包含的算法有:分类算法:逻辑回归、决策树、随机森林、朴素贝叶斯、KNN、GBDT、XgBoost和LightGBM、stacking集成模型、最大熵模型;聚类算法:K-Means和混合高斯模型;降维算法:PCA、LDA;推荐系统算法:协同过滤;关联规则算法:Apriori算法;图模型:HM...

weixin_40259742的博客 1451

2023 年你应该知道的所有机器学习算法

在过去的几年里,根据自己的工作经验,整理了我认为最重要的机器学习算法。通过这个,我希望提供一个工具和技术的存储库,以便您可以解决各种数据科学问题!

Python学习与数据挖掘 7833

机器学习之Apriori算法python实现

机器学习之Apriori函数 自行编写的Apriori方法 # -*- coding: utf-8 -*- """ Created on Sun Dec 23 15:50:25 2018 @author: muli """ from __future__ import print_function import pandas as pd #自定义连接函数,用于实现L_{k-1}...

muli 1521

IT大佬整理的Python机器学习十大算法案例

1、k-近邻算法:手写字符识别 通过算法训练识别字符为0-9的数字,也可以为A-Z的字符,目前sklearn提供的数据集里面为0-9的数字。数据训练前需要用图像处理软件将数字转换成宽高为32X32的黑白图像,然后将其变换成1x1024的向量。 2、朴素贝叶斯:垃圾邮件过滤 邮箱系统如何分辨一封Email是否属于垃圾邮件?这应该属于文本挖掘的范畴,通常会采用朴素贝叶斯的方法进行判别。它的主要原...

python学习者的博客 2574
上一篇: 【机器学习】Boost算法(GDBT,AdaBoost,XGBoost)整理
下一篇: Breeze库API总结(Spark线性代数库)
CWS_chen
博客等级 码龄11年 220粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值