1.数据挖掘 | 关联规则算法 Apriori
2.Apriori算法解析(以R语言为例)(三)
3.数据分析方法—Apriori算法简介
4.推荐算法--Apriori原理
5.关联规则挖掘:Apriori算法的算算法深度探讨
数据挖掘 | 关联规则算法 Apriori
欢迎所有对数据挖掘和智能学习感兴趣的朋友,让我们一起探索Apriori算法在关联规则挖掘中的法源重要性,共同学习,码下共同进步!代码
Apriori算法作为关联规则挖掘的算算法基石,其名称源于算法利用频繁项集的法源晒白金1741溯源码先验知识。年,码下Rakesh Agrawal等人首次提出如何在顾客交易数据库中发现项集间的代码关联规则问题,自此,算算法Apriori算法备受关注。法源
在数据挖掘中,码下基础概念至关重要。代码事务通常表示为包含多个项目的算算法集合,每个项目(item)是法源事务的组成部分。频繁项集是码下频繁出现的项目集合。关联规则如X => Y,表示当X出现时,Y也常常出现。规则的强度由支持度(X∪Y在所有事务中的出现次数占比)和置信度(X出现时Y出现的概率)衡量。
计算支持度和置信度是Apriori算法的核心步骤。例如,如果支持度阈值为%,通过计算每个可能的项集,找出满足条件的频繁项集。接下来,利用这些频繁项集生成关联规则,如置信度大于%的规则。
生成频繁项集是Apriori算法的关键,通过一个具体的交易数据库示例,我们可以直观地看到如何通过迭代和剪枝过程找出频繁项集。最终,这些频繁项集将作为基础,用于生成具有足够置信度的强关联规则。
Apriori算法解析(以R语言为例)(三)
关联规则的图形化表示能够直观地展示不同商品之间的关联性,有助于理解消费者购物行为模式。在R语言中,解析和可视化关联规则的步骤如下:
首先,使用`plot(last.rules,雨荷源码control = list(jitter=2,col=rev(brewer.pal(9,"Greens")[4:9])),shading = "lift")`绘制散点图,此处`last.rules`是通过Apriori算法对Groceries数据库进行分析后得到的关联规则集合。散点图的横轴代表支持度,纵轴表示置信度,颜色深浅对应Lift值,抖动值增加(jitter=2)以减少数据点的重叠,调色板颜色渐变(brewer.pal(n, name))从第四到第九个绿色色阶中选取,以增强视觉区分度。结果图3-7显示,大部分规则的支持度在0.1以内,置信度在0-0.8之间。
接着,通过`last.rules <- apriori(Groceries,parameter = list(support=0.,confidence=0.))`进一步筛选出支持度大于0.、置信度大于0.的关联规则集合。
对上述规则,我们特别关注后件包含“vegetables”的关联规则,通过`vegie.rules <- subset(last.rules,subset=rhs %pin% "vegetables")`进行提取。然后,使用`plot(vegie.rules,method="graph")`绘制关联规则图,图3-8直观展示了后件为“vegetables”的特定关联规则。
图3-8中,箭头的方向性表明了规则的前件指向后件,箭头的出发点为前件,终点为后件,例如“rolls/buns”作为前件,“other vegetables”作为后件,形成关联规则。图中“other vegetables”呈现出一定的集中趋势,提示在购物篮中,其他蔬菜类商品与多种其他商品形成关联规则,显示出较高的关联度,成为购物篮中不可或缺的商品。
数据分析方法—Apriori算法简介
数据挖掘中的关联规则分析是一种关键工具,它揭示了数据之间的深层次关联,有助于决策制定。以购物篮分析为例,Apriori算法,由R.Agrawal在年提出,鸿蒙4源码是挖掘单维布尔型关联规则的基础算法。该算法通过识别事务中的频繁项集,帮助零售商理解消费者的购买行为,制定有效营销策略。
Apriori算法的核心概念包括:项目(Item)、项集、事务和事务集,以及关联规则、支持度、置信度等关键指标。支持度衡量项集的出现频率,置信度则表示在包含一个项目后另一个项目出现的频率。频繁项集和最小支持度是筛选出重要关联的阈值,而强关联规则则要求规则同时满足支持度和置信度的最低要求。
算法的实现是逐层迭代的,从频繁1项集开始,通过搜索生成更高维度的频繁项集,直到无法找到新的频繁项集。例如,从L1生成L2,再从L2生成L3,以此类推。此过程通过非空子集构造关联规则,形成具有实用价值的规则集。
尽管Apriori算法因其简单性和效率受到青睐,但也面临挑战,尤其是当数据集庞大时,候选频繁项集的数量急剧增加,且验证过程需要全面扫描数据库,效率会受到影响。总体而言,Apriori算法在数据挖掘中的应用广泛,但优化策略和数据预处理在实际操作中尤为重要。
推荐算法--Apriori原理
Apriori算法是一种基于频繁项集的挖掘算法,在计算机科学以及数据挖掘领域中,先验算法(Apriori Algorithm)是关联规则学习的经典算法之一。其设计目的墨涩源码是为了处理包含交易信息内容的数据,可以用来找出数据集中频繁出现的数据集合。找出这样的一些频繁集合有利于决策,例如通过找出超市购物车数据的频繁项集,可以更好地设计货架的摆放。需要注意的是它是一种逐层迭代的方法,用于发现大规模数据集中的频繁项集(频繁项集是指在数据集中经常同时出现的物品集合)以及关联规则(关联规则是指在数据集中,两个物品之间的关系),通过关联规则实现推荐效果。
啤酒与尿布的经典关联故事:美国的妇女们经常会嘱咐她们的丈夫下班后为孩子买尿布,而丈夫在买完尿布后又要顺手买回自己爱喝的啤酒,因此啤酒和尿布在一起被购买的机会很多。这个现象被沃尔玛进行数据分析时发现,对啤酒和尿布进行捆绑销售使得销量双双增加。
由以上故事可以提出问题:哪些商品会被顾客一次性同时购买?
针对问题分析结果可以给出关联分析策略:
(1)经常同时购买的商品可以摆近一点,以便进一步刺激这些商品一起销售。
(2)规划哪些附属商品可以降价销售,以便刺激主体商品的捆绑销售。
下面介绍怎么得到分析结果。
以购物篮交易(market basket transaction)为例。下表给出了一个这种数据集的例子,表中每一行对应一次购物交易,包含一个唯一标识TID和特定顾客购买的商品集合。
在上表中,每一个包含一个或多个项的集合被称为项集(itemset),如果一个项集包含k个项,则称它为 k项集。比如表中第一个交易的{ Bread,Milk}就是一个2项集。关联分析是一种在大规模数据集中寻找相互关系的过程。这些关系可以有频繁项集和关联规则两种形式,其概念及相关概念如下:
先验定律: 获得频繁项集,最简单直接的方法就是暴力搜索法,但是这种方法计算量过于庞大,如下图所示,k项的数据集可能生成[公式] 个项集。
可见(暴力搜索)Brute-force在实际中并不可取。必须设法降低产生频繁项集的计算复杂度。此时可以利用支持度对候选项集进行剪枝,这也是Frappe源码分析Apriori算法所利用的第一条先验原理:
例如:假设一个集合{ A,B}是频繁项集,即A、B同时出现在一条记录的次数大于等于最小支持度min_support,则它的子集{ A},{ B}出现次数必定大于等于min_support,即它的子集都是频繁项集。
2.Apriori定律2:如果一个集合不是频繁项集,则它的所有超集都不是频繁项集。
举例:假设集合{ A}不是频繁项集,即A出现的次数小于 min_support,则它的任何超集如{ A,B}出现的次数必定小于min_support,因此其超集必定也不是频繁项集。下图表示当我们发现{ A,B}是非频繁集时,就代表所有包含它的超集也是非频繁的,即可以将它们都剪除。
算法步骤: Apriori算法的目标是找到最大的K项频繁集。这里有两层意思,首先,我们要找到符合支持度标准的频繁集。但是这样的频繁集可能有很多。第二层意思就是我们要找到最大个数的频繁集。Apriori算法采用了迭代的方法,先搜索出候选1项集及对应的支持度,剪枝去掉低于支持度的1项集,得到频繁1项集。然后对剩下的频繁1项集进行连接,得到候选的频繁2项集,筛选去掉低于支持度的候选频繁2项集,得到真正的频繁二项集,以此类推,迭代下去,直到无法找到频繁k+1项集为止,对应的频繁k项集的集合即为算法的输出结果。
输入:数据集合D,支持度阈值min_support
输出:最大的频繁k项集
一、扫描整个数据集,得到所有出现过的数据,作为候选频繁1项集。k=1,频繁0项集为空集。
二、挖掘频繁k项集
a) 扫描数据计算候选频繁k项集的支持度
b) 去除候选频繁k项集中支持度低于阈值的数据集,得到频繁k项集。如果得到的频繁k项集为空,则直接返回频繁k-1项集的集合作为算法结果,算法结束。如果得到的频繁k项集只有一项,则直接返回频繁k项集的集合作为算法结果,算法结束。
c) 基于频繁k项集,连接生成候选频繁k+1项集。
三、 令k=k+1,转入步骤二。
应用案例 数据集D有4条记录,分别是,,和。现在我们用Apriori算法来寻找频繁k项集,最小支持度设置为%。首先我们生成候选频繁1项集,包括我们所有的5个数据并计算5个数据的支持度,计算完毕后我们进行剪枝,数据4由于支持度只有%被剪掉。我们最终的频繁1项集为,现在我们链接生成候选频繁2项集,包括,,,,,共6组。此时我们的第一轮迭代结束。
进入第二轮迭代,我们扫描数据集计算候选频繁2项集的支持度,接着进行剪枝,由于和的支持度只有%而被筛除,得到真正的频繁2项集,包括,,,。现在我们链接生成候选频繁3项集,, 和共3组,这部分图中没有画出。通过计算候选频繁3项集的支持度,我们发现和的支持度均为%,因此接着被剪枝,最终得到的真正频繁3项集为一组。由于此时我们无法再进行数据连接,进而得到候选频繁4项集,最终的结果即为频繁3三项集。
关联规则产生 规则是从频繁项集中提取的,也可以说是从最大频繁项集中提取。最大频繁项集指的是包含项最多的频繁项集,从最大频繁项集(可能有多个)中一定可以提取出所有的频繁项集。由于在生成频繁项集阶段,就已经获取了所有的频繁项集的支持度计数,因此通过置信度提取规则时,不再需要扫描数据集。
在生成频繁项集时,可以依据两条先验规则减少计算量,而在提取关联规则时,只有一条规则可以利用:如果关联规则X[公式] Y不满足置信度要求,那么X-x' [公式] Y+ x'也不满足置信度要求,其中x'是X的子集。这条规则可以这样理解: 假设由频繁项集 { a,b,c,d}产生关联规则,关联规则{b,c,d}→{ a} 具有低置信度,则可以丢弃后件包含 a 的所有关联规则,如{ c,d}→{ a,b},{ b,d}→{ a,c} 等。
基于该规则,可以采用如下的方式从最大频繁项集中提取规则:
(1) 找出后件只有一个项的所有满足置信度要求的规则。对于那些后件只有一项(假设为a)、不满足置信度要求的规则,可以直接剔除掉所有后件中包含的规则,例如:
(2) 通过合并两个规则后件生成新的候选规则,然后判断其是否满足置信度要求,同样的,剔除掉那些不满足置信度要求的候选规则,以及这些规则中后件的超集对应的规则。例如,通过合并abd→c 与abc→d得到新的候选规则ab→cd,如果该规则不满足置信度要求,那么后件中包含的候选规则也均不满足要求,例如a→bcd。
(3) 按照前两步的方式,通过逐步合并规则后件生成候选规则,然后对这些候选规则进行筛选,得到满足置信度要求的规则。
算法总结 Apriori算法的基本思想是通过迭代寻找频繁项集。首先,它扫描数据集并计算每个物品出现的频率,然后找出所有出现频率大于或等于最小支持度阈值的物品集合,这些物品集合称为频繁项集。接着,它利用频繁项集来生成候选项集,并在候选项集中计算每个项集的支持度。最后,根据最小置信度阈值,从频繁项集中生成关联规则。
Apriori算法的优点在于它的简单性和可扩展性。它能够处理大规模数据集并发现频繁项集和关联规则,因此被广泛应用于市场分析、商业智能、网络安全等领域。然而,Apriori算法也存在一些缺点,例如计算复杂度高、需要多次扫描数据集等。因此,一些改进算法,如FP-Growth算法、ECLAT算法等也得到了广泛的应用,但是理解Apriori算法是理解其它Aprior改进系列算法的前提。如有谬误望请直接指出!!!
关联规则挖掘:Apriori算法的深度探讨
在本文中,我们深入探讨了Apriori算法的理论基础、核心概念及其在实际问题中的应用。文章不仅全面解析了算法的工作机制,还通过Python代码段展示了具体的实战应用。此外,我们还针对算法在大数据环境下的性能局限提出了优化方案和扩展方法,最终以独到的技术洞见进行了总结。
Apriori算法是一种用于挖掘数据集中频繁项集的算法,进而用于生成关联规则。这种算法在数据挖掘、机器学习、市场篮子分析等多个领域都有广泛的应用。
关联规则挖掘是数据挖掘中的一个重要分支,其目标是发现在一个数据集中变量间存在的有趣的关联或模式。例子:假设在一个零售商的交易数据中,如果客户购买了啤酒,他们也很有可能购买薯片。这里的“啤酒”和“薯片”就形成了一个关联规则。
频繁项集是在数据集中出现次数大于或等于最小支持度(Minimum Support Threshold)的项的集合。例子:在超市购物数据中,如果“牛奶”和“面包”这一组合经常一起出现在同一个购物篮里,并且出现的次数超过了最小支持度,那么{ "牛奶", "面包"}就是一个频繁项集。
支持度是一个度量,用于表示一个项集在整个数据集中出现的频率。置信度表示在包含项集X的所有事务中,也包含项集Y的事务的概率。提升度用于衡量项集X和Y的出现是否相互独立。
Apriori算法由于其简单、高效的特性,在数据挖掘中有着广泛的应用。它不仅能用于挖掘数据中的隐藏模式,还能用于诸如产品推荐、用户行为分析、网络安全等多个应用场景。例子:在电子商务网站中,Apriori算法可以用于分析用户购买历史数据,进而实现个性化推荐,提升销售额和用户满意度。
Apriori算法的执行流程主要包含两个步骤:频繁项集生成和关联规则生成。例子:假设有一个购物交易数据集,其中包括5笔交易。第一步是计算所有单一商品(如“牛奶”,“面包”等)在这5笔交易中的出现次数,并筛选出那些出现次数达到最小支持度的商品。对于频繁项集 { "牛奶", "面包", "黄油"},可能的规则有 "牛奶, 面包 -> 黄油", "牛奶, 黄油 -> 面包" 等。计算这些规则的置信度,并筛选出满足最小置信度的规则。
Apriori算法的优缺点:优点包括简单易懂、易于实现和理解,缺点是计算复杂度较高,特别是在大数据集上。优化Apriori算法的主要方法包括减少数据扫描次数、采用数据压缩技术、使用Hashing技术等。
Apriori算法在实际应用中,特别是在购物篮分析和推荐系统中有着广泛的应用。通过Python实现Apriori算法,并用一个简单的购物数据集进行演示,不仅学习了如何在Python中实现Apriori算法,还了解了它在购物篮分析中的具体应用。
针对Apriori算法在大数据环境下的性能局限,提出了优化方案和扩展方法,包括并行化、支持近似挖掘、集成其他数据挖掘算法等。
通过本文的探讨,我们对Apriori算法有了全面且深入的了解,并掌握了它在实际问题中的应用。然而,我们也注意到了这一算法在面对大规模数据时存在的局限性。在今后的工作中,探究这些技术洞见的相关性和应用价值,以及将Apriori算法与现代计算架构更紧密地结合,将是关键的研究方向。