一种基于加权Apriori算法的商品分类方法与流程

文档序号:15115832发布日期:2018-08-07 20:06阅读:277来源:国知局

本发明属于分类技术领域,具体涉及一种基于加权apriori算法的商品分类方法。



背景技术:

随着时代的发展人类已经步入大数据时代,面对庞大的数据信息,如何从海量的、有噪声、模糊的和不完全的数据中挖掘出有用的信息是科研者一直以来的追求,而关联规则就是数据挖掘中重要的方法之一,其中apriori是传统关联规则中的经典算法。agrawal等人在1993年第一次提出关联规则的数学模型,随后提出经典的关联规则挖掘apriori算法,并运用关联规则针对购物篮数据进行分析挖掘,目的是为了从交易的海量商品价格数据中发现不同商品之间存在的关联和依赖性。

关联规则挖掘可以表述为:假设给定一个交易数据库a,a是由n个不同的项目p={p1,p2,p3…,pn}和m个交易天数t={t1,t2,t3…,tm}构成的交易数据库。若交易数据库a中有项目x和y,在m个交易天数中项目x和y的支持度和置信度满足设定的支持度和置信度,则认为这是一条强关联规则。关联规则是指数据对象之间存在相互依赖关系的规则,可以表示为:其中x表示关联规则的前提或前件,y是关联规则的结论或后件。挖掘关联规则过程中,以设定的最小支持度和最小置信度为依据,通过不断调节支持度和置信度的大小,从丰富的数据集中挖掘出有价值的信息,即形如的强关联规则。具体的挖掘工作可分为两个步骤:

(1)从交易集合中找出满足最小支持度的频繁项集;

(2)从频繁项集合中生成满足最小置信度的关联规则。

apriori算法是一种宽度优先和水平数据分布的算法,用来进行挖掘关联规则的一种方法。关联规则分析中常用的衡量指标有支持度(support)和置信度(confidence)。支持度定义了在整个交易数据库a中同时包含项目x和y出现的比例,置信度则定义了挖掘出的关联规则的强度。支持度和置信度的计算公式分别如式(1)和式(2)所示:

式(1)中,supp(x=>y)代表x=>y规则的支持度;x和y代表交易的不同商品;m代表交易天数;σ(y|x)代表在购买x商品时,同时购买y商品的次数;式(2)中,conf(x=>y)代表x=>y规则的置信度,σ(x)代表购买的x商品的总次数。

apriori算法应用在商品价格中会出现伪规则以及部分强关联规则未挖掘出来的现象。主要是因为apriori算法是根据商品价格的变动次数计算支持度和置信度。即在apriori算法中将当天价格比昨日价格高记为1,低记为-1,不变记为0。忽略了商品价格有大小之分,apriori算法中不管商品价格大幅度变动还是小幅度变动只要是变动了apriori算法都笼统的记为±1,但在实际应用中大幅度变动和小幅度变动他们所表现的关联度是不一致的,不能笼统的记为±1,否则会挖掘出伪规则。



技术实现要素:

为了解决apriori算法在商品价格应用中存在的不足问题,本发明提出了一种基于加权apriori算法的商品分类方法,即引入权重,从而计算出新的支持度和置信度,然后再对商品进行分类的方法。

本发明的技术方案:

一种基于加权apriori算法的商品分类方法,包括以下步骤:

步骤一、确定x商品和y商品之间的关联强度权重系数;

步骤二、根据关联强度权重系数定义关联强度权重公式,计算出x商品和y商品在交易日i的关联强度权重;

步骤三、引入关联强度权重计算加权支持度,并找出满足最小加权支持度的频繁项集;

步骤四、引入关联强度权重系数定义加权置信度,并通过加权置信度公式计算出步骤三中频繁项集的加权置信度,并找出满足最小加权置信度的关联规则;

步骤五、由步骤四得到的关联规则筛选出强关联规则,并根据强关联规则进行商品分类。

进一步的,通过下列步骤确定关联强度权重系数:

(1)根据公式:计算当日涨跌幅度;以商品价格涨跌幅度大小权衡价格波动的轻重;

(2)把当日涨跌幅度进行无量纲化处理,得到量化指数;

