APP下载

改进Apriori 算法在太阳能销售系统中的应用研究

2015-12-20南楠

铜陵职业技术学院学报 2015年4期
关键词:数据项链表项集

南楠

(三门峡职业技术学院,河南三门峡472000)

改进Apriori 算法在太阳能销售系统中的应用研究

南楠

(三门峡职业技术学院,河南三门峡472000)

文章以力诺瑞特太阳能销售系统为例,采用以十字链表改进的Apriori算法,对每年同期或最近阶段的销售商品数据进行挖掘分析。充分利用其庞大的售后数据,了解顾客的购买需求及更进一步获得热卖商品间的关系,为公司今后的商品销售搭配及新顾客的开发提供有力的保障体制。

数据挖掘;商品销售预测;Apriori算法

近几年数据挖掘算法被普遍的应用于商品零售业的销售过程中。对于一个企业准确了解客户的需求与购买趋势,有针对性的制定销售方案是非常重要的。数据挖掘中的关联规则就可以完成从老顾客的购买习惯中分析预测出新顾客的需求,挖掘出潜在的购买力,目标明确的展开宣传。通过对销售数据进行分析,及时调整销售商品类型与价格,改进服务,本文以力诺热特太阳能销售系统为例,给出如何运用改进Apriori算法作为关联规则来预测商品的销售趋势与挖掘新顾客的营销策略当中。

1.数据挖掘技术

1.1 数据挖掘

数据挖掘技术主要工作是对数据库中大量的无序数据进行分析挖掘,找出其内在数据间联系、预测数据的变化趋势,挖掘其深层价值为后期的决策提供有力保障[1]。数据挖掘的实施一般包括初始数据、挖掘数据与分析结果总结规律。

数据挖掘按照功能从整体上分为两种:预测规律型和描述特征型。细化之后包括:概念描述、关联规则、聚类分析等。一般情况下都是综合多种挖掘技术对数据进行分析提取,获取人工无法发现的知识与信息。

1.2 Apriori算法

在商品销售关联规则的挖掘中最常用的就是Apriori算法,其作用是对数据库中大量事务项集进行挖掘分析,取得其内在关联性。

Apriori算法在挖掘时一般分为两步[2]:

步骤一:根据设定的最小支持度找出满足的所有事物数据集组合

步骤二:根据设定的最小置信度找出事物数据间关联规则

具体流程如下:

假设初始事物数据项集为K,里面包含多个数据项,设定一个最小支持度mins和一个最小置信度minc:

(1)扫描迭代出频繁项集

1)扫描整个数据库K;

2)统计每个数据项出现的次数M;

3)M/数据项总次数与最小支持度mins比较;

4)除去小于mins的数据项得出频繁项集X1;

5)X1自身进行笛卡尔积,得出的数据项集合与mins值比较,小于其值的集合除去,产生候选项集;

6)重复1)-5)直至得出最大频繁项集Xn。

(2)由步骤(1)得出的频繁项集挖掘关联规则[3]

1)从步骤(1)中每次扫描得出的频繁项集X中求其非空子集;

2)对于X的每个非空子集S,剔除X中数据项个数与非空子集S个数之比小于预先设定的置信度minc的数据项。

Apriori算法缺点:数据库过大时每次生成的候选频繁项数过多;扫描、自连接、比较剔除耗时长,I/O操作效率低。

2.商品销售预测系统

分析出商品销售时的关联度,商品销售商就可以准确的掌握销售商品间的联系,联系度高的、热销的商品进行搭配销售,即方便顾客选购又会增加销售额,使商家也更节约时间成本获取最大利润。

本文中太阳能销售数据库主要以商品售后数据库为例来演示如何进行挖掘分析。商品售后数据库中创建的表包括商品基本信息表,供货商表,顾客表,进货表,除此之外还有一些销售中产生的关联表:销售明细表,进出库详情表,顾客反馈表等。使用挖掘算法进行数据分析的主要功能流程图如下:

图1 商品预测系统数据库挖掘流程图

3.改进Apriori算法的应用

3.1 改进Apriori算法

本文采用十字链表表示数据项的改进算法,一次性扫描数据库生成用结点表示数据项的十字链表,再利用指针遍历的方式产生候选项集,最后输出频繁项集[4]。该算法极大地减少扫描数据库的次数,提高算法的使用效率。

具体改进算法描述如下:

(1)扫描数据库,构造数据项十字链表。链表中以结点方式表示事务头,数据项,项目头,结点结构如下:

图2 十字链表结点结构图

图2 中,事务头结点中sno为事务顺序号,N1为该事务链中数据项个数,next、first为向下、向右链接指针;数据项结点中N2为层数,两个next为向下、向后链接指针;项目头结点中item为项目名称,N3为项目垂直方向数据项数目,next、first为向下、向后链接指针[5]。

(2)构建频繁1-项集L1,扫描十字链表项目头结点,当N3>mins时,把该结点加入频繁1-项集L1中。

(3)自连接与剪枝操作:

1)L1作自连接,生成Ck候选集;

2)扫描十字链表事务头结点,当N1<mins时,该事务链后所有数据项结点的数据域全置为0;

3)扫描十字链表项目头结点,当N3<mins时,该数据项垂直方向下所有数据项的数据域全置为0。

(4)构建频繁项集Lk

