一种用于挖掘电商交易数据中高利润商品的方法

文档序号:25057440发布日期:2021-05-14 14:12阅读:244来源:国知局
一种用于挖掘电商交易数据中高利润商品的方法

1.本发明属于海量数据挖掘与处理技术领域,涉及一种电商交易数据中高利润商品的挖掘方法。


背景技术:

2.在实际的购物篮数据和电商交易领域的数据分析中,往往使用频繁程度或支持度作为主要衡量标准,只通过计算频繁出现的事务项(被大量购买的商品)决定销售策略以及货架摆布设计。频繁模式挖掘通过历史数据分析,对客户近期的购买行为进行统计和分析,根据概率计算并分析客户的需求产品,推测出客户下一步可能的购买行为,从而制定合理的营销策略。例如,同时频繁地出现在交易数据集中的商品(如面包和牛奶)集合就是频繁项集。一个子序列,如首先购买pc计算机,然后购买数码相机,又购买内存卡,若其频繁出现在购物篮数据中,则称为一个频繁模式。
3.然而,频繁模式的挖掘仅考虑项集在多少个事务(购物篮)中出现,而没有考虑其在事务中对应的数量和权重值,即某件商品的购买数量和单位利润或价格;然而这些信息对于商务数据分析等应用却非常重要。
4.高效用项集挖掘(huim)是数据挖掘领域的一个重要的研究方向,在生物信息学、移动商务、web点击流分析和市场营销等领域得到了广泛应用。huim通常可以被认为是传统频繁项集挖掘(fim)的推广,fim结果得到数据集中大量出现的项集,仅仅考虑事务存在与否,但忽略了事务数据库的其他信息,其结果可能是低利润的频繁项集。为了解决现实生活中huim根据实际数据集中不同的项集的分布及重要程度,在经典的apriori算法基础上,对事务数据集中的每个项赋予权值。
5.高效用模式挖掘能发现大型事务或关系数据库中模式之间的关联性与相关性,通过对历史数据进行计算和分析,定义一个事务拥有其内部效用(商品销售数量)和外部效用(利润、重要程度等),事务的总效用值为内部效用与外部效用之和,代表了该模式的总利润或贡献值,可为分类设计、交叉营销和顾客购买习惯分析等许多商务决策过提供帮助。此外,高效用事务对数据分类、聚类及其他数据挖掘任务也具有重要意义。
6.依据搜索空间的遍历顺序,现有的高效用项集(模式)挖掘算法可划分为两类:一是采用广度优先的搜索顺序,例如umining、two

phase、iids和ummi;二是采用深度优先的搜索顺序,例如ihup、up

growth、hui

miner、d2hup、pb、imhup和efim。广度优先类算法采用与apriori类似的层级、高效用项集候选项集生成和测试的方法学计算项集在数据库中的效用,深度优先类算法又细分为“两阶段”算法和“一阶段”算法。
[0007]“两阶段”算法的执行包括两个阶段,在第一阶段,生成高效用项集的候选项集,然后在第二阶段通过扫描数据集挖掘出第一阶段候选项集中的实际高效用项集,例如ihup和up

growth。对于庞大的数据集,“两阶段”算法往往会产生大量的候选集,这大大增加了在第一阶段和第二阶段的计算开销。“一阶段”算法,在挖掘过程中不产生高效用项集候选项集,直接计算项集的效用值并生成高效用项集,例如hui

miner、d2hup、pb、imhup和efim。

一阶段”算法利用效用值

列表的结构或基于树的数据结构,以快速挖掘高效用项集。然而,目前的“一阶段”算法要求数据集能完全保存到内存中,并且在处理庞大的数据时产生较高的执行成本;若数据集太大,将无法完全保存在内存中。
[0008]
虽然基于静态数据库和数据流的高效用项集(模式)挖掘技术取得了一定的进展,但算法的时空效率仍然存在提升的空间。例如在静态数据库中,当前最好的高效用项集(模式)挖掘算法通过采用垂直数据结构,计算项集在数据库中的效用,但采用连接操作构建垂直数据结构是非常耗时的。
[0009]
通过对现有技术进行研究,在海量数据集上进行高效用项集(模式)挖掘的存在三个关键问题:
[0010]
1)生成完整的高效用项集(模式集),
[0011]
2)当前计算的数据集能保证完全存储到内存中,
[0012]
3)尽可能降低执行开销(包括计算开销和i/o开销)。
[0013]
针对问题1),需要根据“晶格理论”生成高效用项集。假定静态数据库中的项由i={i1,i2,

,i
n
}组成,i1,i2,

