基于Apriori挖掘算法的中药处方网的设计与实现
2013-11-29孟菊明张洪波方美玉
孟菊明,卢 静,张 朔,张洪波,方美玉
(浙江外国语学院科学技术学院,浙江杭州310012)
1 引言
中药材是我国最具国际比较优势的产业之一,然而在传统交易模式下,中药材流通环节过多,流通标准体系不够完善,质量可控性差.这严重制约着我国中药材产业的发展.近年来,我国中药材电子商务平台开始推广,其中规模较大、运作较为成功的有中药买买通、中药材天地网、东方中药材网等,这些电子商务平台对于有效整合资源、完善中药材流通产业链等具有积极作用.对于中药材电子商务企业而言,怎样确定药物进货比例是一个关键的问题.在这种背景下,我们构建了一个中药处方网,采用Apriori挖掘算法预测药材进货比例以解决药商进货量预测难等问题.
2 中药处方网的架构与设计
2.1 开发技术概述
本网站数据库采用由Microsoft公司推出的关系数据库系统SQLServer 2005;编程工具采用MyE-clipse7.1;WEB服务器使用开源的Apache Tomcat 6.0;网页排版采用DIV+CSS技术.此外,网站采用Apriori算法预测消费者需要购买的热门处方和中药数量.
2.2 总体功能
中药处方网主要包括网站前台、网站后台、关联规则挖掘工具和进货量比控制等功能模块,各模块的逻辑关系见图1.其中,网站前台包括用户注册、登陆、在线购物、处方查询、处方搜索、浏览药方等功能;网站后台包括用户管理、处方添加、处方删除、处方修改、处方插入、在线医师等操作;关联规则挖掘工具是一个建立在前台用户交易数据基础上的数据分析工具;进货量比控制模块的输入数据来源于关联规则工具输出的关联规则.
图1 中药处方网总体功能图及其逻辑关系
2.3 系统用例图
用例图由参与者(Actor)、用例(Use Case)以及它们之间的关系构成[1].中药处方网的用户和管理员都是网站参与者,其中管理员用例图见图2.管理员通过管理员界面登陆后实现商品管理、库存管理、订单管理和用户管理、个人资料维护等管理功能.
图2 管理员用例图
2.4 总体数据库设计
考虑到需要实现商品管理和用户管理,本网站数据库包括用户表、商品表、历史记录表等.用户表包括用户名、用户ID、密码、邮编、地址、联系电话等字段;商品表包括商品名、商品编号、种类、库存、单价等字段;历史记录表包括用户ID、商品编号、数量、价格等字段.
3 挖掘工具的设计
本网站采用自主开发的挖掘工具(Association Rules Data Mining Tool,简称ARDMTool)收集用户购买药方的数据,并对用户数据进行挖掘,输出关联规则指导货架上货物的摆放规律.ARDMTool的基础算法是Apriori算法.Apriori关联规则挖掘算法的思想起源于啤酒与尿布的故事,在美国有婴儿的家庭中,一般都是母亲在家中照看婴儿,年轻的父亲前去超市购买尿布.父亲在购买尿布的同时,往往会顺便为自己购买啤酒,这样啤酒与尿布这两件看上去不相干的商品经常会出现在同一个购物篮的现象[2].Apriori算法大致分两步执行:第一步,从事务数据库中挖掘出所有频繁项集.首先挖掘出频繁1-项集;然后采用递推的方式挖掘频繁k-项集(k>1).第二步,在挖掘出候选频繁k-项集(Ck)之后,根据最小置信度(Minimum Confidence)筛选得到频繁k-项集,合并全部的频繁k-项集(k>0)得到所谓的关联规则[3].
挖掘工具ARDMTool以顾客购买处方的交易记录作为基础数据,根据交易记录中各种处方同时出现在一次交易行为中的概率为输出依据,输出符合支持度和置信度的规则.挖掘工具ARDMTool首先创建两个关键类,一个是Item类(处方类),另一个是Rule类(规则类).Item类包括两个属性,它们分别为处方编号item_no和处方名item_name;另外包括一些列处方操作的方法,如增加交易记录addTransaction(intras_no:int)、获取交易总条数getTransSet()等(见图3).Rule类包括支持度和置信度两个属性;还包括一系列方法如规则的获取、比较,置信度和支持度的修改等(见图4).
图3 Item类
图4 Rule类
挖掘工具算法应用步骤如下:
(1)处方库处方类型设定.网站将处方类型设置为以下类型:风寒型(感冒),风热型(感冒),风寒袭肺型(咳嗽),风热犯肺型(咳嗽),燥邪伤肺型(咳嗽),冷哮(发作期)(哮喘),热哮(发作期)(哮喘),肺气亏虚型(缓解期)(哮喘),脾气亏虚型(缓解期)(哮喘),肝火犯肺型(咯血),阴虚火旺型(咯血),寒湿困脾型(泄泻),肠道湿热型(泄泻),食积胃肠型(泄泻),实热便秘(便秘),气滞便秘(便秘),阳虚便秘(便秘),胃热炽盛型(吐血),瘀阻胃络型(吐血),胃肠积热型(便血),湿热蕴结型(便血),肝胆湿热型(黄痘),湿困脾胃型(黄痘),肝胃气滞型(胃腕痛).
(2)设最小支持度(Minimum Support)为10%,最小置信度(Minimum Confidence)为70%.
(3)设有10条用户交易明细(见图5).
图5 交易明细①
(4)输出规则(见图6).
(5)根据图6的关联规则,进货量控制模块自动计算进货数量.风热型(感冒)——风寒型(感冒)处方的购买支持度为10%,则从这条规则知道,如果当天进货为10000副处方,则至少要有1000副风热型(感冒).又因为挖掘出的规则风热型(感冒)——风寒型(感冒)的置信度为100%,所以此风寒型(感冒)处方也至少要1000副.同理风寒型(感冒)处方为3000副,风热犯肺型(咳嗽)处方为3000×0.75=2250副.总计,风热型(感冒)处方1000副,风寒型(感冒)处方为4000副,风热犯肺型(咳嗽)处方为2250副,其它2750副.
图6 输出规则
(6)根据用户交易数据自动调整货架处方摆放位置.由图6的输出规则知道购买风热型(感冒)处方的购买者100%购买风寒型(感冒)处方,购买风寒型(感冒)处方的75%购买风热犯肺型(咳嗽)处方,又计算得出风寒型(感冒)处方为4000副,风热型(感冒)处方1000副,风热犯肺型(咳嗽)2250副,因此显示页面的第一行显眼陈列区域摆放风寒型(感冒)处方,中间摆放风热型(感冒)处方,同时在最右侧摆放风热犯肺型(咳嗽)处方.当然第二天经过交易之后交易明细产生了变化,挖掘规则也会因此发生变化,那么显示页面会自动随着规则的不同而在前面几行中药陈列区域调整处方显示顺序.
4 网站的实现
4.1 数据库连接的实现
利用JDBC技术进行数据库连接是整个网站实现的关键步骤之一[4],如界面的药品展示与查询,后台药品的添加与删除,挖掘工具规则的挖掘,原始数据的生成和输出等.数据库的连接分为以下五步:
第一步,加载SQLServer驱动,这里使用的是 Sqlserver2005,驱动名称是com.microsoft.sqlserver.jdbc.SQLServerDriver,通过 Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”)来加载.
第二步,通过DriverManager类调用DriverManager.getConnection(url,用户名,密码)方法实现连接.
第三步,连接之后通过第二步返回的Connection连接对象con可以创建语句对象,为网站的数据库查询、插入、删除等操作做准备.实现语句为:连接对象.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY).
第四步,第三步返回的语句对象stmt调用Statement的executeQuery(sql)执行数据库查询操作.当然,如果是写入操作,调用的操作方法为executeUpdate.
第五步,通过Resultset类的getString等方法获取数据库查询到的记录集合,并通过动态JSP页面将结果呈现给用户.
4.2 挖掘工具的实现
关联规则需要获取的参数包括处方名称、交易条数、最小支持度和最小置信度.根据这些关键参数,系统判断交易处方的交易频繁项集,如果大于最小支持度和最小置信度,则利用一个向量Vector将该处方追加到向量末尾,并且形成一条新的规则添加到规则向量,最后输出规则库中的所有规则.符合支持度和置信度的关联规则形成过程的算法如下:
i从0到处方总条数-1循环
5 结语
基于Apriori算法的处方挖掘工具通过收集用户购买药方的信息,对用户交易数据进行挖掘,输出商品关联规则,有效控制了各种处方药物的进货量比和网站首页的货架处方排列规律.这不仅实现了药物货架处方的合理摆放,而且一定程度避免了处方短缺、药品囤积过多、药物过期浪费等现象.由于Apriori挖掘算法本身存在冷启动、数据稀疏等问题,因此接下来需要对其进行优化.
注释:
①图5为截屏所得,因此部分交易明细显示不全.
[1]陈磊.用例图到顺序图转换的研究[D].西安:西安电子科技大学,2009:9-10.
[2]高勇.啤酒与尿布:神奇的购物篮分析[M].北京:清华大学出版社,2008:11-16.
[3]牛丽敏.Apriori算法分析与改进综述[J].桂林电子科技大学学报,2007,27(1):27-30.
[4]郑文娟.基于JSP的数据库连接技术探索[J].湖北民族学院学报:自然科学版,2013,31(1):69-70.