基于时序的股票预测算法研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
0引言
在股票预测算法中,关联规则挖掘是一种有效的挖掘方法。传统的关联规则主要是揭示了多个事物的同一属性在相同的时间点上的相互关联性,以股票为例,传统的关联规则挖掘方法挖掘的关联规则类似于“A 股票涨,B 股票涨C 股票涨(30%,80%)”这样的规则,项与项之间没有体现时间上的差别,也就无法对时间序列的发展趋势进行预测。本文采用的时序关联规则主要是描述了同一事物的某属性连续变化的关联程度。例如,如果我们从某只股票每日的收盘价的历史时序数据中得知该股票的日收盘价不会出现连续4天都呈现上升的情况,那么我们就可以据此判断:“如果该股票的日收盘价已经出现连续4天均为上升的走势,那么在第5天的时候,该股票的日收盘价不会再上升”。尽管我们难以预测在第5天该股票的日收盘价格是多少,但是我们可以预测该股票的日收盘价的大概走势[1]。
1
基本概念1.1股票时间序列集的定义
给定股票I 的状态集H ={h 1,
h 2,…,h n },其中h k (k =1,2,…,n )是集合H 中的一个项目。因为本文考虑的是时序关联,所以在此要引入时间这个属性,用来反映各项的先后发生顺序。因而在定义1的基础上给出了加入时间属性后的集合T ,记为T ={ 位的集合T ;其中h k (1≤k ≤n )表示的是股票I 的日收盘价在对应时间t i 上的属性状态(上升或者下降)。这里用“->”表示上升状态,“<-”表示下降状态[2]。 本文中的上升和下降的状态是以每天的属性值与前一天的属性值相比较,来决定某事物的某个属性是上升还是下降,如果出现既不上升也不下降,即持平状态,我们要根据持平状态的前一个状态来定,也就是说如果持平状态之前的状态是上升的,那么我们把持平状态归为上升状态;相反,如果持平状态之前的状态是下降的,那么我们就把持平状态归为下降状态。如果持平状态出现在序列的开始,那么就按照持平状态的后一个状态来定,后一个状态如果是上升的,前面的持平状态归为上升状态;如果后一个状态是 收稿日期:2010-04-02;修回日期:2010-04-10 作者简介:王果(1982-),女,河南郑州人,工程师,硕士,研究方向为数据挖掘、智能信息处理。 基于时序的股票预测算法研究 王果,骆晓艳,胡志波,陈素 (广州中医药大学信息技术学院,广东广州510006) 摘要:提出了一种基于时序的股票预测算法。该算法基于时序, 对股票在连续时间段内发生变化的数值进行研究,并利用该算法得到的结果进行预测。结果表明,这种方法对于事物的单属性预测是具有实际意义的。 关键词:数据挖掘;股票;时序关联规则 中图分类号:TP301.6文献标识码:A 文章编号:1674-8522(2010)06-0005-04 第16卷第6期 江苏技术师范学院学报 JOURNAL OF JIANGSU TEACHERS UNIVERSITY OF TECHNOLOGY Vo l.16,No.6Jun .,2010 2010年6月 下降的,前面的持平状态就归为下降状态。 1.2时间序列子集的定义 记s i =(h i ,h i +1,…,h i+k -1)(1≤i ≤n -k +1)为时间序列集合T 的一个时间子序列集,其中k 为该时间子序 列的长度, s i 中的各项的排列顺序和它们在时间序列T 中顺序保持一致。即s i 中各项也是按照它们发生时间的递增顺序排列的[3]。 根据上述定义,我们得到时间序列T 的长度为k 的所有的时间子序列集。 记为:S (T ,k )={s i ︳i =1,2,…,n-k +1},且S (T ,k )=n-k +1。 2 基于时序的股票预测算法2.1算法思想 基于时序的股票预测算法的挖掘过程共分为三大步骤,先求出时间序列的长度为k 的子时间序列集S (T ,k )的个数;接着从子时间序列集S (T ,k )中分别求出这些子时间序列集中的上升和下降的子时间序列集的个数,然后求出T 中最大的上升的子时间序列的长度和T 中最大的下降的子时间序列的长度;再利用这些数据,并用公式计算出相应的支持度和置信度,最后得到具有时序性质的关联规则。算法中用到的参数:k 为挖掘子时间序列的长度;m 表示从T 中挖掘出来的长度为k 的上升子时间序列的个数,Lr 表示从T 中挖掘出来最大的上升子时间序列的长度,SR (T ,k )表示T 中时间序列的长度为k 的所有上升子时间序列的集合[4]。 2.2T1算法 输入:时间序列集T ,要挖掘的子时间序列长度值k (2≤k ≤n -1); 输出:从T 中挖掘出来的长度为k 的上升子时间序列的个数m 。 T1.[初始化]置S (T ,k )为空,m =1; T2.[循环]置i =1;当i ≤n -k +1时,则循环执行步骤T3-T8;否则执行步骤T9; T3.[求子序列s i ]s i =(t i ’,t i +1’,…,t i+k -1’); T4.[循环]置j =i ;当j ≤i+k -2时,则循环执行步骤T5;否则执行步骤T6; T5.[判断]如果t j ’=t j+1’=‘->’时,则执行步骤T8;否则执行步骤T7; T6.[判断]如果j >i+k -2,m ++,返回执行步骤T2; T7.[循环控制变量i 自加]i ++;返回执行步骤T2; T8.[循环控制变量j 自加]j ++;返回执行步骤T4; T9.[输出值m ]输出T 中的长度为k 的所有上升子时间序列的个数m ; 这样就得到了T 中所有长度为k 的上升子时间序列的个数m ;同理,可从T 中挖掘出来所有长度为k 的下降子时间序列的个数,记为t 。 2.3T2算法 输入:时间序列集T ,任意子时间序列长度值p (2≤p ≤n ); 输出:从T 中挖掘出来最大的上升子时间序列的长度Lr 。 T1.[初始化]置SR (U ’,p )为空; T2.[循环]置i =1;当i ≤n-p +1时,则循环执行步骤T3-T7;否则执行步骤T8; T3.[求子序列s i ]s i =(u i ’,u i +1’,…,u i+p -1’); T4.[循环]置j =i ;当j ≤i +p -2时,则循环执行步骤T5; T5.[判断]如果u j ’=u j+1’=‘->’时,则执行步骤T28;否则执行步骤T6; T6.[判断]如果j >i+p -2,则执行步骤T7;否则执行步骤T29; T7.[加入新序列]SR (U ’,p )=SR (U ’,p )∪{s i };置i =i +1,返回执行步骤T2; 6第16卷江苏技术师范学院学报