最小二乘支持向量机

最小二乘支持向量机理论

先埋个坑,先实现再细看理论

最小二乘向量机Matlab实现

工具下载

网上的资源乱七八糟,工欲善其事必先利其器。
我找到的是这个工具箱,有很不错的入门例子
----------------------------------------------------->>>>网址备忘<<<-------------------------------------------------------

LSSVM大体步骤

  1. 准备好数据 一般是 训练数据X的结构(样本个数X样本属性/特征) 每一行是一个样本,每一列是一个特征。
  2. 该LSSVM工具箱提供了2种接口 一种就是正常的函数调用 ,一种是面向对象的调用方法(类似python…可以暂时忽略),正常函数调用更简单。
  3. 对模型参数进行调整 看文档是内置了有 模拟退火算法进行参数寻优(由于自己要用其他优化算法这里对我没啥用) 选取使模型性能最优的参数 一般就是γ\gammaγ 和σ2{\sigma}^2σ2这俩参数。
  4. 用测试集对模型进行分类和测试 ,对结果作图 (plotlssvm好像可以画出2维的分类图)

主要函数

函数 code

作用: 对输入标签进行编码 (独热编码 ?并不是 )
举个例子 如果是个三分类问题 原始label是[1,2,3] 可以被 codebook(依据Minimum Output Coding最小输出编码)编码成

>>codebook
=[-1  1  1;1 -1  1]

语法:
Yc = code(Y,codefct,codefct_args)
Yc = code(Y,codefct,codefct_args, old_codebook)
[Yc, codebook, oldcodebook] = code(Y,codefct,codefct_args)

函数 trainlssvm

作用:训练LS-SVM的支持值和偏倚项,用于分类或函数逼近

调用范式:

  • [alpha, b] = trainlssvm({X,Y,type,gam,kernel_par,kernel,preprocess}) (函数风格调用)
  • model = trainlssvm(model) (面向对象的调用) 这里不深入研究

INPUT:

  • X:输入的训练数据矩阵 N*d N:样本输入 d:特征维度
  • Y: 对应的训练集标签 N*m N:样本个数 m:m这里我还没弄清标签需不需要one-hot???文档说 X(i,:)对应的标签是Y(i,:) 也就是每一行训练样本对应的标签也是一行
  • type:如果是回归问题就是'function estimation'('f') 如果是分类就'classifier'('c')
  • gam: 正则化参数 比如 gama=10
  • sig2: 高斯核带宽 如果是线性kernel 要设置为[]
  • kernel: 可选 核函数类型默认是 RBF_kernel
  • preprocess: 预处理,可选preprocess或者original

OUTPUT:

  • alpha:N×m LS-SVM的支持值矩阵
  • b:1×m LS-SVM中带有偏置项的向量

函数 tunelssvm

作用: 对LSSVM的 γ\gammaγ和 σ2{\sigma}^2σ2 参数进行寻优

基础语法:

  • 函数调用
  • [gam, sig2, cost] = tunelssvm({X,Y,type,[],[]}, optfun, costfun, costargs)
    其中调优参数(第四个和第五个参数)的值被设置为空状态。
  • 使用面向对象的接口就变成了:
    model = tunelssvm(model, optfun, costfun, costargs)
    如果采用面向对象的接口,要先对model利用initlssvm函数进行创建
    model = initlssvm(X,Y,type,[],[]);
    具体调用参见说明书,这里由于采用其他优化算法 不多研究。

函数simlssvm

作用:用LSSVM评估给定的数据点
基础语法:
函数接口:
[Yt, Zt] = simlssvm({X,Y,type,gam,sig2}, Xt)
[Yt, Zt] = simlssvm({X,Y,type,gam,sig2,kernel}, Xt)
[Yt, Zt] = simlssvm({X,Y,type,gam,sig2,kernel,preprocess}, Xt)
[Yt, Zt] = simlssvm({X,Y,type,gam,sig2,kernel}, {alpha,b}, Xt)
一般跟在trainlssvm后面,将训练完得到的的{alpha,b},和sig2和gamma传入进去,对测试集进行评估。

