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期
回归预测基于matlab麻雀搜索算法优化CNN回归预测含Matlab源码 JQ002期
LSSVM回归预测基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测含Matlab源码 2213期