《量化投资:以MATLAB为工具》

MATLAB技术论坛

 找回密码
 注册账号
查看: 182|回复: 0
收起左侧

[提问] 萌新求大神指导,支持向量机预测模型构建后R2为负值

[复制链接]
发表于 2022-8-7 19:31:16 | 显示全部楼层 |阅读模式
新入手svmtrain模型构建,使用SVMcgForRegression函数(最优参数选择时C和g的范围是2的负8次方到2的八次方,每次步长1,cv5折,msestep我设置的是0.06)找到最佳参数C 1,gamma 0.0625。然后使用svmtrain函数选择SVR(-s 3),-p(0.01),-t(2)在训练集建立支持向量机模型。在训练集中计算MAE、RMSE为0,R2为1,正确率100%,然后在试验集中计算R2为-0.2355,正确率77%。不知道该如何解释R2为负值这一问题?是因为过拟合后模型在试验集中预测效能不好吗?还是因为模型为非线性方程的原因呢?求大神指导!
[mse,bestc,bestg]=SVMcgForRegress(train_label,train_features,-8,8,-8,8,5,1,1,0.06)
[mse,bestc,bestg]=SVMcgForRegress(train_label,train_features,-1,1,-6,0,5,0.1,0.1,0.06)
cmd=['-c', num2str(bestc),'-g',num2str(bestg),'-s 3 -p 0.01 -t 2']; %%参数
model=svmtrain(train_label,train_features,cmd)


train=zeros(673,1)
test=zeros(408,1)
[train_predict,~,~]=svmpredict(train,train_features,model)
[test_predict,~,~]=svmpredict(test,test_features,model)


MAE_test=mean(abs(test_label-test_predict));
RMSE_test=sqrt(mean((test_label-test_predict).^2))
R2_test=1-(sum((test_predict-test_label).^2)/sum((test_label-mean(test_label)).^2))




在train和test组中的正确率及test组中的R2

在train和test组中的正确率及test组中的R2

5折交叉验证最佳参数c和g

5折交叉验证最佳参数c和g
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|网站地图|MATLAB技术论坛|Simulink仿真论坛 ( 蜀ICP备19014457号-2 

GMT+8, 2022-12-3 07:38 , Processed in 0.055389 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表