一种基于改进PrefixSpan算法的交易数据频繁序列模式挖掘方法与流程

文档序号:26953206发布日期:2021-10-16 02:34阅读:236来源:国知局
一种基于改进PrefixSpan算法的交易数据频繁序列模式挖掘方法与流程
一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法
技术领域
1.本发明涉及交易数据挖掘技术领域,特别是涉及一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法。


背景技术:

2.大型连锁超市的交易数据有一系列的用户事务数据库,每一条记录包括用户的id,事务发生的时间和事务涉及的项目,如果能在其中挖掘涉及事务间关联关系的模式,即用户几次购买行为间的联系,可以采取更有针对性的营销措施。
3.目前,在交易数据频繁序列模式挖掘算法中,各专家、学者花费了大量的时间和精力提出了不少典型的方法,如gsp、spade、prefixspan算法等。其中,gsp算法减少了需要扫描候选序列的数量和多余无用模式的产生,但针对大规模序列数据库会产生大量的候选序列模式,且需要对序列数据库进行循环扫描;spade算法扫描数据库次数降低仅为3次,但在原始数据巨大的情况下会产生大量垂直数据库;prefixspan算法的优点是不用产生候选序列,相比于其它两种算法,其内存消耗相对稳定,而且效率更高,但其可能会出现重复投影数据库问题,从而导致对重复的投影数据库进行挖掘划分,造成一定的重复计算,增大了时间/空间消耗。因此,一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法亟待研究。


技术实现要素:

