改进的Apriori算法在股票分析中的应用研究_王冬秀

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2012-07-06
基金项目:广西回国基金项目(2011GXNSFC018005)。

作者简介:王冬秀(1981-),女,广西资源人,硕士,实验师,研究方向:数据挖掘,E-mail:dongxiu2011@sina.com。

改进的Apriori算法在股票分析中的应用研究
王冬秀1,胡迎春2,李辉1
(1.广西工学院财经学院,广西柳州545006;2.广西工学院发展规划处,广西柳州545006)
摘要:针对经典Apriori 算法效率上的不足,提出了一种改进的Apriori 算法。

通过改进的Apriori 挖掘算法对股票交易数据库中的数据进行分析,找出各种股票之间的隐藏关系,挖掘出一些可靠的、合理的股票关联规则,为投资者对股票是买入还是卖出提供决策支持。

实验表明,改进的算法能够快速地发现股票之间的涨跌关系,具有良好的应用效果。

关键词:关联规则;Apriori算法;股票分析中图分类号:TP18
文献标识码:A
文章编号:1001-7119(2013)03-0125-04
The Application and Research of Improved Apriori Algorithm in Stock Analysis
Wang Dongxiu 1,Hu Yingchun 2,Li Hui 1
(1.College of Finance and Economics,Guangxi University of Technology,Liuzhou 545006,China;
2.Planning Development Office,Guangxi University of Technology,Liuzhou 545006,China )
Abstract :FocusingontheinsufficiencyonefficiencyintheclassicalalgorithmApriori,animprovedApriorialgorithmisputforward.ThroughimprovedAprioriminingalgorithmtoanalyzethedataofstocktransactionsinthedatabase,findingouttherelationshipsbetwwenthevariousstocks,diggingoutsomereliableandreasonableassociationrulesofstocks,itcanhelptheinvestorstomakedecisionsaboutbuyingorsellingtheirstocks.Experimentsshowthattheimprovedalgorithm,whichhasgoodapplicationeffectsandcanquicklyfindtherisingorfallinginstocks.Key words :associationrule;apriorialgorithm;stockanalysis
近年来,随着信息技术的普及,数据呈爆炸式地增长,如何从海量数据中提取有用的信息,成为现实生活的迫切需要,在这样的背景下,数据挖掘技术应运而生。

数据挖掘是指从大量数据中提取
隐含的、
潜在的,前所未知的知识的过程[1]。

而关联规则挖掘算法是数据挖掘中最为活跃的分支,受到了学者们的广泛关注。

1993年Agrawal等提出的Apriori算法是最经典的关联规则挖掘算法[1],该算法使用一种称为逐层搜索的迭代方法,K 项集用于探索(K +1)项集。

该算法的主要缺点是需要频繁地扫描数据库,如果事务数据库较大时,
将极大地影响算法的效率。

因此,如何提高运行过程中算法的效率是要解决的首要问题,在近十
几年来,学者们提出了很多解决该问题的新方法[2-5]
,将新方法应用于股票分析的也有比较成功的
案例[6,7]。

本文在对经典的Apriori算法进行深入探讨的基础上对Apriori算法进行了改进。

改进的算法首先找到频繁1项集L 1,然后对频繁1项集L 1进行重新组织,得到新的数据库,对新的数据库只需扫描一次,即可得到所有的频繁项集,改进了原算法中需频繁的扫描数据库的缺陷。

将改进算法应用到股票分析的仿真实验中,改进算法能快速地挖掘各股票的股价涨跌关联,能为投资者提供很好的决策支持。

第29卷第3期2013年3月
科技通报
BULLETIN OF SCIENCE AND TECHNOLOGY
Vol.29No.3Mar.2013
第29卷科技通报
1关联规则的经典算法Apriori[1,8]
1.1关联规则
关联规则的挖掘问题可以用下面的形式来描述,假设I={i1,i2,…,i n}是项目的集合,D是数据库中事务的集合(即数据库),其中每个事务T 是一些项目的集合,即T∈I。

每个事务有一个标识符,称为TID。

设A是一个项目集,当且仅当A∈I时事务T包含A。

关联规则形如:A→B,其中A∈I,B∈I并且A∩B≠覫。

描述关联规则的两个重要概念是支持度和置信度两个阈值,具体描述为:
支持度:support=(A圯B)=p(A∪B)(1)
置信度:confidence=(A圯B)=p(B
A
)(2)具有支持度S,其中S是D中事务包含A∪B 的百分比,它是概率p(A∪B)。

具有置信度C,其中C是D中包含A的事务同时也包含B的百分比,这是条件概率P(B|A)。

那些超过最小支持度min_sup和最小置信度min_conf阈值的规则,就称为强关联规则。

1.2经典算法Apriori
Apriori算法是通过项目集元素数目不断增长来逐步完成频繁项目集发现的。

首先,通过扫描数据库,累计每个项的计数,并收集满足最小支持度的项,找出频繁1项集的集合,记为L1,然后L1用于找频繁2项集的集合L2,L2用于找L3,如此下去,直到不能再找到频繁K项集。

