最小二乘支持向量机(LSSVM)学习记录
最小二乘支持向量机
最小二乘支持向量机理论
先埋个坑,先实现再细看理论
最小二乘向量机Matlab实现
工具下载
网上的资源乱七八糟,工欲善其事必先利其器。
我找到的是这个工具箱,有很不错的入门例子
----------------------------------------------------->>>>网址备忘<<<-------------------------------------------------------
LSSVM大体步骤
- 准备好数据 一般是 训练数据X的结构(样本个数X样本属性/特征) 每一行是一个样本,每一列是一个特征。
- 该LSSVM工具箱提供了2种接口 一种就是正常的函数调用 ,一种是面向对象的调用方法(类似python…可以暂时忽略),正常函数调用更简单。
- 对模型参数进行调整 看文档是内置了有 模拟退火算法进行参数寻优(由于自己要用其他优化算法这里对我没啥用) 选取使模型性能最优的参数 一般就是γ\gammaγ 和σ2{\sigma}^2σ2这俩参数。
- 用测试集对模型进行分类和测试 ,对结果作图 (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)学习记录相关推荐
- 【LSSVM回归预测】基于matlab人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...
- 【LSSVM回归预测】人工蜂群算法优化最小二乘支持向量机LSSVM数据回归预测【含Matlab源码 2213期】
⛄一.人工蜂群算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系 ...
- 【回归预测-lssvm分类】基于最小二乘支持向量机lssvm实现数据分类代码
1 内容介绍 在信息爆炸的新时代,由于全球科技与经济迅猛发展,数据充斥在各行各业,数据的结构也变得多样化.其中对于数据的分类最常见,伴随着数据分类的同时出现两大处理难点,一个是非均衡问题,另一个就是高 ...
- 【lssvm预测】基于天鹰算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码
1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...
- 【lssvm预测】基于花朵授粉算法优化最小二乘支持向量机lssvm实现预测附matlab代码
1 简介 短时交通流预测是实现智能交通控制与管理,交通流状态辨识和实时交通流诱导的前提及关键,也是智能化交通管理的客观需要.到目前为止,它的研究结果都不尽如人意.现有的以精确数学模型为基础的传统预测方 ...
- 【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测
1 简介 为了提高短期电力负荷预测结果的准确性,该文提出了蝙蝠算法优化最小二乘支持向量机(BA-LSSVM)的方法.该方法利用蝙蝠算法对最小二乘支持向量机的核函数参数进行优化,并用优化后的参数建立短期 ...
- 【lssvm预测】基于飞蛾扑火算法改进的最小二乘支持向量机lssvm预测
LSSVM的特性 1) 同样是对原始对偶问题进行求解,但是通过求解一个线性方程组(优化目标中的线性约束导致的)来代替SVM中的QP问题(简化求解过程),对于高维输入空间中的分类以及回归任务同样适用 ...
- 最小二乘支持向量机LSSVM多输入多输出预测,最小二乘支持向量机LSSVM回归预测。
%% 清空环境变量 warning off % 关闭报警信息 close all % 关闭开启的图窗 clear % 清空变量 clc % 清空命令行 %% 导入数据 res = xlsread('数 ...
- 【回归预测-lssvm】基于粒子群算法优化最小二乘支持向量机lssvm实现数据回归预测附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 果蝇算法优化极限学习机,支持向量机 最小二乘支持向量机,分类 ,预测。FOA ELM SVM LSSVM。
果蝇算法优化极限学习机,支持向量机 最小二乘支持向量机,分类 ,预测.FOA ELM SVM LSSVM.
最新文章
- 有史以来最会写代码的农民诞生!腾讯元老、上市公司CTO赚够钱后辞职!到安徽农村隐居,亲手建造200亩农场!...
- 动态毛玻璃特效html,js和CSS3炫酷毛玻璃面板特效
- vim中的 recording
- Flask-Login Flask-Security 登录与权限控制
- 【LeetCode】按 tag 分类索引 (900题以下)
- 怎么样才能更高效的学习区块链
- java object转泛型_JAVA快速入门——基本结构、基本数据类型
- Undedared identifier问题解决
- 7-158 验证“哥德巴赫猜想” (20 分)
- linux php ldap_linux php ldap安装配置的方法
- VS 2019 for Mac 8.1 正式版和 8.2 预览版发布
- C语言中简单的题目,C语言的一些简单题目,没有答案,哪位大神帮忙做一下!!!...
- Mac下ssh连接远程服务器时自动断开问题
- 推荐一些经典网络小说及对网络文学和网络市场的一些个人看法
- 艳照门事件发酵 谷歌称已删除数万张照片
- 信息学奥赛一本通 1183:病人排队 | OpenJudge NOI 1.10 08:病人排队
- OpenCV开发笔记(六十四):红胖子8分钟带你深入了解SURF特征点(图文并茂+浅显易懂+程序源码)
- Python 绘制游戏窗口
- Noise2Noise的一些学习总结
- RN cannot add a child that doesnot have a YogoNode to a parent without a measure function!
热门文章
- Cesium 获取经纬度的几种方法
- 【PowerBI】钉钉邮箱已经不能注册 Power BI 账号
- 《物联网IoT解决方案》(Unity+SteamVR+云技术+5G+AI+物联网+IoT+人机交互+万物互联+物物互联+射频识别+全球定位系统+实时采集+智能化感知+识别+管理+立钻哥哥+==)
- 封装0805跟0603有什么区别,只存在大小的区别么???
- 【工控老马】S7-200通过自由口控制Modbus变频器正反转实例详解
- 游戏引擎架构 (Jason Gregory 著)
- RANSAC介绍(Matlab版直线拟合+平面拟合)
- H5 canvas游戏开发教程集合
- ECharts数据可视化(入门)
- ABBYY15版无水印免费Pdf编辑器