由于商品自身的属性不同,每种商品涨跌的幅度都不一样,具有不同的量纲,量纲不一样会影响数据分析的结果,为了消除指标间的量纲影响,需要进行数据处理,使数据具有可比性。处理量纲问题使用目标打分法无量纲化,目标打分法是指将评价指标按实现的程度分为若干等级,分别制定各等级的评分标准,然后再根据各评价对象对各指标的实现程度按评分标准给分,从而得到指标的标准值。

通过目标打分法将x商品和y商品在m个交易日中的价格涨跌幅度各自按从小到大进行排序,获得x和y商品涨幅集合u1x、u1y和跌幅集合u-1x、u-1y,将u1x、u1y、u-1x、u-1y分别均分成1-10共十个等级xj和yj,其中j为1-10;每个等级代表这个商品在m个交易日中价格变动幅度的大小,变动越大,等级越高,商品价格涨跌幅度的强度就越强。

将商品的涨跌幅度均分为十个等级,根据每个商品所处的等级量化商品涨跌幅度;涨幅集合中,将集合中的元素按绝对值从小到大进行排名,排名的每10%作为一个等级进行均分,排名在前10%的元素记为第一等级,排名在前10%-20%的元素记为第二等级,以此类推,排名在90%-100%的元素记为第十等级;跌幅集合中,将集合中元素按绝对值从小到大进行排名,排名的每10%作为一个等级进行均分,排名在前10%的元素记为第一等级,排名在前10%-20%的元素记为第二等级,以此类推,排名在90%-100%的元素记为第十等级;等级越高,商品价格涨跌幅度的强度就越强;集合的元素数量取10的倍数进行排名、均分,出现余数的情况时把余数忽略不计;因为本方法采集的数据大,元素数量较多,余数的忽略对算法影响不大。

涨幅度中,处在第一等级的商品价格涨幅度的量化指数为1,第二等级商品价格涨幅度的量化指数为2,依次类推,第十等级商品价格涨幅度的量化指数为10;跌幅度中,处在第一等级的商品价格跌幅度的量化指数为-1,第二等级商品价格跌幅度的量化指数为-2,依次类推,第十等级商品价格跌幅度的量化指数为-10,若商品价格涨跌幅不变量化指数为0,-10代表的下跌程度最高,-1代表的下跌程度最小。

(3)根据步骤(2)赋予的量化指数设置新的平均水平,将量化指数-10到10任意组合,并用减法算出每个组合的距离然后取所有组合的平均数,并将其定义为商品间关联强度权重系数,

则关联强度权重系数为6.67;其中,x表示所有量化指数的集合,即x=(10,9,8,……,-8,-9,-10),xi表示集合x中的第i个元素;xj表示集合x中的第j个元素;n=21,表示量化指数的总数。

进一步的,两种商品的涨跌幅度越靠近、涨跌幅度越大关联度越强,所述定义x商品和y商品在交易日i的关联强度权重公式为:

wi=(6.67-|xi-yi|)×(max(|xi|,1))×(max(|yi|),1))

其中,wi表示x商品和y商品在交易日i的关联强度权重;i表示第i个交易日;xi表示x商品第i个交易日的量化指数;yi表示y商品第i个交易日的量化指数。

进一步的,所述加权支持度的计算公式为:

所述加权置信度的计算公式为:

其中,wi表示x商品和y商品在交易日i的关联强度权重;i表示第i个交易日;xi表示x商品第i个交易日的量化指数;yi表示y商品第i个交易日的量化指数。

进一步的,所述通过加权支持度的计算公式计算出加权支持度;然后通过设定最小加权支持度得到最小加权支持度的频繁项集;最小加权支持度可根据自身需要设定,设定的最小支持度越大精确度越高,得到的关联规则越强;接着通过加权置信度的计算公式计算出最小加权支持度的频繁项集的加权置信度,通过设定最小加权置信度,找出满足最小加权置信度的关联规则;最小加权置信度可根据自身需要设定,设定的最小置信度越大精确度越高,得到的关联规则越强。

当所筛选出来的规则同时满足supp(x=>y)≥minsupp,minsupp为最小加权支持度,conf(x=>y)≥minconf,minconf为最小加权置信度,则定义为强关联规则;并将强关联规则x=>y中的x和y商品归为同类商品,否则为不同类产品。

