基于Weka的Apriori算法在原油产量预测中的应用
2016-06-06张瑞智师雪雪
张瑞智++师雪雪
摘要:影响原油产量的因素是多方面的,这些因素和产量之间具有非线性关系,采用通常的数学方法很难对原油产量进行分析和预测。本文提出一种使用Apriori算法在Weka环境下进行原油预测的新方法。首先对某采油厂历年的月度生产相关数据使用K-Means算法进行数据预处理,得到事务数据集,再对其使用Weka平台下的Apriori算法进行关联分析,最后根据给定的最小支持度和最小置信度,筛选出与原油产量相关的强关联规则。使用这些强关联规则对采油厂未来几个月的原油产量进行预测,经过验证对比,该方法计算简单,运算效率高,预测结果准确。
关键词:原油产量预测;Apriori 算法;K-Means算法;关联规则;Weka
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)06-0260-02
1 概述
准确地预测油气产量对于油气田开发生产十分重要。目前进行原油产量预测的方法有多种,其中最常用的有数值模拟法[1]、BP神经网络法[2]、灰色理论法[3]等。但是,数值模拟法和神经网络算法所需参数较多,计算过程复杂;灰色理论选取的相关信息不全,预测结果精度较差。而关联规则挖掘算法在处理非线性模式识别方面表现突出,在石油开发生产领域有着很好的应用前景。
本文提出一种在Weka[5]环境下利用经典关联规则算法Apriori[6]算法来对原油产量进行预测的算法。Apriori算法使用一种被称为逐层搜索的迭代方法,根据给定的最小支持度,找出与原油产量相关的频繁项集,再根据最小置信度,得出与原油产量相关的强关联规则。运用这些强关联规则对原油产量进行预测,该方法计算方法简单,运算效率高。
2 理论知识介绍
2.1 Weka软件介绍
Weka是怀卡托智能分析环境的英文字收缩写,是一种使用Java语言编写的数据挖掘机器学习软件。它包含一套完整的数据处理工具、学习算法和评价方法,拥有数据可视化的图形用户界面,业界内得到广泛赞誉。
Weka系统包括回归、分类、聚类、关联规则以及属性选择等数据挖掘方法。输入数据可以有两种形式,第一种是读取ARFF格式文件;第二种是读取数据库。本文主要使用的Weka系统提供的Apriori算法在ARFF文件上进行数据挖掘。
2.2 Apriori算法介绍
Apriori[8]算法是由Rakesh Agrawal 和Rnamakrishnam Srikant提出的关联规则的原创性算法。它基于频繁项集的先验性质:任意频繁项集中的全部非空子集必也一定是频繁的。主要分为两个过程:生成频繁项集和产生强关联规则。
(1) 生成频繁项集:它需要经历两步:1) 连接步:通过将频繁项集Lk-1 (k>1) 与自身连接产生候选k项集的集合,该候选集记为Ck。2) 剪枝步:Ck是Lk的超集。逐个分析Ck中项根据是否满足最小支持度计数min_sup进行剪枝。剪枝后的得到的项集就是频繁项集。
(2) 生成关联规则:1) 对于每个频繁项集Lk,生成Lk的所有非空子集; 2) 对于Lk的每个非空子集s,如果[support_count(Lk)support_count(S)≥min_conf], 则输出规则[S?(LK-S)],其中,min_conf是最小置信度阈值。
由于关联规则由频繁项集产生,因此每个规则都自动地满足最小支持度。频繁项集和它们的支持度可以预先存放在散列表中,使得它们可以被快速的访问。
3 Apriori算法预测原油产量的实例
3.1 基本目的
原油生产过程非常复杂,与原油生产相关的数据很多,可以利用这些相关数据来预测原油产量数据。应用关联规则分析某采油厂生产相关数据,主要指分析采油用电、注水用电、集输用电、注水量、原油产量等数据,可发现这些数据之间存在一些强关联规则,能为采油厂预测原油产量提供决策支持。比如强关联规则{采油用电 (680.1万 kW h,692.2万kW h) ,注水量 (36万[m3],37.8万[m3]) }[?]原油产量(10.2万吨,10.4吨)}[support=15%,confidence=100%],表明若该采油厂的采油用电量位于680.7万kW h和692.2万kW h之间,注水量位于36万[m3]和37.8万[m3]之间,则原油产量预测值在10.2万吨和10.4万吨之间。
3.2 原始数据集的建立
本文从某采油厂用电数据库和原油产量数据库中抽取了1990年1月至2013年12月共288条月度数据,包括采油用电量、集输用电量、注水用电量、注水量、原油产量5类数据,然后把这些数据在逻辑上实现整合,进行缺失数据填充和异常数据筛选、修正等数据预处理工作,得到原始数据集。如表1所示。
3.3 原始数据集预处理
由于这些数据是月度生产相关数据,从表1中可以看出,原始数据集中每列数据的数值大小相近,连续性强,区分度不够,不利于使用关联规则算法分析数据。因此要对这些数据进行离散化处理。本文使用K-Means聚类算法实现采油厂原始数据集的离散化处理。
K-Means方法对于空间中的N个样本点,根据一定的距离函数和准则函数,将其划分为K个簇。各个簇之间区别明显而簇内的样本点相似度很高,分布紧密。在具体对采油厂原始数据集进行处理时,因所有数据项都是连续性的数据值,故采用的方法一致,现只对采油用电数据离散化过程进行介绍。
第一步将采油用电数据从原始数据集中抽取出来作为样本;第二步在Matlab上运用K-Means算法,设K值为4,将连续性的样本数据离散为4个等级。采油用电数据离散化结果如图1所示。
按照上述方法,可以得出采油用电(CYYD)、集输用电(JSYD)、注水用电(ZSYD)、注水量(ZSL)、原油产量(CYCL)的事务数据集代码转化表[10]。如表2所示。
3.4 使用Weka软件进行处理
(1) 把上述事务数据集转化代码表存放到Apriori.Arff文件中。如下图所示
(2) 在Weka Explorer视图中,点击Open file 找到 Apriori.Arff文件,再点击”Associate”,进行参数设置。其中lowerBoundMinSupport设为0.1,metricType设为Confidence,minMetric设为0.9,点击start。获得如下图所示的关联规则。
选取其中的有用规则7,它表示在采油厂月度采油用电达到 (627.1万kW h,683.9万kW h),注水用电达到(277.9万kW h,303.4万kW h),注水量达到 (40.86万[m3],42.91万[m3])的前提下,原油产量达到(10.78万吨,11.41万吨) 区间的可能性为百分之百。
3.5 预测实例
选取该采油厂2014年1月到6月的采油用电、集输用电、注水用电、注水量四类数据,运用Apriori算法产生的强关联规则,预测出该厂1月到6月的原油产量所在区间,再与2014年1月到6月原油产量的实际值作比较,发现实际原油产量值位于预测原油产量区间的可能性达到100%。原油产量预测结果与实际值比较如表6所示。
4 结论
Apriori关联规则分析算法提供了一个新的原油产量预测方法。随着采油厂月度生产相关数据的逐渐增多,通过使用K-Means聚类算法,这些数据的离散化等级区分度会更明显,得出的强关联规则各因素的区间范围会更小,从而使得预测结果更精确。不过随着油田开发时间的增长,会出现影响原油产量的其他因素,比如开井数、气温等,影响预测结果,因此增加油田生产相关数据的数据量和查找影响原油产量的其他因素将是下一步的研究方向。
参考文献:
[1] 姚志刚. 改进的Logistic模型在原油产量预测中的应用[J].油气地质与采收率,2010,17(3):93-94,98.
[2] 周彩兰, 刘敏. BP神经网络在石油产量预测中的应用[J].武汉理工大学学报,2009,31(3):125-129.
[3] 李德庆. 利用GM(1,1) 模型群预测石油产量[J].油气地质与采收率,2008,15(5):82-8.
[4] 陈惠萍,林莉莉,王建东,等. WEKA数据挖掘平台及二次开发[J].计算机工程与应用,2008,44(19):76-79.
[5] 吴学雁, 莫赞. 基于Apriori算法的频繁项集挖掘优化方法[J].计算机系统应用,2014,23(6):124-129.
[6] (加)Jiawei Han, Micheline Kamber著. 数据挖掘概念与技术[M].范明,孟小峰,译.北京:机械工业出版社,2007:146-161 .
[7] 刘华婷,郭仁祥,姜浩. 关联规则挖掘Apriori算法的研究和改进[J].计算机应用与软件,2009,26(1):146-149.
[8] 谷俊杰, 王为力, 李家川, 等. 关联规则挖掘在电站运行优化中的运用[J].电站系统工程, 2009,25(1):8-10.