该算法分为两步:
(1)连接步:通过将L k-1与自身连接产生C k (候选K项集),设l1和l2是L k-1中的项集,l i[j]表示l i中的第j项,为方便起见,假设Apriori算法中的事务或项集中的项是按字典序排序的,即
l i[1]<l i[2]<…<l i[k-1]。

执行连接,如果它们的前(k-2)项相同,则L k-1的元素是可连接的。

即L k-1中的l1和l2是可连接的,如果
(l1[1]=l2[1])∧(l1[2]=l2[2])∧…∧(l1[k-2]
=l2[k-2])∧(l1[k-1]=l2[k-1]),连接结果为
l1[1],l2[1],…,l1[k-1],l2[k-1]。

(2)剪枝步:C k是L k的超集。

扫描数据库,确定C k中每个候选的计数,从而确定L k,然而C k可能很大,这样所涉及的计算量就会非常大。

为压缩C k,根据Apriori性质,任何非频繁的(k-1)项集不可能是k项集的子集。

因此,如果候选k项集的(k-1)子集不在L k-1中,则可以从C k中删除。

该算法有两个主要的性能瓶颈[7]:(1)需要频繁地扫描数据库。

寻找每个k-频繁项集需扫描数据库一次,这样当k很大时,将耗费大量的时间,极大地影响算法的效率。

(2)在剪枝步中,要判断C k的(k-1)子集是否在L k-1中,需频繁扫描L k-1,如果C k很大时,算法的效率将会非常低下。

2改进的Apriori算法
本文针对Apriori算法的不足,提出了一种改进的Apriori算法—OPT-Apriori算法,该算法的思想如下:第一步根据事先设定好的最小支持度计数,对数据库进行一次扫描,将得到的1-项集的支持度计数与最小支持度计数进行比较,从而得到频繁1项集L1和各子集的支持度计数。

第二步根据频繁1项集L1对事务数据库进行重新组织,对于那些没有在L1中出现的项将直接从数据库中删掉,从而得到新的数据库Dnew[2]。

第三步对新数据库Dnew进行扫描,假设所有可能的项集的初始支持数都为0,然后开始对事务数据库的第1条事务记录进行扫描,利用Subset函数找出该事务中(空集和1项集不计)是候选的所有子集,对所有的子集(空集和1项集除外)的支持数进行加1操作,然后再扫描第2条事务数据记录,利用函数Subset函数找出该事务中(空集和1项集除外)是候选的所有子集,对在第1条事务记录中已经出现的子集和新出现的子集(空集和1项集除外)的支持数均进行加1操作,然后扫描第3条事务数据记录,第4条事务记录等,不断重复,直到扫描完整个数据库,最后得到所有候选子集(空集和1项集除外)的支持度计数。

第四步将前面得到的所有候选子集(空集和1项集除外)与事先设定的最小支持度阈值min_sup进行比较,从而得到频繁k项集的集合L k。

为了对该算法进行更好地描述,现给出算法的伪代码如下:
OPT-Apriori(D,T,min_sup)
Input:transactiondatabaseD;transactionsetT;minimumsupportmin_sup
Output:frequentk(k=1,2….k)itemsetsL k
ScanthetransactiondatabaseD;L1←findfre-
126
第3期quent1itemsfromD;
Deleteunfrequent1itemsfromD;Dnew←Reor-ganizethetransactiondatabaseD;
For anewlygeneratedtransactionsetTifromDnewDO BEGIN T i '←Subset(Ti);end for
ScaneveryT i 'For everyitemi inT i 'DO BE -GIN
IF (i ≠覫∧i ≠1_items )i .support++end
IF (anyrequirementisgiven)Output(L k =1,2….K );end IF
由以上伪代码可以知道,改进的算法找到所有的L k 只需对数据库进行2遍扫描,避免了Apriori算法中每找一个L k 需要对数据库进行一次全扫描的缺陷。

如果有任何请求发出时,可以在线输出频繁k 项集L k =(1,2…K )。

为了验证该改进算法的有效性,实验选取与经典的Apriori算法进行性能比较。

实验环境为Intel(R)DCPU3.00GHz,内存为1GB的PC机,实验数据来源于频繁项集挖掘实现资源库的数
据集T1014D100K[9],
实验过程采用VC++6.0编程实现,在不同的支持度下,改进算法与经典Apriori算法的运行时间如图1所示:
图1两种算法在不同支持度下运行时间比较Fig.1Running time comparison of the two algorithms in
different support
在支持度不同的情况下,OPT-Apriori算法较之经典的Apriori算法,算法的运行效率有较显著地提高,尤其是在支持度较小时,所得到的候选K项集较多的时候,该算法的优势更加明显。

3实验及结果分析
本文采用某证券交易市场1995年到2010年的部分股票交易数据作为数据来源,使用本文改进的Apriori算法挖掘各股票股价之间的关联。

采用此算法旨在从股票行情的历史数据中挖掘
出形如“当X股票收益率下跌的时候,
Y股票收益率也下跌的概率为85%”的关联规则,从中得到规律,以便投资者制定更适合的策略。

