楼主: iqiukp

[我分享] 相关向量机 (Relevance Vector Machine, RVM) 训练和预测的实现

  [复制链接]

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-12 17:26:27 | 显示全部楼层
hayixiao 发表于 2019-3-8 14:43
请教楼主:
如果用DE来优化楼主的RVM算法,只能优化核参数sigma吗?一般的论文文献中优化的是至少两个参数 ...

不好意思,现在才回复你的问题。
RVM的回归是把权重W的估计转化为α、σ超参数的估计,一般论文里面用的是第二类最大似然估计方法来估计超参数的最优值。程序里面的sigma调整严格来说不算参数优化范畴,只是修改了基函数矩阵的数值。

1. 要是优化核参数sigma的话,适应度函数的输入是sigma,输出是一般是反映预测精度的指标,如RMSE和R2这些,这个是通用的,无论你用哪种优化算法。

2. 要是从RVM自身的超参数优化出发的话,这方面的文献不多,顶多是优化了超参数估计的迭代过程,笔者的研究领域没怎么涉及到这方面的内容,你可以多查阅相关的文献。
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2019-5-15 16:26:49 | 显示全部楼层

楼主,我做的是多输入单输出的相关向量机预测模型,可以加QQ请教程序该怎么改吗,幺幺幺肆零叁柒幺肆贰,谢谢~
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-15 16:43:28 | 显示全部楼层
鱼鱼_jFfBF 发表于 2019-5-15 16:26
楼主,我做的是多输入单输出的相关向量机预测模型,可以加QQ请教程序该怎么改吗,幺幺幺肆零叁柒幺肆贰, ...

把训练数据X(M*N),Y(M*1)设定为:
1. M为样本个数,N为变量个数(即输入个数)。
2. 根据你的数据类型,可能需要归一化处理(mapminamx)或者标准化处理(zscore)。

回复此楼 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


0

主题

8

帖子

0

最佳答案
发表于 2019-5-16 11:05:02 | 显示全部楼层
楼主我想请教一下,关于实际值 ytest 和预测值 y_mu 之间的残差有没有定量描述的指标?也就是评价预测精度的指标?万分感谢
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-16 11:06:06 | 显示全部楼层
如果做多输入多输出,是个否可以呢,请教
回复此楼 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


0

主题

8

帖子

0

最佳答案
发表于 2019-5-16 11:46:50 | 显示全部楼层
iqiukp 发表于 2019-5-15 16:43
把训练数据X(M*N),Y(M*1)设定为:
1. M为样本个数,N为变量个数(即输入个数)。
2. 根据你的数据类型, ...

我按照这个,训练时输入X(44,4),Y(44,1),并归一化,得到model,
在预测时输入Xtest(44,1),Ytest(44,1)
运行时报错:

错误使用  *
用于矩阵乘法的维度不正确。请检查并确保第一个矩阵中的列数与第二个矩阵中的行数匹配。要执行按元素相乘,请使用 '.*'。
出错 computeKM (line 13)
K = exp((bsxfun(@minus,bsxfun(@minus,2*x*y',sx),sy'))/sigma^2);
出错 rvm_test (line 24)
BASIS = computeKM(X,model.X,model.width);
出错 prediction (line 24)
[y_mu,y_var] = rvm_test(model,Xtest);%得到预测值y_mu
回复此楼 已获打赏: 0 积分

举报

新手

10 麦片

财富积分


050


0

主题

8

帖子

0

最佳答案
发表于 2019-5-16 11:59:07 | 显示全部楼层
qsmmmmmm 发表于 2019-5-16 11:46
我按照这个,训练时输入X(44,4),Y(44,1),并归一化,得到model,
在预测时输入Xtest(44,1),Yt ...

初步判断是model参数里面的model.X是用来训练的X,应该是预测时和训练时用的是同一个核函数,造成前后输入维度不同。。
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-16 12:11:18 | 显示全部楼层
本帖最后由 iqiukp 于 2019-5-16 12:30 编辑
龙宝百 发表于 2019-5-16 11:06
如果做多输入多输出,是个否可以呢,请教

如果不考虑多个输出之间的相关性,可以用笔者提供的RVM程序单独预测每个输出;如果考虑多个输出之间的相关性,可以参考这篇多输入多输出的文章:

Ha Y, Zhang H. Fast multi-output relevance vector regression[J]. Economic Modelling, 2019.

Ha_Zhang_2019_Fast multi-output relevance vector regression.pdf (1.35 MB, 下载次数: 61)
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-16 12:13:10 | 显示全部楼层
qsmmmmmm 发表于 2019-5-16 11:46
我按照这个,训练时输入X(44,4),Y(44,1),并归一化,得到model,
在预测时输入Xtest(44,1),Yt ...

Xtest的维度错误。测试样本的个数没有限制,但是特征维度要和Xtrain一致。
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-16 12:14:17 | 显示全部楼层
本帖最后由 iqiukp 于 2019-5-16 16:43 编辑
qsmmmmmm 发表于 2019-5-16 11:59
初步判断是model参数里面的model.X是用来训练的X,应该是预测时和训练时用的是同一个核函数,造成前后输 ...

嗯嗯,是这个问题。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

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