图片缩略图

相关向量机(RVM)

2.1.2版(178 KB) 磕碰邱
MATLAB代码使用SB2_Release_200相关向量机。

949下载

更新2022年2月21日

从GitHub

查看许可GitHub

相关向量机(RVM)

相关向量机的MATLAB代码

2.1版本,31日- 8月- 2021

电子邮件:iqiukp@outlook.com

视图相关向量机(RVM)在文件交换


主要特点

  • RVM模型二元分类(RVC)或回归(RVR)
  • 多个类型的内核函数(线性、高斯、多项式、乙状结肠、拉普拉斯算子)
  • 混合核函数(K = w1×K1 + w2×K2 +…+ wn×Kn)
  • 使用贝叶斯优化参数优化、遗传算法和粒子群优化

通知

  • 这个版本的代码不兼容的版本低于R2016b。
  • 详细的应用程序请参见示威。
  • 这段代码仅供参考。

引用

@article {tipping2001sparse标题={稀疏贝叶斯学习和相关向量机},作者={引爆,Michael E},杂志={《机器学习研究},体积={1}={6},页面={211 - 244}年= {2001}}
@article {qiu2021soft标题={软传感器开发基于内核的动态时间扭曲和相关向量机unequal-length间歇过程},作者={王健林和艘邱,磕碰,Wang Wang乳通和郭,Yongqi和赵Liqiang},杂志={专家系统与应用程序},体积={182},页面={115223}={2021},出版商={爱思唯尔}}

如何使用

01。分类使用数位视讯(RVC)

一个演示使用区进行分类

clc清晰的所有关闭所有目录(genpath(松材线虫病))%使用fisheriris数据集负载fisheriris第1=~比较字符串(物种,setosa);data_=(第1,3:4);label_=物种(第1);cvIndices=crossvalind(坚持,长度(data_),0.3);trainData=data_(cvIndices,:);trainLabel=label_(cvIndices,:);testData=data_(~cvIndices,:);testLabel=label_(~cvIndices,:);%核函数内核=内核(类型,高斯,γ,0.2);%参数参数=结构体(显示,,……类型,RVC,……kernelFunc,内核);数位视讯=BaseRVM(参数);%RVM模型训练、测试和可视化数位视讯火车(trainData,trainLabel);结果=数位视讯测试(testData,testLabel);数位视讯(结果)

结果:

* * *数位视讯模型(分类)火车完成了* * *运行时间= 0.1604秒迭代=20.数量样本= 70数量的旅游房车= 2的旅游房车= 2.8571%精度=94.2857%* * *数位视讯模型(分类)测试完成了* * *运行时间= 0.0197秒数量样本= 30精度=96.6667%

02。回归使用数位视讯(RVR)

回归利用RVM的演示

clc清晰的所有关闭所有目录(genpath(松材线虫病))%sinc函数负载sinc_datatrainData=x;trainLabel=y;testData=xt;testLabel=欧美;%核函数内核=内核(类型,高斯,γ,0.1);%参数参数=结构体(显示,,……类型,视程,……kernelFunc,内核);数位视讯=BaseRVM(参数);%RVM模型训练、测试和可视化数位视讯火车(trainData,trainLabel);结果=数位视讯测试(testData,testLabel);数位视讯(结果)

结果:

* * *数位视讯模型(回归)火车完成了* * *运行时间= 0.1757秒迭代=76年数量样本= 100数量的旅游房车= 6的旅游房车= 6.0000%RMSE=0.1260R2=0.8821=0.0999* * *数位视讯模型(回归)测试完成了* * *运行时间= 0.0026秒数量样本= 50RMSE=0.1424R2=0.8553=0.1106

03。内核函数

一个类命名内核定义计算核函数矩阵。

% {类型,线性:k (x, y) y = x”*多项式:k (x, y) =(γ* x ' * y + c) ^ d高斯:k (x, y) = exp(-γ* | | x - y | | ^ 2)乙状结肠:k (x, y) =双曲正切(γ* x ' * y + c)拉普拉斯算子:k (x, y) = exp(-γ* | | x - y | |)度- d抵消- cγ-γ%}内核=内核(类型,高斯,γ,价值);内核=内核(类型,多项式,学位,价值);内核=内核(类型,线性);内核=内核(类型,乙状结肠,γ,价值);内核=内核(类型,拉普拉斯算子,γ,价值);

例如,计算内核之间的矩阵XY

X=兰德(5,2);Y=兰德(3,2);内核=内核(类型,高斯,γ,2);kernelMatrix=内核computeMatrix(X,Y);> >kernelMatrixkernelMatrix=0.56840.56070.40070.46510.83830.50910.83920.71160.98340.47310.88160.80520.50340.98070.7274

04。混合的内核

回归用RVM hybrid_kernel演示(K = w1×K1 + w2×K2 +…+ wn×Kn)

clc清晰的所有关闭所有目录(genpath(松材线虫病))%sinc函数负载sinc_datatrainData=x;trainLabel=y;testData=xt;testLabel=欧美;%核函数kernel_1=内核(类型,高斯,γ,0.3);kernel_2=内核(类型,多项式,学位,2);kernelWeight=(0.5,0.5];%参数参数=结构体(显示,,……类型,视程,……kernelFunc,(kernel_1,kernel_2),…kernelWeight,kernelWeight);数位视讯=BaseRVM(参数);%RVM模型训练、测试和可视化数位视讯火车(trainData,trainLabel);结果=数位视讯测试(testData,testLabel);数位视讯(结果)

05。参数优化single-kernel-RVM

