商业智能(Business Intelligence, 简称BI),这个概念最早由Gartner Group于1996年提出,以帮助企业决策为目的的技术及其应用[1].随着大数据技术的发展,商业智能也得到很大的发展[2].
随着企业业务的不断积累和扩大,各种业务数据不断增长,如何挖掘隐藏在这些丰富数据下的商业价值对于企业来说已经变得日趋紧迫.公司之间的竞争日趋激烈,怎样保证在激烈的竞争中处于不败之地需要管理层做出正确的决策,而决策的依据必然是来自公司内部和外部的数据,如何快速地整合这些数据来帮助企业管理层做出正确的决策成为企业制胜的关键.
在零售业行业中,对于各个分店的有效管理,通过分析挖掘海量数据以提升营业额需要耗费大量人力物力,经过研究,本文提出一种针对零售业的大数据商业智能系统架构并给出具体实现方案来解决当前零售业所面临的问题.
1 系统架构与实现技术 1.1 系统架构本系统从架构上分为分店管理系统及数据库、云端服务器和应用层客户端.系统架构如图 1所示.
|
图 1 系统架构 Figure 1 System framework |
(1) 分店管理系统及数据库.分店使用管理系统管理本店进销存业务及相关管理工作,并定期按需将各个分店数据上传至云端服务器.
(2) 云端服务器.在云端构建服务器集群,数据分散在不同的服务器主机上可以并行存取,提高了数据的存取速度.云端服务器负责存储分店采集的各种数据,并以这些数据为基础构建数据仓库.在云端部署分析应用程序,将应用程序处理的结果返回给决策层客户端.
(3) 应用层客户端.应用层客户端分为决策和统筹管理两部分.决策层根据所获得的报表、图形和走势图等来支持其决策.设置一个统筹管理的职能部门,统筹各分店统一促销,畅销商品管理和会员行为分析.企业通过云改变了以前处理数据和接入数据的方式,数据更集中,数据一致性更强,数据质量提高,分店之间的联系更紧密更便捷,在这种环境下,企业的决策依据将更准确.
1.2 云端服务器的构建云端架构如图 2所示.ETL工具通过远程访问各个分店的服务器完成数据收集的任务,收集的数据是最原始的数据不做处理,首先存储在数据中心,数据中心对应图 1中的基础数据库,数据中心集中了所有分店的数据.数据上传完成后继续对数据进行ETL处理,并将处理后的数据存入到数据仓库.数据分析应用程序根据客户端的请求调用数据仓库中的数据进行处理,并将结果返回给请求客户端,同时将常用的分析按计划定期自动分析并将结果保存到预定义分析结果模块中.每个分店和总部的管理层都有接入云的权限,云端数据共享.作为总部,可以监控各个分店的运营情况,作为分店可以及时了解其他分店的运行情况,借鉴经验并制定销售策略.
|
图 2 云端架构 Figure 2 Cloud framework |
数据仓库(Data Warehouse,DW)是一个收集、组织、存储和共享历史数据的系统[3].本文采用MySQL数据库来搭建数据仓库的环境.从MySQL5开始支持数据库分区技术,数据库分区是一种物理数据库设计技术,它可以用来处理超大型表.在数据库分区技术不能满足需要的情况时可以采用sharding技术.按照一系列的切分规则将数据分布到不同的数据库服务器上,通过路由规则访问特定的数据库[4].
数据ETL工具Pentaho Data-Integration, 简称PDI,原名为Kettle.PDI支持多种类型的数据源,还可以将数据库文件下载到本地进行ETL工作,对于像SQLite和Access这样的文件型数据库也提供了很好的支持.其中还包括对大数据的支持,可以支持hadoop、Hbase等作为数据源[5].PDI分为两个步骤,一个叫Transformation, 另一个叫Job, 可以设定这些转换的执行时间和频率,这一点对于数据仓库的自动化更新是很有帮助的[6].
数据挖掘(Data Mining,DM),又称数据库中的知识发现(Knowledge Discover in Database,KDD),就是从大量的、不完全的、有噪声的、模糊的甚至随机的实际应用数据中,提取出隐含在其中的、人们事先不知道的但又是潜在有用的信息和知识的过程[7].本系统采用R语言作为数据挖掘的工具, 主要用于统计分析、绘图、数据挖掘.R内置多种统计学及数字分析功能通过RMySQL包访问MySQL数据库.Shiny-Server是远程执行Shiny应用的服务器端,Shiny应用也是R语言的一个扩展包shiny包所开发的应用程序,具有约定的程序结构,程序的主要作用是对分析后的数据进行前台的展现[8].
2 数据采集与分析 2.1 数据采集数据采集与分析平台如图 3所示.
|
图 3 系统平台 Figure 3 System plateform |
在图 1中,每个分店有各自的分店管理系统及数据库,根据云端服务器要求将需要的数据进行上传.对于零售业来说,需要上传的数据主要包括销售数据、会员数据、商品数据、库存数据、调研数据.需要预定义所需采集的数据,包括数据的类型、数据结构.对于数据库的数据,数据库名称、表名称、表字段都采取统一格式和名称.对于文本型数据也要统一格式,或以XML方式存储.云端服务器收集各个分店管理数据库的数据并对每个分店的数据标记以区分.统一标准数据可很大程度地提高数据采集的质量和后续处理效率.
对于除了分店以外的数据源,如商业共享数据平台等,需要根据实际情况设计相应接口和采集方法.
2.2 数据分析数据的分析工作在云端完成,按照数据仓库对数据的要求并选择合适的工具对不同类型的数据进行处理,然后保存到数据仓库中.
随着时间的推移,数据中心的数据量会不断增加,运用大数据工具是非常有必要的.大数据工具的主要特点是通过服务器集群中的主机并行处理数据,将一个庞大的任务分解为小任务处理.特别是对于各个分店服务器的日志分析,需要借助像hadoop和openstack这样的大数据分析平台.
应用程序部署到云端以后,客户端通过浏览器调用相应的功能,只需将结果返回给客户端,在客户端进行数据分析结果的展现.针对零售业的数据分析可以包括多个方面,比如:销量分析、客户购买偏好分析、商品关联分析、精准推送服务等[9].
目前在数据挖掘领域有几个比较常用的算法,针对零售业做分析的算法可以用ID3、C4.5、K-means、CART等.
做商品销量的分析可以使用ID3算法或者C4.5算法.ID3算法是以信息论为基础,以信息熵和信息增益度为衡量标准,从而实现对数据的归纳分类.使用这两个算法构造决策树,对数据进行分类,以此达到预测的目的.通过决策树找出销量最高的几种方式,比较各种方式的利润,按照利润最大化原则制定销售策略.
对客户进行聚类分析,针对特定的用户群推送相关商品.K-means算法是一种得到最广泛使用的基于划分的聚类算法,把n个对象分为k个簇,以使簇内具有较高的相似度.相似度的计算根据一个簇中对象的平均值来进行[10-11].
3 商品销量分析以下讨论针对销量分析的应用,主要是根据以往销售的数据来判断如何提高产品销量.此应用主要用来验证本系统的可行性.数据采用预先定义好的而非实际销售数据,根据预先定义好的数据得出的结果和预定义的结果相符则可验证系统的正确性.
(1) 设计表并构建数据仓库[3, 12].销售记录表的格式如表 1所示.统计最终结果的统计表结构如表 2所示.数据来源于假定的分店服务器,该服务器为一个虚拟机搭载一个MySQL数据库.MySQL数据库中存储了预定义的数据,所有数据采用定向和随机结合的方式生成,定向是指打折越大销量越高,且当结合促销方式的时候销量会更高,随机是指所有的销量都是在一个指定的范围内生成.
| 表 1 销售记录表结构 Table 1 Table structure of sales record |
| 表 2 统计表结构 Table 2 Table structure of statistics |
在PDI中进行数据的ETL工作.设计Transformation,将数据从分店服务器中读出,按goodsID,discount,promotion组合分组,并求出每个分组quantity的和,和的值对应统计表中quantity.将quantityLevel定义为4个等级,取值为1、2、3、4,级别越高对应的分组销量越大.4个等级的划分根据分组销量数据的四分位数来划分,小于下四分位数为1级,介于下四分位数和中位数的为2级,介于中位数与上四分位数的为3级,大于上四分位数的为4级.具体见表 3.设计Job,设定执行Transformation.通过R程序可以计算得出分组销量的多个统计量如表.通过所求的四分位数就可以构建PDI项目,整个的ETL的设计图如图 4所示,关键包括两点:在Table Input组件里通过SQL语句实现数据分组和quantity求和,在Javascript组件中通过Javascript代码添加quantityLevel变量并根据quantity的值判断其取值.数据整合后的记录数为810,并将记录保存到数据仓库的统计表中.
|
图 4 ETL设计图 Figure 4 Design of ETL |
| 表 3 Quantity统计量 Table 3 Statistics of quantity |
(2) 编写R程序[13-16].利用决策树,进行数据的分析.构造决策树可以使用ID3算法和C4.5算法等.本文采用ID3算法,ID3算法主要是根据信息熵的概念来构造决策树.
数据来源于统计表,类变量为quantityLevel,预测变量为discount和promotion.计算类变量的熵的公式为式(1),式中类变量对应quantityLevel,c代表类变量的取值,pi代表c的每个取值的概率.计算每个预测变量信息增益的公式为式(2),式中预测变量对应discount和promotion,|·|代表记录的数量,Dv代表子集记录即预测变量取某个值所对应的类变量的记录,D代表全集记录,v代表子集的数量.ID3算法有一个缺陷,即信息增益度量趋向于选择具有大量可能值的属性, 于是,Quinlan提出了用信息增益率来矫正这一负面效应,信息增益率的计算公式为公式(3).根据式(1)、(2)、(3)和统计表中的数据编写R程序,根据输出结果表 4可知,promotion对销量的影响比discount要大,所以选择promotion做根节点.根据统计得到的数据表 5,可以构造一个决策树如图 5,
| 表 4 预测变量的信息增益和信息增益率 Table 4 Information gain and information gain ratio of predictor variables |
| 表 5 各个分组总销量 Table 5 Total sales of each grouping |
|
图 5 决策树 Figure 5 Decision tree |
| $ {\rm{Entropy(类变量) = }}\sum\limits_{i = 1}^c {-{p_i}{{\log }_2}{p_i}, } $ | (1) |
| $ \begin{array}{l} {\rm{Gain(预测变量) = Entropy(类变量?}}\;{\rm{in}}\;D{\rm{)}}-\\ \sum\limits_v {\frac{{\left| {{D_v}} \right|}}{{\left| D \right|}}} {\rm{Entropy(类变量?}}\;{\rm{in}}\;{D_v}{\rm{)}} \end{array} $ | (2) |
| $ {\rm{GainRation}}(预测变量) = \frac{{{\rm{Gain(预测变量)}}}}{{{\rm{Entropy(预测变量}})}}. $ | (3) |
为了得到一个总体的规律,promotion值为2、3的结果合并为一个节点.
为了验证正确性,使用同一数据集,在Microsoft SQLServer 2008自带的商业智能分析工具中进行了决策树分析,得出的决策树如图 6所示.
|
图 6 决策树 Figure 6 Decision tree |
(3) 结论.从图 3和图 6可以得出一致的结论,当promotion为2、3且discount为b、c时销量可以得到大幅提升,所得结论符合预定义的结论,所构造的树可以支持决策.同时验证了本文提出的架构具有可行性.
4 总结通过在销售数据分析的实践中,已经基本完成商业智能在本文所提出的架构中应用的思路,接下来的目标是根据不同数据类型,不同分析方法完成对客户行为、精准推送、商品关联等方面进行分析的工作.并将在目前研究的基础上,引入hadoop技术来进行大数据的处理,进一步增强系统的功能.
在大数据和商业智能发展的大趋势下,会出现更多的架构.本文提出的架构可以在满足零售业的需求同时大大降低部署商业智能项目和企业运营的成本.
| [1] |
苏力萍.
商业智能理论与应用实践[M]. 北京: 中国科学技术出版社, 2012.
|
| [2] |
李国杰, 程学旗. 大数据研究:未来科技及经济社会发展的重大战略领域——大数据的研究现状与科学思考[J].
中国科学院院刊, 2012, 27(6): 647-657.
Li G J, Cheng X Q. Research status and scientific thinking of big data[J]. Bulletin of the Chinese Academy of Sciences, 2012, 27(6): 647-657. |
| [3] |
Robert L. 数据仓库应用指南: 数据仓库与商务智能最佳实践[M]. 祝洪凯, 李妹芳, 译. 北京: 机械工业出版社, 2012.
|
| [4] |
陆嘉恒.
大数据挑战与NoSQL数据库技术[M]. 北京: 电子工业出版社, 2013.
|
| [5] |
Steps Pentaho Data Integration[EB/OL]. [2013-09-20]. http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Steps.
|
| [6] |
Van Dongen J. Pentaho Kettle Solutions[M]. America: Wiley, 2010.
|
| [7] |
朱明.
数据挖掘导论[M]. 合肥: 中国科学技术大学出版社, 2012.
|
| [8] |
Tutorial: Building 'Shiny' Applications with R[EB/OL]. [2013-09-10]. http://rstudio.github.io/shiny/tutorial/.
|
| [9] |
朱伶俐, 李卫华, 李小妹. 客户价值可拓知识挖掘软件研究[J].
广东工业大学学报, 2012, 29(4): 7-13.
Zhu L L, Li W H, Li X M. Research on extension knowledge mining software for customer value[J]. Journal of Guangdong University of Technology, 2012, 29(4): 7-13. |
| [10] |
刘洪伟, 石雅强, 梁周扬, 等. 面向聚类挖掘的局部旋转扰动隐私保护算法[J].
广东工业大学学报, 2012, 29(3): 28-34, 45.
Liu H W, Shi Y Q, Liang Z Y, et al. Partial rotation perturbation for privacy-preserving clustering Mining[J]. Journal of Guangdong University of Technology, 2012, 29(3): 28-34, 45. |
| [11] |
k-means算法[EB/OL]. [2014-1-5]. http://zh.wikipedia.org/wiki/k平均算法.
|
| [12] |
Inmon W H, 著. DW2. 0下一代数据仓库的构架[M]. 王志海, 王健林, 等译. 北京: 机械工业出版社, 2010.
|
| [13] |
Soman K P, Diwakar S, Ajay V. 数据挖掘基础教程[M]. 范明, 牛常勇, 译. 北京: 机械工业出版社, 2009.
|
| [14] |
吴倍东, 库玛尔.
数据挖掘十大算法[M]. 北京: 清华大学出版社, 2013.
|
| [15] |
Robert I Kabacoff. R语言实战[M]. 高涛, 肖楠, 陈钢, 译. 北京: 人民邮电出版社, 2013.
|
| [16] |
Luis Torgo. 数据挖掘与R语言[M]. 李洪成, 陈道轮, 吴立明, 译. 北京: 机械工业出版社, 2013.
|
2014, Vol. 31