最小二乘支持向量机--LSSVM分类及MATLAB代码实现

最小二乘支持向量机–LSSVM分类及MATLAB代码实现

1. LSSVM算法原理

1.1 支持向量机 (SVM)

目标:支持向量机算法通过在解空间中求解出一个最优超平面,使得解空间的样本能够被此超平面正确分开。最优超平面的几何表示如下图所示,图中实线即为最优的超平面。

在这里插入图片描述
数学模型:

假设存在 m m m n n n维的样本 { x k , y k } , y k ∈ { − 1 , 1 } , x k ∈ R n , k = 1 , 2 , 3 ⋯ m \left\{x_{k}, y_{k}\right\}, y_{k} \in\{-1,1\}, x_{k} \in R^{n},k=1,2,3 \cdots m {xk,yk},yk{1,1},xkRn,k=1,2,3m, 则SVM算法的目标函数和不等式约束如下:

min ⁡ W , b , ζ J P ( W , ζ ) = 1 2 W T W + c ∑ k = 1 m ζ k , ( 1 ) \min _{\boldsymbol{W},b, \zeta} J_{P}(\boldsymbol{W}, \zeta)=\frac{1}{2} \boldsymbol{W}^{\mathrm{T}} \boldsymbol{W}+c \sum_{k=1}^{m} \zeta_{k}, (1) W,b,ζminJP(W,ζ)=21WTW+ck=1mζk,(1)

 s.t.  y k ⩾ W T φ ( x k ) + b + ζ k , ( 2 ) \text { s.t. } y_{k} \geqslant \boldsymbol{W}^{\mathrm{T}} \varphi\left(x_{k}\right)+b+\zeta_{k} , (2)  s.t. ykWTφ(xk)+b+ζk,(2)
式中, W W W为超平面的法向量, ζ \zeta ζ为预测误差值, φ ( x k ) \varphi\left(x_{k}\right) φ(xk)为核函数, c c c为惩罚因子, b b b为常量。

问题:不等式约束的存在,使得SVM算法求解较为困难。

1.2 最小二乘支持向量机 (LSSVM)

LSSVM算法对 (1) 和 (2) 式转换为如下等式,来提高求解问题的速度。

min ⁡ W , b , e J P ( W , e ) = 1 2 W T W + r 2 ∑ k = 1 m e k , ( 3 ) \min _{\boldsymbol{W}, b, e} J_{P}(\boldsymbol{W}, e)=\frac{1}{2} W^{\mathrm{T}} \boldsymbol{W}+\frac{r}{2} \sum_{k=1}^{m} e_{k}, (3) W,b,eminJP(W,e)=21WTW+2rk=1mek,(3)

 s.t.  y k = W T φ ( x k ) + b + e k , ( 4 ) \text { s.t. } y_{k}=\boldsymbol{W}^{\mathrm{T}} \varphi\left(x_{k}\right)+b+e_{k}, (4)  s.t. yk=WTφ(xk)+b+ek,(4)

式中, r r r为预测误差的惩罚因子, e e e为SVM预测误差 ζ \zeta ζ的平方, 即 e = ζ 2 e=\zeta^{2} e=ζ2

通过构造拉格朗日变换多项式,进行如下变换:
L ( W , b , e , α ) = J P ( W , e ) − ∑ k = 1 m α k [ W T φ ( x k ) + b + e k − y k ] , ( 5 ) L(\boldsymbol{W}, b, e, \alpha)=J_{P}(\boldsymbol{W}, e)-\sum_{k=1}^{m} \alpha_{k}\left[\boldsymbol{W}^{\mathrm{T}} \varphi\left(x_{k}\right)+b+e_{k}-y_{k}\right], (5) L(W,b,e,α)=JP(W,e)k=1mαk[WTφ(xk)+b+ekyk],(5)

对式 (5) 中的 W , b , e k , α k W, b, e_{k}, \alpha_{k} W,b,ek,αk分别求偏导并令导数等于0,即可得到线性方程组,解之可得LSSVM算法的计算公式 (6)。

y ( x ) = ∑ k = 1 m α k K ( x , x k ) + b , ( 6 ) y(x)=\sum_{k=1}^{m} \alpha_{k} K\left(x, x_{k}\right)+b,(6) y(x)=k=1mαkK(x,xk)+b,(6)

式中, K ( x , x k ) K\left(x, x_{k}\right) K(x,xk)为核函数,可取径向基核, 多项式核, 线性核等。

2. LSSVM工具箱安装

LS_SVMlab工具箱可用于解决最小二乘支持向量机的分类以及回归问题。工具箱获取地址为:

http://www.esat.kuleuven.be/sista/lssvmlab

在这里插入图片描述
下载工具箱后,将其添加到MATLAB的工作搜索路径中即可。添加命令如下:

addpath('LSSVMlabv1_8_R2009b_R2011a')

值得注意的是,使用上述命令添加工具箱后,建议在共同的母文件夹下运行代码。

3. LSSVM分类案例

在安装了LSSVM工具箱后,可以用一个简单的二分类案例,检查是否安装成功。代码如下:

% 初始化程序
clear, clc
close all

% 创建数据
X = 2.*rand(30,2)-1;
Y = sort(randi([1,2],30,1));

% 设置参数与训练模型
% 'c' 表示分类,gam与sig2内核平方参数分别为10, 0.5
% 核函数采用 RBF径向基函数
gam = 10;
sig2 = 0.5;
[alpha,b] = trainlssvm({X,Y,'c',gam,sig2,'RBF_kernel'});
Y_hat = simlssvm({X,Y,'c',gam,sig2,'RBF_kernel','preprocess'},{alpha,b},X);
disp('真实值  预测值')
disp([Y, Y_hat])

%绘图
figure('Units' , 'normalized' , ...
    'name' , '预测值类型与实际类型的对比' ,...
    'position' , [0.25 0.25 0.5 0.5] , ...
    'nextplot' , 'add');
plot(1: 30, Y, 'bo', 1:30, Y_hat, 'r*', 'linewidth', 1.0)
xlabel('样本编号'); ylabel('类型'); legend('期望类型' , '预测类型')
title({'LS-SVM模型训练结果' , ['Accuracy = ', num2str( sum(Y == Y_hat)/30 * 100 ), '%']})

如果添加路径成功,则运行得到以下图像:

在这里插入图片描述

4. MATLAB代码

CSDN下载代码

https://download.csdn.net/download/qq_57971471/87730279

  • 17
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CJ-leaf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值