【问题标题】:Direct forecast using epsilion-SVR使用 epsilon-SVR 直接预测
【发布时间】:2015-07-20 06:20:21
【问题描述】:

是否可以使用 epsilion-svr 直接预测未来?

我的数据集是一个单变量时间序列,每行都有这种格式的记录:

Y(t-W), Y(t-W+1), ..., Y(t), Y(t+PH)

W 是要考虑的时间步数

PH 控制我要预测的未来步数。

这对PH > 1 有效吗?

【问题讨论】:

    标签: matlab time-series libsvm forecasting


    【解决方案1】:

    基于 Support-Vector-Regression 的预测器正是用于此目的。

    应该代表PH >= 1

    epsilon-SVR 模型中epsilon 的值指定了 epsilon-tube,在该 epsilon-tube 中,训练损失函数中没有惩罚与预测的点在距离实际值 epsilon 内的点 Y(t)

    model = svmtrain( Y_targets,      %% Mx1 vector of the training data target response values,
                      X_trainSamples, %% MxN matrix of the training samples, having N features, where N = W + 1
                      param           %% ref. below
                      );
    

    param 是指定模型参数的字符串。

    对于回归,典型的参数字符串可能如下所示, ‘-s 3 -t 2 -c 20 -g 64 -p 1’在哪里

    -s svm type,        3 for epsilon-SVR
    -t kernel type,     2 for radial basis function
    -c cost parameter C of epsilon-SVR
    -g width parameter gamma for RBF kernel
    -p epsilon for epsilon-SVR
    

    无论如何,请查看您的 SVR 实施详细文档以了解更多详细信息。

    【讨论】:

    • 当使用 svmpredict 函数预测未来值时,我们在训练阶段提供标签。为什么?只是为了得到 MSE 和训练数据的自相关结果吗?当我们想用测试数据测试模型时,可以给一个随机值吗?
    • 嗯,SVR 预测器提供值,而不是标签作为面向分类器的预测器。需要训练数据集来开发最小化 SVR 惩罚函数的过程并提供一组支持向量。交叉验证有助于进一步更好地调整学习器的参数,从而使泛化和过拟合变得更好,并允许预测器更好地处理样本外数据(超出 TimeSeries 的训练时期)。
    • 我无法理解如何对时间序列进行交叉验证。数据集中记录的顺序不重要吗?我们只需要维护每条记录内的顺序吗?关于 epsilon 参数,是否可以先验知道我们正在处理的问题类型,对吗?
    • 交叉验证的工作方式与其他数据集相同。您可能想知道,如果对任何其他主题感兴趣,StackOverflow 社区鼓励作为另一个问题提出,以防止“爬行”和“扩大”原来的关注主题在原始帖子中。
    • 很高兴知道答案已被接受并帮助了您。 StackOverflow 网络礼节鼓励用户通过点击 [+1] 来表达这一点。 不要犹豫“投票”,并在您发现您认为有用的有用知识时,为好的问题和答案展示这一点。 享受成为这个伟大的 StackOverflow 社区的积极成员。
    猜你喜欢
    • 2018-09-15
    • 2013-02-11
    • 2020-07-05
    • 2019-05-22
    • 2014-08-16
    • 1970-01-01
    • 2017-03-14
    • 2018-11-04
    相关资源
    最近更新 更多