为什么出了样本范围就没法预测了呢?
x1=0:pi/20:2*pi %样本y1=sin(x1) %样本
x2=0:pi/20:2*pi %测试值
y2=sin(x2) %测试值
在这种情况下是可以预测的,而且效果还不错。
但是如果换成
x1=0:pi/20:2*pi %样本
y1=sin(x1) %样本
x2=0:pi/20:4*pi %测试值
y2=sin(x2) %测试值
0-2*pi的预测也是可以的,但是2*pi-4*pi就没法预测了,这是怎么回事呢?求高手来解答
附源代码:
clc
clear
close all
x1=0:pi/20:2*pi
y1=sin(x1)
x2=0:pi/20:4*pi
y2=sin(x2)
%定义SVR 参数
global p1 ;
p1=1
ker='erbf'; % 核函数 k = exp(-(u-v)*(u-v)'/(2*p1^2))
C=1000;
e=0.01;
loss='einsensitive';
%训练支持向量机
= svr(x1',y1',ker,C,loss,e); % 训练样本数据。
ytest2= svroutput(x1',x2',ker,beta,bias); % 测试样本数据
plot(x2,y2,'r+:',x2,ytest2,'bo') 我觉得你这个问题并不在于SVM的本身,你的问题恰好是内插与外插问题的差异问题,你的前面例子是内插问题,而后面的问题是外插问题,内插的精度肯定要比外插要好,我想对于外插问题至今应该没有完美的解决方案,特别对于外插范围很大的问题,SVR也不例外,预测的时间越长,精度越差 核函数也会有影响。
有的核函数适合拟和(内插植),有的适合预测(外插)。
页:
[1]