基于贝叶斯优化混合核支持向量机的回归方法

目前人工智能和深度学习越趋普及,构建一个回归或者分类模型十分容易,但是想要得到更好的精度却较为困难,其主要原因是模型超参数的选择。那么要想模型效果好,手动调参少不了,机器学习算法如SVM就有gamma、kernel、ceof等超参数要调,而神经网络模型有learning_rate、optimizer、L1/L2 normalization等更多超参数可以调优。目前大多数关于超参数选择的文献主要采用一些自动调参算法进行优化,比如Grid search(网格搜索)、Random search(随机搜索),还有Genetic algorithm(遗传算法)、Paticle Swarm Optimization(粒子群优化)等。

今天,本文基于MATLAB的libsvm库,首先构建基于RBF核函数与多项式核函数的混合核支持向量回归模型;其次,针对RBF的一个核参数g与多项式的两个核参数poly1与poly2,RBF核矩阵的权重w(POLY就是1-w),以及正则化系数共5个超参数,采用贝叶斯框架进行优化。最后与支持向量回归、混合核支持向量回归进行对比,采用贝叶斯优化的混合核支持向量回归具有最高的精度。

如下为poly和rbf的核矩阵。混合核就是用w*kernal_matrix1+(1-w)*kernal_matrix2 作为一个整体的核矩阵。因此w也是超参数之一。

function Kernel=ploy(input_t,input_p,poly)
%% 多项式核函数
a= input_t * input_p';    %求核矩阵
Kernel=(a+poly(1)).^poly(2);

function Kernel=rbf(input_t,input_p,g)
%% rbf核函数
len=size(input_t,1);
lenb=size(input_p,1);
phi=ones(len,lenb);
for jj=1:len
    for ii=1:lenb
        phi(jj,ii)=exp((-norm(input_t(jj,:)-input_p(ii,:)).^2)/(2*g^1));
    end
end
Kernel= phi;

2.结果

2.1 单核的支持向量机回归

基于贝叶斯优化混合核支持向量机的回归方法_第1张图片

2.2混合核支持向量机回归

基于贝叶斯优化混合核支持向量机的回归方法_第2张图片

2.3 贝叶斯优化混合核支持向量机

%% 选择要使用贝叶斯优化对哪些变量进行优化,并指定搜索范围。此外,指定变量是否为整数以及是否搜索对数空间中的区间。优化以下变量:
% rbf核的核参数rbf 范围是1e-3 1e3
% poly核的第一个核参数poly1 范围是1e-3 1e3
% rbf核的第二个核参数poly2 范围是1 10 ,幂是整数
% 正则化系数lambda 1e-3 1e3
% 组合核中rbf的权重w 0-1 ,poly是1-w
optimVars = [
    optimizableVariable('rbf',[1e-3 1e3])
    optimizableVariable('poly1',[1e-3 1e3])
    optimizableVariable('poly2',[1 10],'Type','integer')
    optimizableVariable('lambda',[1e-3 1e3])
    optimizableVariable('w',[0 1])];
% 使用训练数据和验证数据作为输入,为贝叶斯优化器创建目标函数。目标函数训练一个HKELM并返回对验证集的均方误差
ObjFcn = makeObjFcn(P_train,T_train,P_test,T_test);
BayesObject = bayesopt(ObjFcn,optimVars,...
    'MaxObj',10,...
    'MaxTime',0.5*60*60,...
    'IsObjectiveDeterministic',false,...
    'UseParallel',false);
% 加载在优化中找到的最佳网络及其验证准确度。
bestIdx = BayesObject.IndexOfMinimumTrace(end);
fileName = BayesObject.UserDataTrace{bestIdx};

基于贝叶斯优化混合核支持向量机的回归方法_第3张图片

基于贝叶斯优化混合核支持向量机的回归方法_第4张图片

你可能感兴趣的:(机器学习,人工智能,机器学习,算法)