支持向量机非线性回归通用MATLAB源码文档格式.docx
- 文档编号:16186943
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:10
- 大小:16.55KB
支持向量机非线性回归通用MATLAB源码文档格式.docx
《支持向量机非线性回归通用MATLAB源码文档格式.docx》由会员分享,可在线阅读,更多相关《支持向量机非线性回归通用MATLAB源码文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
%主要参考文献:
%朱国强,刘士荣等.支持向量机及其在函数逼近中应用.华东理工大学学报
%输入参数列表
%X输入样本原始数据,n×
l矩阵,n为变量个数,l为样本个数
%Y输出样本原始数据,1×
l矩阵,l为样本个数
%Epsilonε不敏感损失函数参数,Epsilon越大,支持向量越少
%C惩罚系数,C过大或过小,泛化能力变差
%TKFTypeofKernelFunction核函数类型
%TKF=1线性核函数,注意:
使用线性核函数,将进行支持向量机线性回归
%TKF=2多项式核函数
%TKF=3径向基核函数
%TKF=4指数核函数
%TKF=5Sigmoid核函数
%TKF=任意其它值,自定义核函数
%Para1核函数中第一个参数
%Para2核函数中第二个参数
%注:
关于核函数参数定义请见Regression.m和SVMNR.m内部定义
%输出参数列表
%Alpha1α系数
%Alpha2α*系数
%Alpha支持向量加权系数(α-α*)向量
%Flag1×
l标记,0对应非支持向量,1对应边界支持向量,2对应标准支持向量
%B回归方程中常数项
%--------------------------------------------------------------------------
%-----------------------数据归一化处理--------------------------------------
nntwarnoff
X=premnmx(X);
Y=premnmx(Y);
%-----------------------核函数参数初始化------------------------------------
switchTKF
case1
%线性核函数K=sum(x.*y)
%没有需要定义参数
case2
%多项式核函数K=(sum(x.*y)+c)^p
c=Para1;
%c=0.1;
p=Para2;
%p=2;
case3
%径向基核函数K=exp(-(norm(x-y))^2/(2*sigma^2))
sigma=Para1;
%sigma=6;
case4
%指数核函数K=exp(-norm(x-y)/(2*sigma^2))
%sigma=3;
case5
%Sigmoid核函数K=1/(1+exp(-v*sum(x.*y)+c))
v=Para1;
%v=0.5;
c=Para2;
%c=0;
otherwise
%自定义核函数,需由用户自行在函数内部修改,注意要同时修改好几处!
%暂时定义为K=exp(-(sum((x-y).^2)/(2*sigma^2)))
%sigma=8;
end
%-----------------------构造K矩阵-------------------------------------------
l=size(X,2);
K=zeros(l,l);
%K矩阵初始化
fori=1:
l
forj=1:
x=X(:
i);
y=X(:
j);
switchTKF%根据核函数类型,使用相应核函数构造K矩阵
K(i,j)=sum(x.*y);
K(i,j)=(sum(x.*y)+c)^p;
K(i,j)=exp(-(norm(x-y))^2/(2*sigma^2));
K(i,j)=exp(-norm(x-y)/(2*sigma^2));
K(i,j)=1/(1+exp(-v*sum(x.*y)+c));
K(i,j)=exp(-(sum((x-y).^2)/(2*sigma^2)));
%------------构造二次规划模型参数H,Ft,Aeq,Beq,lb,ub------------------------
%支持向量机非线性回归,回归函数系数,要通过求解一个二次规划模型得以确定
Ft=[Epsilon*ones(1,l)-Y,Epsilon*ones(1,l)+Y];
Aeq=[ones(1,l),-ones(1,l)];
Beq=0;
ub=C*ones(2*l,1);
%--------------调用优化工具箱quadprog函数求解二次规划------------------------
OPT=optimset;
OPT.LargeScale='
off'
;
OPT.Display='
%------------------------整理输出回归方程系数------------------------------
Alpha1=(Gamma(1:
l,1))'
Alpha2=(Gamma((l+1):
end,1))'
Alpha=Alpha1-Alpha2;
Flag=2*ones(1,l);
%---------------------------支持向量分类----------------------------------
Err=0.1;
AA=Alpha1(i);
BB=Alpha2(i);
if(abs(AA-0)<
=Err)&
&
(abs(BB-0)<
=Err)
Flag(i)=0;
%非支持向量
if(AA>
Err)&
(AAFlag(i)=2;
%标准支持向量
(BB>
(BBFlag(i)=2;
if(abs(AA-C)<
Flag(i)=1;
%边界支持向量
(abs(BB-C)<
%--------------------计算回归方程中常数项B---------------------------------
B=0;
counter=0;
(AA%计算支持向量加权值
SUM=0;
ifFlag(j)>
SUM=SUM+Alpha(j)*sum(X(:
j).*X(:
i));
SUM=SUM+Alpha(j)*(sum(X(:
i))+c)^p;
SUM=SUM+Alpha(j)*exp(-(norm(X(:
j)-X(:
i)))^2/(2*sigma^2));
SUM=SUM+Alpha(j)*exp(-norm(X(:
i))/(2*sigma^2));
SUM=SUM+Alpha(j)*1/(1+exp(-v*sum(X(:
i))+c));
SUM=SUM+Alpha(j)*exp(-(sum((X(:
i)).^2)/(2*sigma^2)));
b=Y(i)-SUM-Epsilon;
B=B+b;
counter=counter+1;
(BBSUM=0;
b=Y(i)-SUM+Epsilon;
ifcounter==0
else
B=B/counter;
欢迎访问GreenSim团队主页:
欢迎访问GreenSim——算法仿真团队→
functiony=Regression(Alpha,Flag,B,X,Y,TKF,Para1,Para2,x)
%Regression.m
%及SVMNR.m函数配套使用仿真测试函数
%函数功能:
%本函数相当于支持向量得到回归方程解析方程,输入一个待测试列向量x,得到一
%个对应输出值y
%x待测试原始数据,n×
1列向量
%y仿真测试输出值
%----------------------数据归一化处理---------------------------------------
[X,minX,maxX]=premnmx(X);
x=2*((x-minX)./(maxX-minX))-1;
[Y,minY,maxY]=premnmx(Y);
%---------------------计算仿真测试输出值----------------------------------
l=length(Alpha);
ifFlag(i)>
SUM=SUM+Alpha(i)*sum(x.*X(:
SUM=SUM+Alpha(i)*(sum(x.*X(:
SUM=SUM+Alpha(i)*exp(-(norm(x-X(:
SUM=SUM+Alpha(i)*exp(-norm(x-X(:
SUM=SUM+Alpha(i)*1/(1+exp(-v*sum(x.*X(:
SUM=SUM+Alpha(i)*exp(-(sum((x-X(:
y=SUM+B;
%--------------------反归一化处理-------------------------------------------
y=postmnmx(y,minY,maxY);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 支持 向量 非线性 回归 通用 MATLAB 源码