4.本发明的目的是提供一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,用于减少交易数据频繁序列模式挖掘的时间/空间消耗,提高执行效率。
5.为实现上述目的,本发明提供了如下方案:
6.一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,包括以下步骤:
7.s1)对获取的商品交易数据进行预处理,得到商品交易数据集,并存入交易序列数据库d中;
8.s2)扫描交易序列数据库d,对每个长度为1的单项进行计数,得到每个单项的序列支持度sup并降序排列,选出前μ项且满足最小支持度min_sup的单项作为初始前缀;
9.s3)采取深度优先遍历,对第一个初始前缀的位置进行计算,并保存在前缀位置信息表中,生成商品交易投影数据库;再对其进行迭代,直至无法生成新的商品交易投影数据库,保存每个商品交易投影数据库生成的频繁序列模式集合;
10.s4)从第二个初始前缀开始,重复步骤s3),直至所有初始前缀均计算完毕;
11.其中,所述步骤s4)具体包括:
12.s401)生成第二个初始前缀的商品交易投影数据库;如果该商品交易投影数据库为空,则递归返回;
13.s402)扫描商品交易投影数据库,对单项进行计数;如果所有单项的序列支持度sup都低于最小支持度min_sup,则递归返回;
14.s403)将满足最小支持度min_sup的各个单项和当前的前缀进行合并,得到若干新的前缀,并计算新前缀的前缀位置;若前缀位置信息表存在与之前前缀位置相等的前缀,则直接返回前缀位置信息表中前缀所产生的频繁序列模式集合,并返回步骤s3);否则,前缀位置信息表保存新的前缀位置信息,并生成新的商品交易投影数据,返回步骤s401)。
15.可选的,步骤s1)中所述对获取的商品交易数据进行预处理包括对缺失或重复出现的订单记录进行补全或删除,以及对出现记录错误的数据进行修正。
16.可选的,步骤s2)中所述前μ项为有效项数,指售货机销售的主要商品的种类。
17.可选的,所述有效项数μ根据售货机的机械结构和货柜容量以及货道数量来设定,或由管理者设定的主要商品种类数量来设定,或根据这两者的综合进行设定。
18.可选的,步骤s3)中所述前缀位置信息表通过hash表保存。
19.根据本发明提供的具体实施例,本发明公开了以下技术效果:本发明提供的基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,通过前缀位置信息表的辅助,并且采用深度优先遍历避免对重复的投影数据库重复计算,减少了交易数据频繁序列模式挖掘的时间/空间消耗,提高了执行效率。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
21.图1为本发明实施例基于改进prefixspan算法的交易数据序列模式挖掘方法的流程图;
22.图2为本发明实施例改进prefixspan算法的流程图;
23.图3为本发明实施例商品交易数据的局部图;
24.图4为本发明实施例商品交易数据集的局部图;
25.图5为本发明实施例prefixspan算法改进前后的执行效率对比图;
26.图6为本发明实施例prefixspan算法改进前后的执行空间对比图。
具体实施方式
27.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.本发明的目的是提供一种基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,用于减少交易数据频繁序列模式挖掘的时间/空间消耗,提高执行效率。
29.为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
30.如图1至图2所示,本发明实施例提供的基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,包括以下步骤:
31.s1)对获取的商品交易数据进行预处理,得到商品交易数据集,并存入交易序列数据库d中;
32.s2)扫描交易序列数据库d,对每个长度为1的单项进行计数,得到每个单项的序列支持度sup并降序排列,选出前μ项且满足最小支持度min_sup的单项作为初始前缀;所述前μ项为有效项数,指售货机销售的主要商品的种类;所述有效项数μ根据售货机的机械结构和货柜容量以及货道数量来设定,或由管理者设定的主要商品种类数量来设定,或根据这两者的综合进行设定;
33.s3)采取深度优先遍历,对第一个初始前缀的位置进行计算,并保存在前缀位置信息表中,生成商品交易投影数据库;再对其进行迭代,直至无法生成新的商品交易投影数据库,保存每个商品交易投影数据库生成的频繁序列模式集合;所述前缀位置信息表通过hash表保存;
34.s4)从第二个初始前缀开始,重复步骤s3),直至所有初始前缀均计算完毕;
35.其中,所述步骤s4)具体包括:
36.s401)生成第二个初始前缀的商品交易投影数据库;如果该商品交易投影数据库为空,则递归返回;
37.s402)扫描商品交易投影数据库,对单项进行计数;如果所有单项的序列支持度sup都低于最小支持度min_sup,则递归返回;
38.s403)将满足最小支持度min_sup的各个单项和当前的前缀进行合并,得到若干新的前缀,并计算新前缀的前缀位置;若前缀位置信息表存在与之前前缀位置相等的前缀,则直接返回前缀位置信息表中前缀所产生的频繁序列模式集合,并返回步骤s3);否则,前缀位置信息表保存新的前缀位置信息,并生成新的商品交易投影数据,返回步骤s401)。
39.下面采用实验来验证本发明实施例改进prefixspan算法(prefixspanbase on prefix position form,ppfprefixspan)的特性,并与添加有效项数的prefixspan算法(prefixspan base on effective items,eiprefixspan)和未改进的prefixspan算法进行了对比。
40.如图3所示,本实验的测试商品交易数据采用的是一家零售超市自2015年1月1日至2015年4月30日的全部销售记录。该数据集中涵盖了2000名用户在四个月里购买商品的42817条记录,在数据集中分为了'顾客编号'、'大类编码'、'大类名称'、'中类编码'、'中类名称'、'小类编码'、'小类名称'、'销售日期'、'销售月份'、'商品编码'、'规格型号'、'商品类型'、'单位'、'销售数量'、'销售金额'、'商品单价'、'是否促销'这17列,其中该数据集将商品分为了4种商品类型、15种商品大类、176种商品中类、759种商品小类。按照我们智能售货机系统的实际情况,选择了176种商品中类作为特征项集,使用prefixspan算法、eiprefixspan算法、ppfprefixspan这三种算法分别处理这些实验数据。实验相关程序均采用python编写,软件运行的环境为windows。
41.首先对获取的商品交易数据进行预处理,预处理包括对缺失或重复出现的订单记录进行补全或删除,以及对出现记录错误的数据进行修正。然后在预处理后的17列数据中保存'顾客编号'、'中类编码'、'中类名称'、'销售日期'、'销售月份'这5列数据,如图4所
示。
42.在商品交易数据集上分别取支持度sup为2%、4%、6%、8%、10%、12%、14%、16%,取μ=30的eiprefixspan算法和ppfprefixspan算法与prefixspan算法的执行效率与执行空间进行对比,执行效率对比实验结果见表1,其对比图如图5所示。
43.表1执行效率对比实验结果
[0044][0045]
如图5所示,可以发现ppfprefixspan算法的执行效率对比eiprefixspan算法有了进一步优化,并且明显优于prefixspan算法,ppfprefixspan算法在序列模式挖掘过程中,通过前缀位置信息表以及深度优先遍历,避免了对重复投影数据库的重复递归生成频繁序列,减少了算法运算时间,所以该算法在重复投影数据库越多的数据集中,算法效果会更加明显。因此,提高了序列模式的挖掘效率。
[0046]
执行空间对比实验结果见表2,其对比图如图6所示。
[0047]
表2执行空间对比实验结果
[0048][0049]
如图6所示,可以观察到ppfprefixspan算法的执行空间对比eiprefixspan算法有了进一步优化,并且明显优于prefixspan算法,ppfprefixspan算法在序列模式挖掘过程中,避免了生成重复投影数据库,从而减少了ppfprefixspan算法在运算过程中所需要的内存使用。
[0050]
通过以上实验结果表明,当算法运算过程中对数据集生成的重复投影数据库较多时,ppfprefixspan算法相比较eiprefixspan算法,节约了时间/空间资源,证明通过引进前缀位置信息表的ppfprefixspan算法的算法优化是确实可行。
[0051]
eiprefixspan算法的理念是在prefixspan算法的基础上,在算法的第一步骤引入一个有效项数μ这一概念。该算法的主要思想来源自在现实中对自动售货机配仓时,由于售货机摆放物品的体积受限,事实上我们只能选择几种销售情况最好的商品,并且搭配上它们支持度最高的几种关联商品,但是,在我们零售超市的数据中往往包括了数十上百的商品种类,所以我们事实上只需要获取销售额最高的几种商品以及他们置信度高的几种相关
联的商品。
[0052]
ppfprefixspan算法是在eiprefixspan算法的基础上,基于前缀投影的序列模式关联算法,与eiprefixspan算法的不同之处,ppfprefixspan算法引入了前缀位置信息表,因为,对相同投影数据库生成的频繁序列模式集合相同。当某任意前缀a的位置信息与前缀位置信息表中前缀β的前缀位置信息相同,那么可以直接返回前缀a的投影数据库所生成的频繁序列模式集合与前缀β生成新的频繁序列模式集合。所以,采用深度优先遍历,先取初始前缀的某一单项,从长度为1递归至长度为l项,作为初始的参考集。因为从同一前缀递归生成的新前缀之间前缀位置重复的概率远远低于通过广度优先遍历,同一长度前缀之间前缀位置重复的概率,所以在ppfprefixspan算法中采用深度优先遍历。
[0053]
在算法实际运算中,将前缀位置信息表通过hash表保存,hash表是一种通过key