,i
n
分别代表了n种不同的商品,则搜索空间为i的幂集所组成的项集网格,例如若i={1,2,3,4},其搜索空间为图1所示的项集网格。对搜索空间的遍历包含两种搜索方式:广度优先搜索和深度优先搜索。在广度优先的遍历中,所有k

项集在数据库中频数的计算先于(k+1)

项集。而深度优先的遍历顺序通常采用集合枚举树作为搜索空间(本质上,与项集网络相同),i={1,2,3,4}的集合枚举树如图2所示。
[0014]
通过对生成的项集进行分析,在实际应用中,若数据集中含有n种不同的商品,那么其将产生(2
n

1)个候选项集,其搜索空间将呈现指数级爆炸式增长。若需要将当前工作的数据集一次性完整存入内存,其计算成本和空间存储要求都将是非常庞大的。因此,需要在执行过程中采用有效的项集生成策略和剪枝策略,尽可能避免生成无用的项集,从而降低执行开销。
[0015]
通过对“两阶段”的高效用项集算法进行研究,此类算法由于在第一阶段生成大量的候选项集,因此在海量数据上的挖掘效率通常很低。在实际应用中其将产生(2
n

1)个候选项集,搜索空间相当巨大。这不仅增加了第一阶段的执行成本,同时增加了第二阶段从候选集中确定高效用项集的评估成本。目前的一些高效用项集挖掘算法,为了减少生成的候选项集的数量,减少对项集实际效用值的估计,从而修剪候选集的大小,但这并没有解决两相算法的根本问题。
[0016]“一阶段”算法直接计算高效用项集,而不用首先产生大量的候选项,因此其性能通常优于“两阶段”算法。然而,现有的“一阶段”算法往往要求数据集可以完全存储到内存中,若数据量非常庞大,无法一次性全部存储到内存,“一阶段”算法将要执行大量的随机搜索操作,或多次扫描数据集,从而产生非常巨大的i/o开销,并大大降低其性能。
[0017]
总之,现有的高效用项集挖掘算法在处理海量数据时,存在效率不高,内存开销和运行开销大的问题。


技术实现要素:

[0018]
本发明的目的是提供一种新的高效用项集挖掘算法,能够高效地在海量购物篮数据和电商交易中进行高效用事务的挖掘,挖掘出购物篮数据和电商交易中产生高利润的商
品集,可以帮助零售商做选择性销售和合理安排货架空间,从而提高销量。
[0019]
为了实现上述目的,本发明采用的技术方案是:一种用于挖掘电商交易数据中高利润商品的方法,包括:
[0020]
s1:根据每个商品的前缀不同,将每次交易记录中首个商品作为前缀项,将交易记录中具有相同前缀项的的商品集分在同一个分区里;所述商品集为一项式商品集或二项式商品集;
[0021]
s2:分别计算每个分区的twu值,twu记录了该分区的最大利润效用值,将每个分区的twu值,与用户设定的利润阈值minu比较:
[0022]
a.若twu<minu,则跳过该分区,进入下一个分区;
[0023]
b.若twu≥minu,则计算该分区内每个商品集在整个分区中的利润效应值uipa[i].twu,并将所有uipa[i].twu降序排序,从大到小依次与利润阈值minu比较,找到大于等于利润阈值minu的商品集。
[0024]
作为本发明的一种优选方式,所述步骤s2中b,若:
[0025]
(1)若uipa[i].twu<minu,则进入下一分区;
[0026]
若uipa[i].twu≥minu,则将商品集加入集合psa中;
[0027]
(2)判断集合psa中的一项式商品集的个数:
[0028]
若∣psa∣=0,则进入下一个分区,返回步骤s3;
[0029]
若∣psa∣=1或2,则判断该一项式商品集或二项式商品集的利润效应值uipa[i].iutil是否大于或等于minu;若是,则该商品集为挖掘到的高利润商品集;若否,则进入下一个分区,返回步骤s3;
[0030]
若∣psa∣≥3,利用集合psa中的所有一项式商品集构造枚举树,采用全后缀值剪枝法剪除全后缀效用值小于利润阈值minu的商品集,剩下的根节点到某节点路径之间的商品集为挖掘到的高利润商品集。
[0031]
进一步优选地,每个商品集在整个分区中的利润效应值uipa[i].twu为包含该商品集的所有交易记录的利润效用值之和,计算公式为:
[0032]
twu(i)=∑
t∈g(i)

