基于QD求解法的二分类SVM仿真

98 阅读2分钟

1.算法描述

      支持向量机(support vector machines)是一种二分类模型,它的目的是寻找一个超平面来对样本进行分割,分割的原则是间隔最大化,最终转化为一个凸二次规划问题来求解。由简至繁的模型包括:

 

       当训练样本线性可分时,通过硬间隔最大化,学习一个线性可分支持向量机;(也称硬间隔 SVM或线性可分 SVM)

       当训练样本近似线性可分时,通过软间隔最大化,学习一个线性支持向量机;(也称软间隔 SVM或线性不可分 SVM)

        当训练样本线性不可分时,通过核技巧和软间隔最大化,学习一个非线性支持向量机;(也称核函数或非线性 SVM)

 

       SVM 是一种二分类模型,该模型是定义为特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM 还包括核技巧,这使它成为实质上的非线性分类器。其学习策略就是间隔最大化,可形式化为一个求解凸二次规划的最小化问题。

 

2.仿真效果预览

matlab2022a仿真结果如下:

 

1.png

 

3.MATLAB核心程序 `%定义核函数及相关参数

C =0.1719;

ker=struct('type','linear');

%%=========================================================================

%构造训练样本和训练目标

n = 50;

% randn('state',2);%选择正态分布数据,线性可分样本点

x1 = randn(n,2);

y1 = ones(n,1);

x2 = 4+randn(n,2);

y2 = -ones(n,1);

X = [x1;x2];            % 训练样本,2n×2的矩阵,2n为样本个数,2为样本维数

Y=[y1;y2];

% figure(2)

% plot(x1(:,1),x1(:,2),'x')

figure();

plot(x1(:,1),x1(:,2),'bx',x2(:,1),x2(:,2),'b.');

 

title('二分类svc');

hold on;

% 构造测试样本

x3 = randn(n,2);

x4 = 5+randn(n,2);

Xd = [x3;x4];

plot(x3(:,1),x3(:,2),'kx',x4(:,1),x4(:,2),'k.');

hold on`