INPUT:
参见trainlssvm基本一样

OUTPUT:
Xt: 测试数据的输入 Xt的维度是Nt X d
Yt: 测试得到的 测试集输出 Nt X m
Zt:分类器的潜在变量预测矩阵 Nt X m 这个现在没搞太清是啥

函数prelssvm

预处理
这些函数只能由trainlssvm或simlssvm调用。首先,预处理为每个输入和输出组件分配一个标签(a代表分类变量,b代表二进制变量,c代表连续变量)。根据这个标签,每个尺寸都重新缩放:

  • 二分类标签是1和-1
  • 连续型是均值和单位方差为0(目测是回归问题标签?)
  • 多分类 不进行预处理

函数 plotlassvm

作用:在训练数据的环境中绘制LS-SVM结果
函数接口语法:
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess}, {alpha,b})
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess}, {alpha,b}, grain)
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess}, {alpha,b}, grain, seldims)
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess})
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess}, [], grain)
plotlssvm({X,Y,type,gam,sig2,kernel,preprocess}, [], grain, seldims)

INPUT:
基本参数参照trainlssvm
grain:计算网格的纹理以组成表面(默认值为50),网格数目纹理精度
seldims(*) :要显示的输入数据的维数,默认是2维

函数 crossvalidate

作用: 用l-fold交叉验证来评估模型的性能。不要和tunelssvm一起使用这个函数
函数接口:
[cost, costs] = crossvalidate({X,Y,type,gam,sig2,kernel,preprocess})
[cost, costs] = crossvalidate({X,Y,type,gam,sig2,kernel,preprocess}, L)
[cost, costs] = crossvalidate({X,Y,type,gam,sig2,kernel,preprocess},L, estfct, combinefct)

INPUT:

L:几折交叉验证 交叉验证折数 默认是10折交叉验证
estfct: 基于残差估计代价 还没搞懂 默认值是 mse 感觉是回归用的吧
combinefct: 不同折上的代价值衡量方式?? 默认是 mean

OUTPUT:
cost:L-fold交叉验证的代价值估计
costs:L×1在L不同的折线上估算成本的向量 向量 应该是每一个折上的代价

demo1 helloword

简单介绍了lssvm在分类问题的基本使用方法。

%% HELLO WORD\
clear all; clc;close all;
%% 产生训练数据
X = 2.*rand(100,2)-1;
%% 产生标签
Y = sign(sin(X(:,1))+X(:,2))%% 建立一个 RBF核的 LS-SVM
% gam 正则化参数用于确定训练误差核最小化和平滑度之间的权衡
% sig2  是高斯核带宽的平方
gam =10;
sig2=0.4
type ='classification';%% 调用训练函数% 默认情况下,对原始数据使用prelssvm函数
% 默认自动预处理(归一化?)
[alpha,b]=trainlssvm({X,Y,type,gam,sig2,'RBF_kernel'});
% [alpha,b]=trainlssvm({X,Y,type,gam,sig2,'RBF_kernel','original'});
% 这种是关闭预处理%%
% 产生测试点------理解为测试集
Xt = 2.*rand(10,2)-1;
% 要进行测试使用simlssvm函数 传入的参数要跟上面一样
Ytest=simlssvm({X,Y,type,gam,sig2,'RBF_kernel'},{alpha,b},Xt);%% 可视化
% 当输入数据的维数为2时,可以显示LS-SVM结果
plotlssvm({X,Y,type,gam,sig2,'RBF_kernel'},{alpha,b});

example1