本发明的有益效果:本发明加权apriori算法可以挖掘到关联度更高的规则,商品分类结果也更精确;同时采用加权apriori算法可过滤apriori算法中的伪规则,以及能挖掘出apriori算法未挖掘出的规则。

附图说明

图1为商品间权重分布图;

图2为铜业和铅业的价格走势图;

图3为涤纶poy和涤纶fdy的价格走势图;

图4为涤纶dty和涤纶fdy的价格走势图;

图5为pp和lldpe的价格走势图。

具体实施方式

下面结合附图对本发明进一步说明。

一种基于加权apriori算法的商品分类方法,包括以下步骤:

步骤一、确定x商品和y商品之间的关联强度权重系数;

步骤二、根据关联强度权重系数定义关联强度权重公式,计算出x商品和y商品在交易日i的关联强度权重;

步骤三、引入关联强度权重计算加权支持度,并找出满足关联强度权重的最小加权支持度的频繁项集;

步骤四、引入关联强度权重系数定义加权置信度公式,并通过加权置信度公式计算出步骤三中频繁项集的加权置信度,并找出满足最小加权置信度的关联规则;

步骤五、由步骤四得到的关联规则筛选出强关联规则,并根据强关联规则进行商品分类。

进一步的,通过下列步骤确定关联强度权重系数:

(1)根据公式:计算当日涨跌幅度;以商品价格涨跌幅度大小权衡价格波动的轻重;

(2)把当日涨跌幅度进行无量纲化处理,得到量化指数;

由于商品自身的属性不同,每种商品涨跌的幅度都不一样,具有不同的量纲,量纲不一样会影响数据分析的结果,为了消除指标间的量纲影响,需要进行数据处理,使数据具有可比性。处理量纲问题使用目标打分法无量纲化;目标打分法是指将评价指标按实现的程度分为若干等级,分别制定各等级的评分标准,然后再根据各评价对象对各指标的实现程度按评分标准给分,从而得到指标的标准值。

通过目标打分法将x商品和y商品在m个交易日中的价格涨跌幅度各自按从小到大进行排序,获得x和y商品涨幅集合u1x、u1y和跌幅集合u-1x、u-1y,将u1x、u1y、u-1x、u-1y分别均分成1-10共十个等级xj和yj,其中j为1-10;每个等级代表这个商品在m个交易日中价格变动幅度的大小,变动越大,等级越高,商品价格涨跌幅度的强度就越强。

将商品的涨跌幅度均分为十个等级,根据每个商品所处的等级量化商品涨跌幅度;涨幅集合中,将集合中的元素按绝对值从小到大进行排名,排名的每10%作为一个等级进行均分,排名在前10%的元素记为第一等级,排名在前10%-20%的元素记为第二等级,以此类推,排名在90%-100%的元素记为第十等级;跌幅集合中,将集合中元素按绝对值从小到大进行排名,排名的每10%作为一个等级进行均分,排名在前10%的元素记为第一等级,排名在前10%-20%的元素记为第二等级,以此类推,排名在90%-100%的元素记为第十等级;等级越高,商品价格涨跌幅度的强度就越强;集合的元素数量取10的倍数进行排名、均分,出现余数的情况时把余数忽略不计;因为本方法采集的数据大,元素数量较多,数量至少取100个,余数的忽略对算法影响不大。

涨幅度中,处在第一等级的商品价格涨幅度的量化指数为1,第二等级商品价格涨幅度的量化指数为2,依次类推,第十等级商品价格涨幅度的量化指数为10;跌幅度中,处在第一等级的商品价格跌幅度的量化指数为-1,第二等级商品价格跌幅度的量化指数为-2,依次类推,第十等级商品价格跌幅度的量化指数为-10;若商品价格涨跌幅不变量化指数为0。

(3)根据步骤(2)赋予的量化指数设置新的平均水平,将量化指数-10到10任意组合用减法算出每个组合的距离并取其平均数,并将其定义为商品间关联度权重系数。

则关联强度权重系数为6.67;其中,xi表示集合x中的第i个元素;xj表示集合x中的第j个元素;n=21,表示量化指数的总数。

进一步的,两种商品的涨跌幅度越靠近、涨跌幅度越大关联度越强,所述定义x商品和y商品在交易日i的关联强度权重公式为:

wi=(6.67-|xi-yi|)×(max(|xi|,1))×(max(|yi|),1))