value(键值对)方式存储访问的一种数据结构,能够通过key值直接查询,加快查询速度。在算法中包括三个重要信息,前缀、前缀位置、前缀对应的投影数据库的频繁序列,因此通过二级hash表保存上述信息。第一级存储前缀
‑‑
前缀位置,前缀为key值,前缀位置为value;第二级存储前缀位置
‑‑
频繁序列,前缀位置为key值,前缀对应的投影数据库的频繁序列为value。
[0054]
算法首先是扫面整个序列数据库,将所有单项进行计数,对每个单项的支持度进行排序,取支持度大的前μ项作为初始前缀。采取深度优先遍历,首先对第一个初始前缀构造其投影数据库,并且如果前缀位置信息表为空,则直接保存该前缀位置信息。在对其投影数据库进行单项计数,将满足最小支持的单项与原始的前缀构成新的前缀,保存新的前缀的前缀位置信息,并构成新的投影数据库,在对其进行迭代,投影数据库为空,保存所有的序列模式结果。获取第二个初始前缀的前缀位置信息,扫描前缀位置信息表,若存在与该初始前缀位置相同的前缀,则停止递归,直接返回该前缀产生的序列模式集合,否则,保存该初始前缀位置信息,并继续递归,直至计算完所有初始前缀的计算,返回所有序列模式集合。
[0055]
本发明提供的基于改进prefixspan算法的交易数据频繁序列模式挖掘方法,通过前缀位置信息表的辅助,并且采用深度优先遍历避免对重复的投影数据库重复计算,减少了交易数据频繁序列模式挖掘的时间/空间消耗,提高了执行效率。
[0056]
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1