楼主: iqiukp

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

  [复制链接]

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-24 13:03:36 | 显示全部楼层
本帖最后由 iqiukp 于 2019-5-24 13:06 编辑
Jacksonic 发表于 2019-5-24 01:09
请教下楼主有没有较好的优化核宽度的方法,我看SVM有用交叉验证进行确定核宽度,RVM有没有类似的方法?十分 ...

优化方法都大同小异,有类似于交叉验证这种传统的优化算法,有类似于PSO这种群智能优化算法,但都很难保证找到全局最优。
可以多关注关注近几年的优化算法,比如

布谷鸟搜索算法(2009)
烟花优化算法(2010)
蝙蝠算法(2010)
果蝇优化算法(2012)
灰狼优化算法(2014)
鲸鱼优化算法(2016)
天牛须搜索算法(2017)


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

举报

新手

11 麦片

财富积分


050


4

主题

14

帖子

0

最佳答案
发表于 2019-5-24 15:50:20 | 显示全部楼层
iqiukp 发表于 2019-5-24 13:03
优化方法都大同小异,有类似于交叉验证这种传统的优化算法,有类似于PSO这种群智能优化算法,但都很难保证 ...

非常感谢!!!
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-31 11:43:03 | 显示全部楼层
iqiukp 发表于 2019-5-16 12:11
如果不考虑多个输出之间的相关性,可以用笔者提供的RVM程序单独预测每个输出;如果考虑多个输出之间的相关 ...

您好,谢谢您的解答,但是我仍有疑问,论文里面是单个输入对应多个输出,但是我需要多个输入对应多个输出,这样可行吗
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-31 12:52:34 | 显示全部楼层
龙宝百 发表于 2019-5-31 11:43
您好,谢谢您的解答,但是我仍有疑问,论文里面是单个输入对应多个输出,但是我需要多个输入对应多个输出 ...

可以的。
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-31 13:10:56 | 显示全部楼层

您好,有些打扰您了,抱歉。我看见代码里面是一个x,对应两个变量y,我自己现在做的是关于输入和输出变量分别是5和9的回归预测,我在想怎么做,如果输入不止一个是不是也不能plot出图呢,因为毕竟坐标轴就两个变量
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-5-31 13:28:31 | 显示全部楼层
本帖最后由 iqiukp 于 2019-5-31 13:30 编辑
龙宝百 发表于 2019-5-31 13:10
您好,有些打扰您了,抱歉。我看见代码里面是一个x,对应两个变量y,我自己现在做的是关于输入和输出变量 ...

plot只是为了方便可视化。MRVM建立的是输入X(N*d1)和输出Y(N*d2)的数学关系,其中d1,d2>=1为变量个数。我没仔细看这篇文献,看了一下作者提供的源代码,
  1. tic
  2. if isFast
  3.     [used, ~, Mu, invSigma, OmegaHat] = fmrvr(Phi,T,maxIts,tolerance);
  4. else
  5.     [used, ~, Mu, invSigma, OmegaHat] = mrvr(Phi,T,maxIts,tolerance);
  6. end
  7. toc
复制代码


其中 fmrvr的函数输入为Phi (添加了常数bias的基函数矩阵(N*(N+1)),T(添加了噪声的多变量输出数据),maxIts(最大的迭代次数)以及tolerance(迭代精度)。其中与输入数据相关的是参数是Phi,由于Phi的矩阵维度大小与输入变量的个数无关,只和输入样本的个数有关。只要获取了[used, ~, Mu, invSigma, OmegaHat]这几个参数的结果,就可以同时预测多变量数据了。
你可以尝试把数据替换为你的多输入多输出数据,把源码中相应的地方改过来,然后要是报错了就根据提示去排除错误吧。原理上应该没问题的。
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


1

主题

6

帖子

0

最佳答案
发表于 2019-5-31 13:35:02 | 显示全部楼层
iqiukp 发表于 2019-5-31 13:28
plot只是为了方便可视化。MRVM建立的是输入X(N*d1)和输出Y(N*d2)的数学关系,其中d1,d2>=1为变量个数。我 ...

好的,我尽量试试,谢谢。
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2019-6-5 11:24:23 | 显示全部楼层
楼主你好,修改后的代码不支持多维输入怎么破?
回复此楼 已获打赏: 0 积分

举报

入门

166 麦片

财富积分


50500


9

主题

187

帖子

0

最佳答案
  • 关注者: 61
 楼主| 发表于 2019-6-5 15:11:35 | 显示全部楼层
Hamlet'ssmile 发表于 2019-6-5 11:24
楼主你好,修改后的代码不支持多维输入怎么破?

你好。更新后的代码已经测试过多输入变量情况下的预测问题。你把报错代码贴上来看看,注意输入数据的格式,行方向是样本个数,列方向是特征维度。
回复此楼 已获打赏: 0 积分

举报

新手

5 麦片

财富积分


050


0

主题

2

帖子

0

最佳答案
发表于 2019-6-5 16:40:39 | 显示全部楼层
iqiukp 发表于 2019-6-5 15:11
你好。更新后的代码已经测试过多输入变量情况下的预测问题。你把报错代码贴上来看看,注意输入数据的格式 ...

1.png

训练输入为18*3,输出为18*1,均未归一化。在rvm_train.m中 ,在[PARAMETER, HYPERPARAMETER, DIAGNOSTIC] = ...
    SparseBayes('Gaussian', BASIS, Y,OPTIONS);后,PARAMTER中的矩阵是空的,所以后面会报错。请问这是什么原因啊?
回复此楼 已获打赏: 0 积分

举报

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

本版积分规则

关闭

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

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