1. 用libsvm做时间序列预测,为什么训练数据越少越准确
楼主的说法似乎不太对
首先,训练数据的主要区别是什么是测试数据:
如果我有一堆计时数据,首先随机分为两堆,一堆训练只用于看模型是好的,然后前者称为训练数据。下面是几个训练数据序列。(注意不要把训练数据的结果作为模型质量的度量,这是最基本的)。
最后,如果像预测股票价格一切都那样简单,那么就不需要这么多机器学习和金融专家才能进行高频交易。
2. 用 SVM做回归预测,得到结果参数分析如下,这样算不算好结果呢预测准确的话,MSE和R应该在怎样的数值上
算,我的R2才0.0几。。
3. 用svm建立的模型进行预测,怎么预测的数据完全一样啊
1、首先输入数据集,分析数据维度,可以看到共有0,1,2,3四个类别,如下图所示。
4. 用svm做回归预测,为什么预测值都是一样的
第一,要先看你建立的回归方程中各个自变量是否都具有显著预测作用;第二,你的回归方程预测效果如何,也就是决定系数R方有多大,如果预测效果很差,用方程计算出来的值和原始值肯定出入很大。除非R方等于1,否则不可能用方程预测出来的值都和原始值完全一样。
5. 用svm做回归预测,为什么预测值都是一样的
我发现我的问题是gamma那个参数设置的太大了,在默认参数附近设置就好了
6. 如何使用libsvm进行回归预测
<1> 下载Libsvm、Python和Gnuplot。我用的版本分别是:Libsvm(2.8.1),Python(2.4),Gnuplot(3.7.3)。注意:Gnuplot一定要用3.7.3版,3.7.1版的有bug.
<2> 修改训练和测试数据的格式(可以自己用perl编个小程序):
目标值 第一维特征编号:第一维特征值 第二维特征编号:第二维特征值 ...
...
例如:
2.3 1:5.6 2:3.2
表示训练用的特征有两维,第一维是5.6,第二维是3.2,目标值是2.3
注意:训练和测试数据的格式必须相同,都如上所示。测试数据中的目标值是为了计算误差用
<3> 分别使用Libsvm中的Windows版本的工具svmscale.exe进行训练和测试数据的归一化,svmtrain.exe进行模型训练,svmpredict.exe进行预测
(1)svmscale.exe的用法:svmscale.exe feature.txt feature.scaled
默认的归一化范围是[-1,1],可以用参数-l和-u分别调整上界和下届,feature.txt是输入特征文件名
输出的归一化特征名为feature.scaled
(2)svmtrtrain.exe训练模型
我习惯写个批处理小程序,处理起来比较方便。例如svm_train.bat中训练语句为:
svmtrain.exe -s 3 -p 0.0001 -t 2 -g 32 -c 0.53125 -n 0.99 feature.scaled
训练得到的模型为feature.scaled.model
具 体的参数含义可以参考帮助文档。这里-s是选择SVM的类型。对于回归来说,只能选3或者4,3表示epsilon-support vector regression, 4表示nu-support vector regression。-t是选择核函数,通常选用RBF核函数,原因在“A Practical Guide support vector classification”中已经简单介绍过了。-p尽量选个比较小的数字。需要仔细调整的重要参数是-c和-g。除非用 gridregression.py来搜索最优参数,否则只能自己慢慢试了。
用gridregression.py搜索最优参数的方法如下:
python.exe gridregression.py -svmtrain H:/SVM/libsvm-2.81/windows/svmtrain.exe -gnuplot C:/gp373w32/pgnuplot.exe -log2c -10,10,1 -log2g -10,10,1 -log2p -10,10,1 -v 10 -s 3 -t 2 H:/SVM/libsvm-2.81/windows/feature.scaled > gridregression_feature.parameter
注意:-svmtrain是给出svmtrain.exe所在路径,一定要是完整的全路径
-gnuplot是给出pgnuplot.exe所在路径。这里要用pgnuplot.exe这种命令行形式的,不要用wgnupl32.exe,这个是图形界面的。
-log2c是给出参数c的范围和步长
-log2g是给出参数g的范围和步长
-log2p是给出参数p的范围和步长
上面三个参数可以用默认范围和步长
-s选择SVM类型,也是只能选3或者4
-t是选择核函数
-v 10 将训练数据分成10份做交叉验证。默认为5
最后给出归一化后训练数据的全路径
搜索最优参数的过程写入文件gridregression_feature.parameter(注意别少了这个>符号啊)
根据搜索到的最优参数修改feature.scaled.model中的参数
(3)用svmpredict.exe进行预测
svmpredict.exe feature_test.scaled feature.scaled.model feature_test.predicted
其中feature_test.scaled是归一化后的测试特征文件名,feature.scaled.model是训练好的模型,SVM预测的值在feature_test.predicted中。
7. 怎么利用svm对时间序列进行建模
SVM理论是在统计学习理论的基础上发展起来的,由于统计学习理论和SVM方法对有限样本情况下模式识别中的一些根本性的问题进行了系统的理论研究,很大程度上解决了以往的机器学习中模型的选择与过学习问题、非线性和维数灾难、局部极小点问题等。应用SVM进行回归预测的步骤具体如下:
1)实验规模的选取,决定训练集的数量、测试集的数量,以及两者的比例;2)预测参数的选取;3)对实验数据进行规范化处理;4)核函数的确定;5)核函数参数的确定。其中参数的选择对SVM的性能来说是十分重要的,对于本文的核函数使用RBF核函数,对于RBF核函数,SVM参数包括折衷参数C、核宽度C和不敏感参数E。目前SVM方法的参数、核函数的参数选择,在国际上都还没有形成统一的模式,也就是说最优SVM算法参数选择还只能是凭借经验、实验对比、大范围的搜寻和交叉检验等进行寻优。实际应用中经常为了方便,主观设定一个较小的正数作为E的取值,本文首先在C和C的一定范围内取多个值来训练,定下各个参数取值的大概范围,然后利用留一法来具体选定参数值
股价时间序列的SVM模型最高阶确定
股价数据是一个时间序列,从时间序列的特征分析得知,股价具有时滞、后效性,当天的股价不仅还与当天各种特征有关,还与前几天的股价及特征相关,所以有必要把前几天的股价和特征作为自变量来考虑。最高阶确定基本原理是从低阶开始对系统建模,然后逐步增加模型的阶数,并用F检验对这些模型进行判别来确定最高阶n,这样才能更客观反映股票价格的时滞特性。具体操作步骤如下:假定一多输入单输出回归模型有N个样本、一个因变量(股价)、m- 1个自变量(特征),由低阶到高阶递推地采用SVM模型去拟合系统(这儿的拓阶就是把昨天股价当做自变量,对特征同时拓阶),并依次对相邻两个SVM模型采用F检验的方法判断模型阶次增加是否合适[ 7]。对相邻两模型SVM ( n)和SVM ( n+ 1)而言,有统计量Fi为:Fi=QSVR (n)- QSVR( n+1)QSVR (n)1N - m n - (m -1)mi =1,2,,, n(1)它服从自由度分别为m和(N - m n - (m -1) )的F分布,其中QSVR (n)和QSVR( n+1)分别为SVR ( n)和QSVR( n+1)的剩余离差平方和,若Fi< F(?,m, N-m n- (m-1) ),则SVM (n )模型是合适的;反之,继续拓展阶数。
前向浮动特征筛选
经过上述模型最高阶数的确定后,虽然确定了阶数为n的SVM模型,即n个特征,但其中某些特征对模型的预测精度有不利影响,本文采用基于SVM和留一法的前向浮动特征特征筛选算法选择对提高预测精度有利影响的特征。令B= {xj: j=1,2,,, k}表示特征全集, Am表示由B中的m个特征组成的特征子集,评价函数MSE (Am)和MSE (Ai) i =1,2,,, m -1的值都已知。本文采用的前向浮动特征筛选算法如下[9]:1)设置m =0, A0为空集,利用前向特征筛选方法寻找两个特征组成特征子集Am(m =2);2)使用前向特征筛选方法从未选择的特征子集(B -Am)中选择特征xm +1,得到子集Am+1;3)如果迭代次数达到预设值则退出,否则执行4);4)选择特征子集Am+1中最不重要的特征。如果xm+1是最不重要的特征即对任意jXm +1, J (Am +1- xm+1)FJ(Am +1- xj)成立,那么令m = m +1,返回2) (由于xm+1是最不重要的特征,所以无需从Am中排除原有的特征);如果最不重要的特征是xr( r =1,2,,, m )且MSE (Am+1- xr) < MSE (Am)成立,排除xr,令A'm= Am+1- xr;如果m =2,设置Am= A'm,J (Am) = J (A'm), ,返回2),否则转向步骤5);5)在特征子集A'm中寻找最不重要的特征xs,如果MSE (A'm- xs)EM SE (Am-1),那么设置Am= A'm, MSE (Am)= MSE (A'm),返回2);如果M SE (A'm- xs) < M SE (Am -1),那么A'm从中排除xs,得到A'm-1= Am- xs,令m = m -1;如果m =2,设置Am= A'm, MSE (Am) = MSE (A'm)返回2),否则转向5)。最后选择的特征用于后续建模预测。
预测评价指标及参比模型
训练结果评估阶段是对训练得出的模型推广能力进行验证,所谓推广能力是指经训练后的模型对未在训练集中出现的样本做出正确反应的能力。为了评价本文模型的优劣,选择BPANN、多变量自回归时间序列模型( CAR)和没有进行拓阶和特征筛选的SVM作为参比模型。采用均方误差(mean squared error, MSE)和平均绝对误差百分率(mean ab-solute percentage error, MAPE)作为评价指标。MSE和MAP定义如下:M SE=E(yi- y^i)2n( 2)MAPE=E| yi- y^i| /yin( 3)其中yi为真值, y^i为预测值, n为预测样本数。如果得出M SE, MAPE结果较小,则说明该评估模型的推广能力强,或泛化能力强,否则就说明其推广能力较差
8. SVM回归预测程序问题,求帮助
《MATLAB神经网络30个案例分析》里面有一个用SVM做股票开盘价分析的程序
他里面有这么几句
ts = sh(2:m,1);
tsx = sh(1:m-1,:);
%归一化 。。。
model = svmtrain(TS,TSX,cmd);
[predict,mse, decision_values] = svmpredict(TS,TSX,model);
他这个不是在用训练集预测自己吗?这样有什么意义?
另外我的时间序列每次只有一个数据,预测的时候是不是就只有一个特征?
谢谢!!
9. 基于Matlab SVM的信息粒化时序回归预测----上证指数开盘指数变化趋势及变化空间预测 如何写毕业设计
证指数开盘指数。
变化趋势及变化空间预测
我,给,的好。 的