lzh19840809 发表于 2009-4-27 09:57

为什么出了样本范围就没法预测了呢?

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')

mao 发表于 2009-5-2 10:27

我觉得你这个问题并不在于SVM的本身,你的问题恰好是内插与外插问题的差异问题,你的前面例子是内插问题,而后面的问题是外插问题,内插的精度肯定要比外插要好,我想对于外插问题至今应该没有完美的解决方案,特别对于外插范围很大的问题,SVR也不例外,预测的时间越长,精度越差

zhuxiaoxun 发表于 2009-5-4 10:01

核函数也会有影响。
有的核函数适合拟和(内插植),有的适合预测(外插)。
页: [1]
查看完整版本: 为什么出了样本范围就没法预测了呢?