您现在的位置:首页 >> 机器学习 >> 内容

基于LS-SVM的数据分类matlab仿真测试

时间:2023/1/29 18:24:28 点击:

  核心提示:A313,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56ZlJ5u

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览



3.算法概述

        LSSVM(Least Square SVM)是将Kernel应用到ridge regression中的一种方法,它通过将所有样本用最小二乘误差进行拟合(这个拟合是在kernel变换过的高维空间),但是LSSVM的缺陷是计算复杂度大概是样本数的三次方量级,计算量非常大。为了解决这个问题于是提出了SVR(支持向量回归),SVR通过支持向量减小了LSSVM的计算复杂度,并且具备LSSVM的能够利用kernel在高纬度拟合样本。

4.部分源码

.........................................................................

x = model.xtrain; y = model.ytrain;

% train model

if isempty(model.gam) && isempty(model.kernel.pars)

    error('Please tune model first with ''tunelssvm'' to obtain tuning parameters');

end

model = trainlssvm(model);

 

s = smootherlssvm(model);

Yhat = simlssvm(model,x);

 

% bias: double smoothing with fourt order kernel RBF4

modelb = initlssvm(x,y,'f',[],[],'RBF4_kernel','o');

modelb = tunelssvm(modelb,'simplex','crossvalidatelssvm',{10,'mse'});

modelb = trainlssvm(modelb);

 

biascorr = (s-eye(size(x,1)))*simlssvm(modelb,x);

 

% construct approximate 100(1-alpha)% confidence interval

%1) estimate variance nonparametrically

sigma2 = varest(model);

 

%2) calculate var-cov matrix

s = s*diag(sigma2)*s';

 

%2b) find standardized absolute maxbias 

delta = max(abs(biascorr./sqrt(diag(s))));

 

%3) pointwise or simultaneous?

if conftype(1)=='s'

    z = tbform(model,alpha) + delta;

elseif conftype(1)=='p'

    z = norminv(alpha/2);

    Yhat = Yhat - biascorr;

else

    error('Wrong type of confidence interval. Please choose ''pointwise'' or ''simultaneous''');

end

    

ci = [Yhat+z*sqrt(diag(s)) Yhat-z*sqrt(diag(s))];

 

function [var,modele] = varest(model)

 

% if preprocessed data, construct original data

if model.preprocess(1)=='p'

    [x,y] = postlssvm(model,model.xtrain,model.ytrain);

else

    x = model.xtrain; y = model.ytrain;

end

 

model = trainlssvm(model);

 

Yh = simlssvm(model,x);

 

% Squared normalized residuals

e2 = (y-Yh).^2;

 

% Make variance model

if model.nb_data <= 200

    costfun = 'leaveoneoutlssvm'; costargs = {'mae'};

else

    costfun = 'crossvalidatelssvm'; costargs = {10,'mae'};

end

modele = initlssvm(x,e2,'f',[],[],'RBF_kernel');

modele = tunelssvm(modele,'simplex',costfun,costargs);

modele = trainlssvm(modele);

 

% variance model

var = max(simlssvm(modele,x),0);

% make estimate of var unbiased in homoscedastic case if regression

% estimate is unbiased

L = smootherlssvm(model);

S = smootherlssvm(modele);

var = var./(ones(size(x,1),1)+S*diag(L*L'-L-L'));

A313

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168