最小二乘支持向量机(LSSVM)学习记录相关推荐

  1. 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】

    ⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...

  2. 【LSSVM回归预测】人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】

    ⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...

  3. 【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码

    1 内容介绍 在信息爆炸的新时代,由于全球科技与经济迅猛发展,数据充斥在各行各业,数据的结构也变得多样化.其中对于数据的分类最常见,伴随着数据分类的同时出现两大处理难点,一个是非均衡问题,另一个就是高 ...

  4. 【lssvm预测】基于天鹰算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

    1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...

  5. 【lssvm预测】基于花朵授粉算法优化最小二乘支持向量机lssvm实现预测附matlab代码

    1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...

  6. 【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测

    1 简介 为了提高短期电力负荷预测结果的准确性,该文提出了蝙蝠算法优化最小二乘支持向量机(BA-LSSVM)的方法.该方法利用蝙蝠算法对最小二乘支持向量机的核函数参数进行优化,并用优化后的参数建立短期 ...

  7. 【lssvm预测】基于飞蛾扑火算法改进的最小二乘支持向量机lssvm预测

    LSSVM的特性   1) 同样是对原始对偶问题进行求解,但是通过求解一个线性方程组(优化目标中的线性约束导致的)来代替SVM中的QP问题(简化求解过程),对于高维输入空间中的分类以及回归任务同样适用 ...

  8. 最小二乘支持向量机LSSVM多输入多输出预测,最小二乘支持向量机LSSVM回归预测。

    %% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 %% 导入数据 res = xlsread('数 ...

  9. 【回归预测-lssvm】基于粒子群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码

    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.

  10. 果蝇算法优化极限学习机,支持向量机 最小二乘支持向量机,分类 ,预测。FOA ELM SVM LSSVM。

    果蝇算法优化极限学习机,支持向量机 最小二乘支持向量机,分类 ,预测.FOA ELM SVM LSSVM.

最新文章

  1. 有史以来最会写代码的农民诞生!腾讯元老、上市公司CTO赚够钱后辞职!到安徽农村隐居,亲手建造200亩农场!...
  2. 动态毛玻璃特效html,js和CSS3炫酷毛玻璃面板特效
  3. vim中的 recording
  4. Flask-Login Flask-Security 登录与权限控制
  5. 【LeetCode】按 tag 分类索引 (900题以下)
  6. 怎么样才能更高效的学习区块链
  7. java object转泛型_JAVA快速入门——基本结构、基本数据类型
  8. Undedared identifier问题解决
  9. 7-158 验证“哥德巴赫猜想” (20 分)
  10. linux php ldap_linux php ldap安装配置的方法
  11. VS 2019 for Mac 8.1 正式版和 8.2 预览版发布
  12. C语言中简单的题目,C语言的一些简单题目,没有答案,哪位大神帮忙做一下!!!...
  13. Mac下ssh连接远程服务器时自动断开问题
  14. 推荐一些经典网络小说及对网络文学和网络市场的一些个人看法
  15. 艳照门事件发酵 谷歌称已删除数万张照片
  16. 信息学奥赛一本通 1183:病人排队 | OpenJudge NOI 1.10 08:病人排队
  17. OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
  18. Python 绘制游戏窗口
  19. Noise2Noise的一些学习总结
  20. RN cannot add a child that doesnot have a YogoNode to a parent without a measure function!

热门文章

  1. Cesium 获取经纬度的几种方法
  2. 【PowerBI】钉钉邮箱已经不能注册 Power BI 账号
  3. 《物联网IoT解决方案》(Unity+SteamVR+云技术+5G+AI+物联网+IoT+人机交互+万物互联+物物互联+射频识别+全球定位系统+实时采集+智能化感知+识别+管理+立钻哥哥+==)
  4. 封装0805跟0603有什么区别,只存在大小的区别么???
  5. 【工控老马】S7-200通过自由口控制Modbus变频器正反转实例详解
  6. 游戏引擎架构 (Jason Gregory 著)
  7. RANSAC介绍(Matlab版直线拟合+平面拟合)
  8. H5 canvas游戏开发教程集合
  9. ECharts数据可视化(入门)
  10. ABBYY15版无水印免费Pdf编辑器