频繁项集挖掘及其在实际中的应用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
频繁项集挖掘及其在实际中的应用
发表时间:2018-07-18T16:21:45.303Z 来源:《科技中国》2018年2期作者:张松年
[导读] 摘要:超市商品组合销售看似毫无规律,实际上不同商品组合销售的频繁度差异很大。本文针对超市商品销售数据,依据频繁项集挖掘方法中的Apriori算法,采用matlab软件平台进行数学编程并对超市商品数据进行分析和归纳总结,得到超市销售商品组合频繁项与支持度的数学规律,帮助超市获得更大的利润。
摘要:超市商品组合销售看似毫无规律,实际上不同商品组合销售的频繁度差异很大。本文针对超市商品销售数据,依据频繁项集挖掘方法中的Apriori算法,采用matlab软件平台进行数学编程并对超市商品数据进行分析和归纳总结,得到超市销售商品组合频繁项与支持度的数学规律,帮助超市获得更大的利润。
关键词:超市商品;频繁项集;Apriori算法;支持度
0 引言
目前,我国经济飞速发展,个体零售业逐渐兴起,超市数量增大,超市竞争也逐渐增大,如何能让超市在竞争中脱颖而出获得更高的利润,需要对超市销售商品数据进行数学分析、在数据项间寻找频繁项集[1],研究获取商品的销售规律。本文依据频繁项挖掘算法,采用matlab软件平台进行数学编程并对超市商品数据进行分析和归纳总结,获得物品之间的关联规则,使超市商品摆放更合理,获得更高的销售利润。
1 分析方法
以超市典型销售商品项目集啤酒、面包、蛋糕、冰淇淋、牛奶、茶为分析对象,以matlab为软件平台,采用Apriori算法,实现六种商品组合频繁项集与支持度的数学规律。
1.1 Apriori算法
在实现中,关联规则的支持度表示包含所选项目的数量/项目总数量。频繁项集是指集合中所有元素共同出现的次数频率大于或等于最小支持度。而该算法的核心思想为:1)频繁项集的所有非空子集都是频繁项集;2)非频繁项集的超集一定是非频繁项集。该算法利用这两个基本原理对所需要搜索的频繁项集空间进行大大的缩减,从而达到降低算法复杂度(包括时间复杂度和空间复杂度)的目的。
扫描所有数据,根据预先给定的支持度,得到频繁一项集(L1),再利用反复迭代的方法得到频繁二项集(L2)、频繁三项集
(L3)……直到不能再找到新的频繁项集时,停止运算。在计算产生Lk时,是用Lk-1自连接方法(例如在L1基础上生成C2是组合生成的)产生候选集Ck,先用上一段中所提到的该算法核心思想、剪枝策略裁剪候选项,再对候选集中每一个集合在数据库检测是否满足大于最小支持度的条件,满足则加入到Lk中,否则舍弃。
1.2 程序实现
MATLAB相比其他语言如C、C++、JAVA,更适合于做数据实验,在完成相同功能时,语句往往更为简洁,并且便于在跑程序的过程中展示结果,方便交互式编程。以MATLAB为软件平台,完成了频繁项集与支持度数学规律的程序实现。程序由主函数Market Basket和功能函数findFreqItemsets组成,主函数主要实现超市商品数据库的输入、功能函数的调用和结果数据的输出和显示。功能函数实现所给支持度下,商品频繁项集的分析。
功能函数由主函数findFreqItemsets和getFreqOneItemsets、aprioriGen、pruneCandidates三个子函数组成。主函数findFreqItemsets 实现超市商品数据库和最小支持度等数据的输入、三个子函数的调用以及支持度数组、频繁项集是否为空等逻辑判断。子函数getFreqOneItemsets实现频繁项集L(1)的获取;子函数aprioriGen实现由频繁项集L(k-1)得到候选集C(k);pruneCandidates子函数实现由候
选集C(k)得到频繁项集L(k)。功能函数的程序框图见图1。
2.2 频繁项集L2
对于L1中的各项进行再一次组合,从而生成候选集C2,先使用“频繁项集的非空子集一定是频繁项集”的规则筛选掉部分候选集,再把剩余的频繁项集带回到数据库中检测是否符合大于或等于最小支持度的标准,满足则加入L2。数据见表3。
3 结果与讨论
Apriori算法的优点是相对于暴力搜索算法,通过“频繁项集的非空子集一定是频繁项集”这一思想对候选集进行提前剪枝,从而大大缩小了搜索空间。然而,频繁项集挖掘仍是一个难题,即使提前剪枝,Apriori算法在遇到大数据集时,仍然会有复杂度较高导致的难以运算的问题。后来也有算法在Apriori算法基础上进行进一步改进,即进一步减少扫描数据库的次数,如FP-树频集算法等[2]。
我们设定的最小支持度需要根据不同的应用需求来改变,当最小支持度很小时,往往会挖掘出很多的频繁项集,而这其中很多并没有有趣的信息。当最小支持度很大时,可能会导致频繁项集太少甚至没有的情况。所以最小支持度的设定需要一定经验,在实际操作中,可
能会用几个值分别进行试验,取最优值得到最终结果。为研究最小支持度与频繁项集的规律,我们分别对最小支持度minsup=0.3、0.5和0.7的情况进行了分析。分析数据见表5。
当支持度为0.3时,频繁项集达到3级,频繁项集共11组,其中{面包、冰淇淋、牛奶}和{面包、牛奶、茶}两个组合支持度均不低于0.3。当支持度为0.5时,频繁项集达到2级,频繁项集共6组,{面包、牛奶}、{面包、茶}、{牛奶、茶}三个组合支持度均不低于0.5。当支持度为0.7时,频繁项集只有1级,频繁项集共3组,{面包}、{牛奶}、{茶}三个组合支持度均不低于0.7;牛奶卖出的最多,面包和茶其次。
4 结论
采用 Apriori算法和MATLAB软件编程在超市商品销售数据中挖掘出了频繁项,找到了销售商品组合和支持度的关联分析规律和方法,使商品摆放、销售更具有科学性,使超市利润最大化,为超市的商品布局、销售提供了科学依据。参考文献;
[1] 李清峰,杨路明,张晓峰。关联规则中最大频繁项目集的研究[J].计算机应用研究,2005(1):93-95。
[2]朱明。数据挖掘[M].合肥:中国科学技术大学出版社,2002。