其中,wi表示x商品和y商品在交易日i的关联强度权重;i表示第i个交易日;xi表示x商品第i个交易日的量化指数;yi表示y商品第i个交易日的量化指数。

进一步的,所述加权支持度的计算公式为:

所述加权置信度的计算公式为:

其中,wi表示x商品和y商品在交易日i的关联强度权重;i表示第i个交易日;xi表示x商品第i个交易日的量化指数;yi表示y商品第i个交易日的量化指数;。

进一步的,所述通过加权支持度的计算公式计算出加权支持度;然后通过设定最小加权支持度得到满足最小加权支持度的频繁项集;接着通过加权置信度的计算公式计算出最小加权支持度的频繁项集的加权置信度,通过设定最小加权置信度,找出满足最小加权置信度的关联规则;

当所筛选出来的规则同时满足supp(x=>y)≥minsupp,minsupp为最小加权支持度,conf(x=>y)≥minconf,minconf为最小加权置信度,则定义为强关联规则;并将强关联规则x=>y中的x和y商品归为同类商品,否则为不同类产品。

实施例

由表1中的商品之间的关联规则结果可知,将:醋酸丁酯和醋酸乙酯归为同类商品;白银和黄金归为同类商品;涤纶poy和涤纶fdy归为同类商品;维生素e和维生素a归为同类;铅业、铜业、铝业、锡业、柴油、汽油可归为同类商品。

进一步分析数据发现,“铅业=>铜业”和“涤纶fdy=>涤纶poy”这两条规则的置信度相差不大但其价格走势对比图相差较大,如图2、图3所示。图2和图3是分别对商品价格数据进行归一化处理后绘制的价格走势图对比图。

由图2看,铅业和铜业的价格走势差异较大,两者在价格走势上的关联度不高,即按apriori算法计算出来将铅业、铜业、铝业、锡业、柴油、汽油归为同类商品是不正确的。由图3看,涤纶poy和涤纶fdy的价格走势基本一致,说明可将涤纶poy和涤纶fdy归为一类商品。结果分析可见,直接使用apriori算法对商品价格数据进行分类时会引入伪规则,使分类结果不准确甚至会出现错误。

表1apriori算法找出的强关联规则

加权apriori算法计算出来符合强关联规则的商品如表2所示,按表中结果可将涤纶dty和涤纶poy和涤纶fdy;醋酸丁酯和醋酸乙酯;白银和黄金;维生素e和维生素a;ldpe和lldpe;柴油和汽油;pp和lldpe;混二甲苯和甲苯分为八大类相关商品。

表2加权apriori算法找出的关联规则

因加权apriori算法和apriori算法原理不同,不能直接比较结果中的支持度和置信度数值。因此将apriori算法的支持度、置信度,加权apriori算法的加权支持度、加权置信度进行归一化处理,然后再进行比较,比较结果如表3所示。

表3apriori算法和加权apriori算法归一化后的结果数据

(注:标*的数值表示其在归一化之前不满足预设的最小支持度或最小置信度)

综上所述,加权apriori算法相对于apriori算法有两个优势:

优势一:加权apriori算法可过滤apriori算法中的伪规则。

从表3可知,“涤纶poy”=>“涤纶fdy”这条规则在apriori算法中置信度为0.8504,介于“铅业”=>“铜业”与“铅业”=>“铝业”规则之间,但在加权apriori算法中其加权置信度为0.9590,远远高于“铅业”=>“铜业”与“铅业”=>“铝业”,结合商品价格走势图,涤纶poy与涤纶fdy的价格关联度比铅业与铜业、铅业与铝业之间的关联度强。

优势二:加权apriori算法能挖掘出apriori算法未挖掘出的规则。

加权apriori算法挖掘出来的前10条规则中新增了“涤纶dty”=>“涤纶fdy”、“ldpe”=>“lldpe”、“柴油”=>“汽油”、“混二甲苯”=>“甲苯”、“pp”=>“lldpe”这些规则,从图4图5的价格走势图可知涤纶dty和涤纶fdy、pp和lldpe价格走势相近,可以认为具有价格之间的强关联关系,这也符合人们日常认知。但这一规则在apriori算法模型中并未被发掘。说明加权apriori算法相对于apriori算法能更好的挖掘出强关联规则,能更准确地对商品分类。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1