从Ck中项目头结点垂直向下扫描,遍历整个十字链表,中间遇到N2的值为0则向右扫描,直到最后一个不为0数据项。若扫描完生成的数据项链都在同一层上,则表明该项目列为候选集中一项,项目头中数值加1[6]。重复以上步骤直到每个项目头都被扫描完,将每个项目头中N3值与mins比较,小于mins的项目头从候选集中删除,得到的即为频繁项目集Lk。

(5)若Lk为非空,重复(3)、(4)步,直至Ck为空。

(6)输出频繁项集Lk。

3.2 算法描述

输入:事务数据库D,最小支持度mins

输出:频繁项集Lk

(1)扫描数据库,构造十字链表

(2)L1=find_frequent_1-itemsets(L)

(3-5)for(k=1;Ck!=null;k++){

Ck=self_join(Lk)

For each Sx∈Ck{

For each Ix∈Ck{

If(N1<mins)N2=0;//横向数据域置0

If(N3<mins)N2=0;//纵向数据域置0}}

Lk={Sx∈Ck|Sx.N2!=0∧Ix.N3>mins}}

(6)return Lk

3.3 改进算法的应用分析

改进后的算法用于对太阳能销售系统数据进行挖掘,寻求其潜在的商品关联,为销售商提供有效建议。太阳能销售系统数据库中包含多张表,本文仅使用其中三张表来进行挖掘分析,分别是订单表(订单编号,购买商品编号,订单日期,顾客编号),商品表(商品编号,商品名称),顾客回购商品表(顾客编号,回购商品编号,备注)。其中对顾客回购商品表进行挖掘主要目的是分析初购商品搭配的合理性,给出最优组合。数据库结构图如下:

图3 太阳能销售数据库关系图

后台数据库采用sql server2008,前台实现页面采用JSP,在实现过程中会用到Java的多个类,如Dbreader类完成读数据,Ruleparser类可以解析规则,完成编码与名称间转换等。挖掘前先对数据进行过滤,不合格的记录全部从分析表中删除,例如没有销售过的商品直接从sp表中删除掉,提高分析准确度。分析过程中截取一个时间段商品的销售情况进行挖掘,本实验中截取3个月内销售记录,以天转化为事务序号,以每天销售的不同系列的太阳能数量以及配件为事务项进行挖掘。

经过过滤后的数据就可以运行程序进行挖掘分析,下图即为使用JSP完成的数据挖掘初始界面:

图4 系统数据挖掘初始界面

运行程序预测时,设置最小支持度mins=10%,最小置信度minc=60%。运行之后产生的关联规则如图所示:

图5 关联规则输出图

把改进后算法应用到系统数据库的挖掘中,输出如图5结果,可以看出最终输出的关联规则中基本都大于设定的最小支持度和置信度,但有些数据偏低,例如17、18条事务的支持度偏小,说明顾客购买商品搭配不合适,应该根据顾客反馈表中数据再进行校对为后期营销策略制定提供可靠依据。同时对那些支持度和置信度较高的事务,例如12、19、20条事务的分析,不仅可以在进货,商品摆设和搭配促销上增加力度,而且给出了人工无法发现的信息,例如第20条规则显示购买经济型、小容量的太阳能时并不是配件也搭配经济型的,而是搭配高档配件的多些。从输出的规则中仔细查看,即可得出一个可行的后期销售指南,为商家配货销售提供可靠保障。

4.结论

本文是把挖掘技术实际应用到商品销售过程中,把采用十字链表改进的Apriori算法应用到太阳能销售系统中,比原有算法极大的缩短了运行时间。由此也可以总结出顾客的消费规律,预测新客户的购买趋势,公司可以根据上述分析结果来采购热卖商品,安排热卖商品的摆放位置增加销售额。同时与老客户保持联系随时更新分析结果调整商品销售策略。

[1]JiaweiHan.数据挖掘概念与技术[M].范明,译.北京:机械工业出版社,2007.

[2]汪珊珊,王兵,杨旭光,程宗毛.产品销售预测的数学模型及应用[J].中国外资,2012,(12):263-264.

[3]徐辉增.关联规则数据挖掘方法的研究[J].科学技术与工程, 2012,(1):60-63.

[4]唐辉.关联挖掘技术在商品销售中的应用研究[D].北京:北方工业大学,2011.

[5]李磊,段隆振.一种基于十字链表的频繁项集挖掘算法[J].江西科学,2009,27(6).

[6]王海容.数据挖掘在学生成绩分析的应用[J].电子设计工程, 2013,21(4):4-56.

(责任编辑:方少卿)

TP311.13

A

1671-752X(2015)04-0043-03

2015-09-12

南楠(1981-),女,河南洛阳人,三门峡职业技术学院信息传媒学院讲师,硕士。

猜你喜欢

数据项链表项集
国六柴油车远程排放监测数据项间相关性特征研究*
基于相似度的蚁群聚类算法∗
如何用链表实现一元多项式相加
非完整数据库Skyline-join查询*
基于Python的Asterix Cat 021数据格式解析分析与实现
跟麦咭学编程
基于矩阵相乘的Apriori改进算法
不确定数据的约束频繁闭项集挖掘算法
一种自底向上的最大频繁项集挖掘方法
基于MTF规则的非阻塞自组织链表