基于数据挖掘技术的高校实验室设备采购决策支持系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于数据挖掘技术的高校实验室设备
采购决策支持系统
引言
近年来,随着对教育事业投入的不断加大,以及高校资金渠道的多元化,使高校仪器设备的数量增加较快,仪器设备的层次不断提高,为高校的教学和科研奠定了较好的物质基础。与此同时,对仪器设备采购工作提出了新的挑战。高校实验室作为仪器设备的使用和管理部门,如何做好采购工作,最大限度地保证仪器到位率,更好地为教学科研服务,值得管理工作者认真探讨和思考。
高校实验室设备的采购是巨大的投资,需要完整的规划。一些高校过分追求仪器设备的档次数量,造成了仪器设备的闲置和浪费。为了追求高档次,弃用相对价廉的国产仪器设备而选用价位偏高的进口仪器设备。有的不考虑配套使用,机械地按学生人数购买基础课实验仪器设备,但缺乏相关配套设备,使得仪器长时间闲置。
随着大量的采购数据被不停地收集和存储,许多采购人员对于如何从购买记录中挖掘关联规则越来越感兴趣。从大量商务事务记录中发现内在的关联关系,可以帮助许多决策的制定,这就是关联规则。最经典的关联规则提取算法是Apriori算法,它是由Rakesh Agrawal Rama和Krishnan Skrikant提出的,其思想是利用已知的高频数据项集推导其它高频数据项集。
本文的目的在于使用Apriori算法对高校实验室设备采购信息进行数据挖掘,分析出潜在的采购关系。获得各设备之间的内在关系,从而才采购初期就能了解到而后可能需要的其他服务,通过一次性投资降低日后的维护成本,也能发现现有计划中无关的采购,减少浪费。
1.关联规则与Apriori算法
a)关联规则
关联规则表示数据库中一组对象之间某种关联例如,关联规则可以表示为“购买了项目A和B的人中有95% 的人又买了C和D”。从这些规则可找出购买行为模式,应用于商品货架设计、生产安排、针对性的市场营销活动以及产品的组合销售等。
b)Apriori算法
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法。算法的核心是基
于两阶段频集思想的递推算法。算法的基本思想是:首先找出所有的频集,这些项集出现
的频繁性至少和预定义的最小支持度一样;然后由频集产生强关联规则,这些规则必须满
足最小支持度和最小可信度;然后使用第1步找到的频集产生期望的规则,产生只包含
集合的项的所有规则,其中每一条规则的右部只有一项,这里采用的是中规则的定义。一
旦这些规则被生成,那么只有那些大于用户给定的最小可信度的规则才被留下来。为了
生成所有频集,使用了递推的方法。
该算法对于较少量的数据而言可以快速的发现关联规则,但也会有缺点,Apriori可
能产生大量的候选集,还需要重复扫描数据库,这使得对于海量数据的关联规则挖掘变得
相当缓慢。
c)Apriori算法当前进展
早期的Apriori算法主要应用于零售业的销售分析。
后逐渐扩展到多个领域:
2008年薛志强将Apriori算法应用于金融时间序列分析。
2007年关鹏等将Apriori算法应用于甲型肝炎风险预测。
2005年李炎阳等将Apriori算法应用于对语音合成中韵律参数的预测。
目前尚无将Apriori算法应用于高校实验室设备采购关联分析的案例。
2.基于Apriori算法的实验室设备采购决策支持系统
本文采用Perl语言实现的Apriori算法和SQLite数据库系统对高校实验室设备采购数
据进行分析。
Perl是著名的脚本语言。它具有高级语言强大的能力和灵活性,又与其他脚本语言一
样不需要编译器和链接器来运行代码,要做的只是写出程序并告诉Perl来运行而已。这意
味着对于小的编程问题的,Perl是快速解决方案,对大型事件则是良好的原型和测试方案。Perl被广泛地用于日常生活的方方面面,从宇航工程到分子生物学,从数学到语言学,从
图形处理到文档处理,从数据库操作到网络管理。Perl最擅长的,就是以极简单的代码处
理批量复杂数据,同时保证代码的可移植性。考虑到数据挖掘的主要负载位于数据库之上,同时数据挖掘通常作为自动化例程在异构的系统中运行和粘粘不同数据源的数据,本文选
择使用Perl来实现Apriori算法,并使用Perl-DBI连接数据库。
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标
是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的
操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java等,还有ODBC接口,
同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度
比他们都快。
以下是一个简单的计算机实验室设备采购历史记录:
首先将上述记录录入数据库,建立名为Purchases的数据表,表结构如下:
由于SQLite是无类型数据库,故数据表中的类型并不会被应用于实际数据上,系统
会在运行时自动决定使用哪种类型记录,类型仅作为程序参考使用。
程序首先从命令行参数中取得要分析的数据库,关联数量和最小支持度,并打开对应
的数据库。代码如下:
our($opt_n, $opt_s, $opt_f);
getopt('n:s:f:');
my $dbh = DBI->connect("dbi:SQLite:dbname=$opt_f", '', '', {
ShowErrorStatement => 1}) or die "Cannot open $opt_f";
从数据库中解析出所有商品和购买次数,生成0级频集,作为1级候选集。代码如下:
my $all = $dbh->selectall_arrayref('select distinct gid from sales') or die $dbh->errstr;
my $cnt = $dbh->selectall_arrayref('select distinct tid from sales') or die $dbh->errstr;
@candidates = map { [$_->[0]] } @$all;
return &apriori(1, scalar @$cnt, @candidates);