3.1数据预处理
在实验中,实验数据从搜狐股票频道的历史数据中下载,下载的数据保存在SQL2000数据库中,实验时随机抽取部分数据进行股市关联规则挖掘,部分股票数据如表1所示。

表1部分股票数据Table 1Part of stock data
在实验中假设一支股票的平均收益率比前一天上涨2%,即认为该股的涨幅为T(真),如果一支股票的平均收益率比上一天下跌2%,即认
为该股的涨幅事件为F(假)。

为了更好地进行关联规则挖掘,对表1的原始实验数据进行处理,处理后的部分实验数据如表2所示。

表2处理后的部分数据Table 2Part of data after process
3.2挖掘关联规则
在实验中,设定最小支持度min_sup=35%,最小置信度min_conf=50%,利用改进的Apriori算法-OPT-Apriori算法,得到挖掘结果如表3所示。

3.3挖掘结果分析
通过实验得到的关联规则,可得到如下的分析结果。

数据号012345678…
X 股28.127.426.727.328.227.128.327.629.05…
Y 股15.214.8214.114.514.1313.814.213.914.32…
Z 股15.2514.915.4515.0115.516.816.116.516.1…
数据号123
45678…
Y 股F F T F F T F T …
Z 股F T F T T F T F …
X 股F F T T F T F T …
王冬秀等.改进的Apriori 算法在股票分析中的应用研究
127
第29卷科技通报
由规则1可知,当X股收益率下跌的时候,Y股收益下跌的概率为98%,因此投资者可以根据这一预测信息做出决策。

一种策略可以看好Y股未来的涨势,准备好充足的资金,等Y股下跌的时候,以低价大量购买Y股,等将来涨势好的时候,以高价大量抛售Y股,以获得较大的收益。

另一种策略是如果手中拥有大量Y股,而目前又急需资金周转,可以考虑在Y股还没有下跌的时候,提前抛售Y股,获得收益。

由规则5可知,在X股和Y股均下跌的时候,Z股上涨的概率为62.2%,投资者根据这一信息,在X股和Y股均下跌的时候,此时可以考虑购买一定数量的Z股,因为Z股很可能马上就要上涨了。

由规则7可知,在Y股上涨的时候,Z股下跌的概率几乎会达到100%,因此也可做出两种策略,要么趁Z股还没有下跌的时候,趁早抛售手中现有的Z股;要么就抓紧时间筹措资金,等Z股下跌的时候,以低价大量买进Z股,将来Z股涨势好的时候,再卖出Z股,获得较大的收益。

4结论
股票交易作为证券市场及金融业的重要组成部分,它的高收益与高风险并存的特性,一直被投资机构和普通股民所关注。

本文针对股票交易数据的特点,在对经典的Apriori算法进行分析的基础上,对Apriori算法进行了优化,提出了一种改进算法,并将改进的算法应用到股票数据分析中,对股票的历史数据进行关联规则挖掘,得出了一些例如“A股票价格上涨或下跌,得出B股票价格上涨或下跌的概率是多少”这样的一些有实际意义的结论。

根据这些结论投资机构或普通股民可以快速发现各股票之间的涨跌关系,从而可以对自己手中现有的股票是卖出还是买进做出决策。

实验表明,该改进算法可以很好地对股票走势进行预测,具有很好的现实意义和应用前景。

参考文献:
[1]Han Jiawei,Kamber M.Data Mining:Concepts and Tech-
niques[M].北京:机械工业出版社,2001.
[2]郭建美,宋顺林,李世松.基于Apriori算法的改进算法
[J].计算机工程与设计,2008,29(11):2814-2820.
[3]钱光超,贾瑞玉,张然,李龙澍.Apriori算法的一种优化
方法[J].计算机工程,2008,34(23):196-198.
[4]詹芹,张幼明.一种改进的动态遗传Apriori挖掘算法[J].
计算机应用研究,2010,27(8):2929-2935.
[5]王培吉,赵玉琳,,吕剑峰.基于Apriori算法的关联规则
数据挖掘研究[J].统计与决策,2011,(23):19-21.
[6]郭淑红.基于Apriori算法的股票分析仿真系统[J].计算
机仿真,2010,27(6):334-337.
[7]徐海鹏.基于关联规则的股票预测方法研究[J].计算机
与数字工程,2010,(3):150-153.
[8]纪希禹,韩秋明,李微,李华锋等.数据挖掘技术应用实
例[M].机械工业出版社,2009.
[9]Frequent itemset mining implementations repository[EB/
OL].http://fimi.cs.helsinki.fi/.
表3部分实验结果
Table3Part of experimental results
关联规则
X:F
Y:F
Z:T X:F Z:T X:F Y:F X:T Y:T
Y:T
X:T
Z:F
Y:F 支持度%
55
53
36
38
41
35.1
36
37.5
36.2
51
置信度%
98
72
57
96.5
62.2
66
1
65
63.5
76.3
ID 1 2 3 4 5 6 7 8 9 10规则结论
Y:F
X:F X:F Y:F
Y:F
Z:T
Z:F
Z:F Y:T Z:F X:T Y:T
Z:T
128。

相关文档
最新文档