i∈t
u(i,t)=∑
t∈g(i)

i∈t
eu(i)
×
iu(i,t)
[0033]
其中,i为一个包含若干个商品i的商品集,g(i)表示包含i的t中的事务集合;∑
i∈t
u(i,t)为包含该商品集的交易记录的利润效用值,即该交易记录中所有商品的利润效用值eu(i)
×
iu(i,t)之和。
[0034]
进一步优选地,每个商品集在每条交易记录中的利润效应值uipa[i].iutil的计算公式为:
[0035][0036]
其中,eu(i)为单个商品i的利润值,iu(i,t)是商品i在每条交易记录中出现的次数。
[0037]
进一步优选地,每个分区中,twu值和uipa[i].twu,作为属性值,构建存储结构uip;所述uip结构中,每条记录存储为固定字节数。
[0038]
进一步优选地,uip结构中,第一条记录的地址设为0,其他记录以该记录相对于第一条记录的地址偏转量为索引进行储存;所述地址偏转量为每一条记录的字节数与第一条记录的字节数之差。
[0039]
进一步优选地,所述商品的前缀为每个商品的编号或条形码。
[0040]
本发明的用于挖掘电商交易数据中高利润商品集的方法,具有的有益效果是:针对购物篮数据和电商交易中商品的最大利润问题,本发明提出了一种新的高效用项集挖掘算法
‑‑
p2h(prefix

partitioning

based high utility itemsets mining)算法,能在海量数据上有效地挖掘高效用项集。
[0041]
提出了基于前缀的分区策略,将事务表划分为若干个基于前缀的分区。每个分区对于分配的内存和足够小,从而使分区能够完整地读入内存。分区中的每个事务项都共享相同的前缀项。
[0042]
提出了新的数据结构uip,记录了利润效用值上界阈值twu,能根据上界值判断某个分区中是否包含潜在的高效用项集,从而跳过大部分不符合要求的分区,极大减小了计算开销。
[0043]
提出了利用深度优先增长模式的枚举树集合对分区进行处理。此外,设计了子树剪枝规则,根据全后缀效用值对搜索空间进行剪枝,有效地节省了算法的空间开销和时间开销。
[0044]
在合成数据集与真实数据集上进行了大量实验,与目前先进的算法进行比较,本发明的算法性能更优。
附图说明
[0045]
图1为i={1,2,3,4}项集网络示意图;
[0046]
图2为i={1,2,3,4}的集合枚举树;
[0047]
图3为本发明实施例中挖掘电商交易数据中高利润商品集的方法的流程示意图;
[0048]
图4为本发明实施例中构建的uip存储结构示意图;
[0049]
图5为本发明实施例中构建的枚举树结构示意图。
具体实施方式
[0050]
为了便于理解本发明,下面结合附图和具体实施例,对本发明进行更详细的说明。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本说明书所描述的实施例。相反地,提供这些实施例的目的是使对本发明公开内容的理解更加透彻全面。
[0051]
本实施例提供的用于挖掘电商交易数据中高利润商品集的方法,流程如图3所示,具体包括以下步骤:
[0052]
一、基于前缀的分区
[0053]
首先,将数据集中涉及的所有商品进行编号,或直接利用商品的条形码等编码作为商品的编号,即i={i1,i2,i3……
,i
n
}分别代表n种不同的商品。将每次购物交易作为一个事务项,每次购物交易中包含的商品就是事务项中的项。
[0054]
接下来对交易数据进行分区处理。每个购物交易的首个商品的编码作为该购物交易记录的前缀,然后根据不同的前缀,将购物交易中包含相同前缀的商品集存入对应的分区中。
[0055]
例如表1所示,tid代表每个交易记录的id,表中包含10个购物交易记录,数据集i
={i1,i2,i3,i4,i5,i6,i7}中含有7种不同的商品。在第一条交易记录中,{(i3,3),(i5,3),(i6,6),(i7,6)}表示在此次交易中购买i3商品3件,i5商品3件,i6商品6件,i7商品6件。同时由购物交易记录的前缀定义可知,此购物交易的前缀项为i3,故前缀项为i3的商品集被划分放入3号分区中。同理,第二条交易{(i2,3),(i3,5),(i5,3),(i6,4),(i7,2)}的前缀项为i2,故前缀项为i2的商品集被划分放入2号分区。
[0056]
依次进行划分,数据库中的所有交易记录中包含的商品集最终会被划分成若干分区,这些分区互不交叠,并且所有分区合并的结果就是整个交易记录数据库t。
[0057]
表1交易记录数据库t
[0058][0059]
表2为每个商品的外部效用值,即每种商品的价格或单位利润。
[0060]
根据前缀划分,将每条交易记录中包含的商品集对应划分为7个分区,分别为{p1,p2,p3,p4,p5,p6,p7},如表3所示。
[0061]
表2每个商品对应的外部效用值
[0062][0063]
表3根据相同前缀划分商品集
[0064][0065]
根据上述理论,每个分区中的商品集都具有相同的前缀,而相同前缀的商品集,都处于同一个分区中。因此,计算某个商品集的效用值时,仅需要查找和计算其在对应分区中的局部效用值,也是此商品集在整个分区中的全局效用值。这样仅需要在一个分区中进行计算,不需要遍历整个数据集,从而大大提高了算法的执行效率。
[0066]
例如,求商品集{i1}的利润效用值时,仅需要计算商品集{i1}在分区p1中的局部利润效用值,以此作为商品集{i1}在数据集中的全局利润效用值。
[0067]
二、构建uip存储结构
[0068]
数据集进行分区处理后,对每个分区依次进行处理。本发明设计了一个新的存储结构uip(fitem,sitem,iuil,twu)。其中fitem为前缀项,sitem为后缀项,iuil为分区内该商品集在每条交易记录中的利润效用值之和;twu记录该分区内包含此商品集的每一条购物交易记录的利润效用值之和。uip存储结构如图4所示。
[0069]
1.首先计算出每个商品集的利润效用值uipa[i].iutil,此处的商品集为一项式商品集或二项式商品集,一项式商品集中包含一种商品,二项式商品集中包含两种不同的商品。
[0070]
根据表1和表2中的数据,以计算一项式商品集i1为例,商品集i1分别在tid为3、5、6、7、10的交易记录中出现,可以记为t3,t5,t6,t7,t
10
则商品集i1的iutil为
[0071]
iutil(i)=∑
i∈t
eu(i)
×
iu(i,t)
[0072]
其中,eu(i)为商品集i的利润(效用值),eu(i1)=5;iu(i,t)是商品集i在每个交易记录中出现的次数,iu(i1,t3)为5。
[0073]
iutil(i1)=eu(i1)
×
iu(i1,t3)+eu(i1)
×
iu(i1,t5)+eu(i1)
×
iu(i1,t6)+eu(i1)
×
iu(i1,t7)
[0074]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
=5
×
5+5
×
6+5
×
1+5
×
5+5
×1[0075]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
=90
[0076]
计算出的商品集i1的uipa[i].iutil=90,如图4uip1中第一行所示。
[0077]
按照此方法依次计算出该分区内其他商品集的uipa[i].iutil。
[0078]
2.计算每个商品集在整个分区内的利润效应值uipa[i].twu,uipa[i].twu为包含该商品集的所有交易记录的利润效用值之和。仍然以一项式商品集i1为例,计算过程为:
[0079]
(1)先计算包含一项式商品集i1的交易记录的利润效用值
[0080]
twu(i,t)=∑
i∈t
u(i,t)
[0081]
twu(i1,t3)=eu(i1)
×
iu(i1,t3)+eu(i2)
×
iu(i2,t3)+eu(i5)
×
iu(i5,t3)+eu(i6)
×
iu(i6,t3)+eu(i7)
×
iu(i7,t3)
[0082]
ꢀꢀꢀꢀꢀꢀꢀ
=5
×
5+8
×
2+4
×
2+7
×
2+6
×3[0083]
ꢀꢀꢀꢀꢀꢀꢀ
=81
[0084]
81为包含一项式商品集i1的交易记录t3中,所有一项式商品集的利润效用值之和。按照上述公式,依次计算包含商品集i1的交易记录t5、t6、t7、t
10
的利润效用值。然后再将计算出的交易记录t3、t5、t6、t7、t
10
的利润效用值求和,具体为:
[0085]
twu(i)=∑∑
i∈t
u(i,t)
[0086]
twu(i1)=twu(i1,t3)+twu(i1,t5)+twu(i1,t6)+twu(i1,t7)+twu(i1,t
10
)
[0087]
ꢀꢀꢀꢀꢀꢀꢀ
=81+123+33+154+66
[0088]
ꢀꢀꢀꢀꢀꢀꢀ
=457
[0089]
计算出的一项式商品集i1的uipa[i].twu=457,如图4uip1中第一行所示。
[0090]
按照上述公式,依次计算包含其他商品集的uipa[i].twu,并将该分区内所有uipa[i].twu降序排序,取最大值作为该分区的twu值。
[0091]
经过排序后,457为该分区的twu值。
[0092]
其他分区参照uip1分区的数据处理方法,依次进行数据处理并储存。
[0093]
3.处理好的数据在uip存储结构中储存时,每一条数据包含商品集信息、该商品集的uipa[i].iutil值、该商品集的uipa[i].twu值,将每条数据存储为固定字节数的记录。并且,每一个分区内的第一条数据记录的储存地址设为0,将其他数据记录的储存字节数与第一条数据记录的字节数之差作为地址偏转量进行地址索引储存,uom集合储存该数据记录的地址偏转量,根据此地址索引可以映射到实际的物理地址中,可直接根地址偏转量直接读取数据记录,在跳过分区时可以有效避免顺序读取数据的时间开销。
[0094]
如图4所示,每一条记录都按照24个字节的固定字节数进行储存,在第一条记录的地址索引为0,在uip2的第一行记录存储的字节位数为168,则该条记录数据的地址偏转量为168,因此,在uip存储结构中该条记录的地址索引存储为168,此地址索引可以映射到实际的物理地址中,直接读取该条记录数据。在后续的检索遍历过程中,不需要依次检索每条记录数据,可直接通过此地址索引,直接找到需要进行检索的记录,跳过大量地址提高了执行效率。
[0095]
三、上述构建好的uip存储结构及处理后的数据,进行遍历,与用户设定的利润阈
值minu对比:
[0096]
1.先将每个分区的twu值与用户设定的利润阈值minu比较
[0097]
若twu<minu,则说明该分区不可能产生高利润商品集,直接跳过该分区的计算,进入下一个分区。
[0098]
2.若twu≥minu,再将该分区内的商品集在整个分区中的利润效应值uipa[i].twu依次与利润阈值minu比较:
[0099]
若uipa[i].twu<minu,则跳过该商品集,进入下一个分区;
[0100]
若uipa[i].twu≥minu,则将该商品集加入到集合psa中,
[0101]
3.对每个分区的集合psa中的一项式商品集的个数进行判断:
[0102]
(1)若∣psa∣=0,则说明该分区中没有高利润效用值的商品集,进入下一个分区,返回步骤1,继续运行。
[0103]
(2)若∣psa∣=1,则判断该一项式商品集的利润效用值uipa[i].iutil是否大于minu;若是,则该一项式商品集为挖掘到的高利润商品集;若否,则进入下一个分区,返回步骤1,继续运行;
[0104]
(3)若∣psa∣=2,则判断该二项式商品集的利润效用值uipa[i].iutil是否大于minu;若是,则该二项式商品集为挖掘到的高利润商品集;若否,则进入下一个分区,返回步骤1,继续运行;
[0105]
(4)若∣psa∣≥3,利用集合psa中的所有一项式商品集构造枚举树,采用全后缀值剪枝法剪除全后缀效用值小于利润阈值minu的商品集,剩下的根节点到某节点路径之间的商品集为挖掘到的高利润商品集。
[0106]
其中,全后缀效用值=该节点商品集的利润效用值(uipa[i].iutil)+后缀项商品集的利润效用值(uipa[i].iutil)。后缀是指枚举树中该节点的孩子节点构成的集合,如图5中所示,8号节点的后缀商品集为{i5},2号节点的后缀商品集为{i4,i5}。
[0107]
通过利用枚举树的数据结构,将集合psa中的所有一项式商品集存储到枚举树的每个节点中,枚举树结构如图4所示。本发明采用全后缀效用剪枝规则,在深度优先增长树中,若当前给定节点e的全后缀路径利润效用值小于给定阈值minu,则该路径及其子集上不可能再产生高利润商品集,可对此路径进行剪枝。
[0108]
通过利用枚举树结构,结合uip存储结构中的数据,分别对不可能产生高利润的分区、商品集等进行剪枝,跳过对其的利润效用值计算,大大减少了计算开销,提高计算效率。
[0109]
需要说明的是,由于uip中的数据记录是按照uipa[i].twu值大小降序排列,因此当某个商品集的uipa[i].twu<minu,无需再遍历和判断后续项集,直接跳转到下一个分区。当数据量非常庞大时,这一剪枝策略可以直接跳过大量数据记录,大大提高了算法的效率。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1