一个演示RVM模型与参数优化

clc清晰的所有关闭所有目录(genpath(松材线虫病))%使用fisheriris数据集负载fisheriris第1=~比较字符串(物种,setosa);data_=(第1,3:4);label_=物种(第1);cvIndices=crossvalind(坚持,长度(data_),0.3);trainData=data_(cvIndices,:);trainLabel=label_(cvIndices,:);testData=data_(~cvIndices,:);testLabel=label_(~cvIndices,:);%核函数内核=内核(类型,高斯,γ,5);%参数优化opt.method=贝叶斯;%贝叶斯、ga算法opt.display=;opt.iteration=20.;%参数参数=结构体(显示,,……类型,RVC,……kernelFunc,内核,……优化,选择);数位视讯=BaseRVM(参数);%RVM模型训练、测试和可视化数位视讯火车(trainData,trainLabel);结果=数位视讯测试(trainData,trainLabel);数位视讯(结果)

结果:

* * *数位视讯模型(分类)火车完成了* * *运行时间= 13.3356秒迭代=88年数量样本= 70数量的旅游房车= 4的旅游房车= 5.7143%精度=97.1429%优化参数表gaussian_gamma是_____________7.8261* * *数位视讯模型(分类)测试完成了* * *运行时间= 0.0195秒数量样本= 70精度=97.1429%

06。参数优化hybrid-kernel-RVM

一个演示RVM模型与参数优化

% {的演示hybrid-kernel RVM模型与参数优化%}clc清晰的所有关闭所有目录(genpath(松材线虫病))%数据负载UCI_datatrainData=x;trainLabel=y;testData=xt;testLabel=欧美;%核函数kernel_1=内核(类型,高斯,γ,0.5);kernel_2=内核(类型,多项式,学位,2);%参数优化opt.method=贝叶斯;%贝叶斯、ga算法opt.display=;opt.iteration=30.;%参数参数=结构体(显示,,……类型,视程,……kernelFunc,(kernel_1,kernel_2),…优化,选择);数位视讯=BaseRVM(参数);%RVM模型训练、测试和可视化数位视讯火车(trainData,trainLabel);结果=数位视讯测试(testData,testLabel);数位视讯(结果)

结果:

* * *数位视讯模型(回归)火车完成了* * *运行时间= 24.4042秒迭代=377年数量样本= 264数量旅游房车= 22的旅游房车= 8.3333%RMSE=0.4864R2=0.7719=0.3736优化参数表1×6gaussian_gammapolynomial_gamma polynomial_offset polynomial_degree gaussian_weight polynomial_weight是________________________ _________________ _________________售予_________________22.31513.59544.8360.0420580.95794* * *数位视讯模型(回归)测试完成了* * *运行时间= 0.0008秒数量样本= 112RMSE=0.7400R2=0.6668=0.4867

07年。交叉验证

在这段代码中,支持两种交叉验证方法:“K-Folds”和“抵抗”。万博1manbetx例如,5倍交叉验证的

参数=结构体(显示,,……类型,RVC,……kernelFunc,内核,……KFold,5);

例如,抵抗的交叉验证方法比率为0.3

参数=结构体(显示,,……类型,RVC,……kernelFunc,内核,……坚持,0.3);

08年。其他选择

% %自定义优化选项% {opt.method = '贝叶斯;%贝叶斯、ga算法opt.display = '在';opt.iteration = 20;opt.point = 10;%高斯核函数opt.gaussian。参数Name = {'gamma'};opt.gaussian。参数Type = {'real'};opt.gaussian。下界= 2 ^ 6;opt.gaussian。upperBound = 2 ^ 6;%拉普拉斯算子的核函数opt.laplacian。参数Name = {'gamma'};opt.laplacian。参数Type = {'real'};opt.laplacian。下界= 2 ^ 6;opt.laplacian。upperBound = 2 ^ 6;%多项式核函数opt.polynomial。参数Name = {'gamma'; 'offset'; 'degree'};opt.polynomial。参数Type = {'real'; 'real'; 'integer'};opt.polynomial。下界= [2 ^ 6;2 ^ 6;1);opt.polynomial。upperBound = [2 ^ 6;2 ^ 6;7);% s形的核函数opt.sigmoid。参数Name = {'gamma'; 'offset'};opt.sigmoid。参数Type = {'real'; 'real'};opt.sigmoid。下界= [2 ^ 6;2 ^ 6];opt.sigmoid。upperBound = [2 ^ 6;2 ^ 6];%}% %RVM模型参数% {“显示”:“上”、“下”“类型”:“RVR”、“RVC”“kernelFunc”:内核函数“KFolds”:交叉验证,例如,5“坚持”:交叉验证,例如,0.3“freeBasis”:“上”、“下”“麦克斯特”:马克斯迭代,例如,1000%}

引用作为

@article {tipping2001sparse标题={稀疏贝叶斯学习和相关向量机},作者={引爆,Michael E},杂志={《机器学习研究},体积={1}={6},页面={211 - 244}年= {2001}}

@article {qiu2021soft标题={软传感器开发基于内核的动态时间扭曲和相关向量机unequal-length间歇过程},作者={王健林和艘邱,磕碰,Wang Wang乳通和郭,Yongqi和赵Liqiang},杂志={专家系统与应用程序},体积={182},页面={115223}={2021},出版商={爱思唯尔}}

MATLAB版本兼容性
创建R2021a
与R2016b后来版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!
问题在这个视图或报告GitHub插件,参观GitHub库
问题在这个视图或报告GitHub插件,参观GitHub库