Matlab中高斯回归SVM的手动预测

Posted

技术标签:

【中文标题】Matlab中高斯回归SVM的手动预测【英文标题】:Manual prediction of Gaussian Regression SVM in Matlab 【发布时间】:2021-12-28 00:18:29 【问题描述】:

我使用带有高斯核的 Matlab 回归学习器训练了一个 SVM。学习效果非常好,RSE 很小。

现在,我将模型导出回 Matlab 工作区 (trainedModel),我可以使用 predict 函数来估计新值。但是,我想手动实现预测功能,因为我需要将其导出到不同的编程语言,因此我不能依赖 Matlab 的predict 函数。因此,按照MATLAB explanation,我实现了以下等式:

这是我的 [0.5 1 50] 输入代码:

bias  = trainedModel.RegressionSVM.Bias;
alpha = trainedModel.RegressionSVM.Alpha;
SV    = trainedModel.RegressionSVM.SupportVectors;
Mu    = trainedModel.RegressionSVM.Mu;
Sg    = trainedModel.RegressionSVM.Sigma;

input = ([0.5 1 50] - Mu) ./ Sg;
sum = bias;
for n=1:length(alpha)
    G = exp(-norm((SV(n,:)'-input))^2);
    sum = sum + alpha(n) .* G;
end
disp(sum)

(注意alpha根据文档已经是拉格朗日乘数的差)

但是,预测的结果是完全错误的。我认为G 有问题,因为值非常小(大约为 10^(-25)),但我无法找出错误。

【问题讨论】:

【参考方案1】:

错误非常小...原因是SV数组的转置,这是不正确的(由于 - 运算符它创建了一个矩阵,但是它被范数隐藏了)。因此,更改以下行:

G = exp(-norm((SV(n,:)'-input))^2);

G = exp(-norm((SV(n,:)-input))^2);

解决了问题。

【讨论】:

以上是关于Matlab中高斯回归SVM的手动预测的主要内容,如果未能解决你的问题,请参考以下文章

优化预测基于matlab粒子群算法优化SVM回归预测(多输入多输出)含Matlab源码 1421期

SVM预测基于SVM进行股票预测matlab源码

添加多项式特征破坏了 SVM 回归

回归预测基于matlab麻雀搜索算法优化CNN回归预测含Matlab源码 JQ002期

SVM回归预测基于LibSVM实现多特征数据的预测

LSSVM回归预测基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测含Matlab源码 2213期