本文主要针对支持向量机回归预测在MATLAB中的实现过程进行陈述,方便读者可以快速上手实现SVR回归预测,对支持向量机的原理将不再进行陈述。在MATLAB中实现相关向量机回归预测主要是调用MATLAB自带的SVR工具箱,所以了解工具箱的相关参数的基本设置是很有必要的。接下来让我们一起来学习MATLAB实现SVR的具体流程吧。
第一步:清空变量,导入数据,数据一般都是多输入单输出,假设数据有13列,那么前12列为输入值,最后一列为输出值,具体实现代码如下:
第二步:数据归一化,将数据进行简单归一化处理,将数据归一到同一量纲上,有利于提高精度。主要用到MATLAB中mapminmax函数,实现函数如下:
第三步:经过归一化之后,就可以设置SVR的基本参数了,主要有两个参数需要设置,分别是惩罚系数c和核函数宽度g。其他基本参数如下:
options:可用的选项即表示的涵义如下
-s svm类型: SVM设置类型(默认0)
0 -- c-svc
1 --v-svc
2 -一类SVM
3 -- e -svR
4 -- v-sVR
-t 核函数类型:核函数设置类型(默认2)
0-线性: u'v
1 -多项式:(r*u 'v + coef0)^degree
2- RBF函数: exp(-r|u-v|^2)
3 -sigmoid: tanh(r*u'v + coef0)
-d degree:核函数中的degree设置(针对多项式核函数)(默认3)
-g r(gama):核函数中的gamma函数设置(针对多项式/rbf/sigmoid核函数)(默认1/ k)-r coefe:核函数中的coef0设置(针对多项式/sigmoid核函数)((默认e)
-c cost:设置c-svc. e -SVR和v-SVR的参数(损失函数)(默认1)
-n nu:设置v-Svc,一类SVM和v- SVR的参数(默认0.5)
-p p:设置e -sVR中损失函数p的值(默认0.1)
-m cachesize:设置cache内存大小,以MB为单位(默认4日)-e eps:设置允许的终止判据(默认e.ee1)
-h shrinking:是否使用启发式,0或1(默认1)
-wi weight:设置第几类的参数c为weight*c(c-svc中的C)(默认1)-v n: n-fold交互检验模式,n为fold的个数,必须大于等于2
其中-g选项中的k是指输入数据中的属性数。option -v随机地将数据剖分为n部分并计算交互检验准确度和均方根误差。
在设置所有的参数之后,开始对SVR进行训练,训练函数为svmtrain(),使用格式如下图:
第四步:模型建立好了之后就可以对我们的测试集进行预测。主要通过函数svmpredict()进行预测,使用格式如下:(在这里很多人就会一个疑问,为什么预测的时候要把测试集的输出值也带进去预测呢?其实带测试集的输出值进入主要是为了计算误差error,在预测的时候没有用到测试集的输出值)最后对我们预测出来的值进行一次反归一化就得到我们预测出来的真实值了
第五步:计算相关的误差,如RMSE、MSE、R^2等
最后代码的运行结果如下:
需要代码的同学,可以私聊我拿代码!免费