支持向量机matlab代码程序_支持向量机SVM#第三期#非线性支持向量机

0cc123d0de0f512ac2c22c8f4e3de00a.png

前期回顾

第一期:介绍了什么是支持向量,以及支持向量机的发展历程;

第二期:介绍了线性支持向量机(LSVM)的原理和一般算法流程,讨论了软间隔的处理方式;

本期概述

•非线性分类引入

•核函数

•线性不可分的处理方法

•非线性SVM 算法

1 非线性分类引入

如图4所示,在一维空间(原空间)上有一些点,但是无法利用LSVM将其分类(线性不可分问题),因为找不到一个超平面(此时是点)将其分开。此时,有了新的想法,将这些点映射到二维空间(特征空间)中去,那么可以找到一个超平面(直线)将这两类点分开!这里采用的映射非常简单,就是利用函数y = x^2 将x映射成(x, x^2),这就是核方法的一个最简单应用!

a3d5881b6cd2933badd7cf1e0b3be680.png

图4:特征空间映射

图4的matlab源代码

close all
%% 一维样本
subplot(121)
x=[-2 -3 0 2 4 5 6];
y=[-6 7 8];
scatter(x,x*0,50,'filled','r');hold on
scatter(y,y*0,50,'filled','b');
set(gcf,'Color','w')
set(gca,'LineWidth',2)
title('原空间')
axis equal
axis([-8 12 0 0.1])
grid off
%% 二维样本
% 将x映射到(x,x^2)的二维空间!
subplot(122)
scatter(x,x.^2,50,'filled','r');hold on
scatter(y,y.^2,50,'filled','b');
plot([-8 12],[20 50]+2,'m','LineWidth',2)
set(gcf,'Color','w')
set(gca,'LineWidth',2)
title('特征空间')
axis equal
axis([-8 12 0 100])
grid on

2 核函数

将原始低维空间中的向量作为输入向量,并返回特征空间(映射后的数据空间, 通常是更高维)中向量的点积的函数称为核函数。使用核函数,不需要显式地将特征空间中的函数值算出来(当然,如果能算出来也可以算出来),因为许多算法只需要特征空间中的内积(内积是标量);而不需要数据的坐标。以一个简单的例子来说明:

5172d60c9e317331798292e3fe6c4181.png

数求出内积即可。

这里的映射是随机构造的,也可能构造方式不唯一,我们也不可能一一去构造映射,再去求核函数。幸运的是,先贤大佬们已经为我们构造了很多核函数,大家只要自行选择使用即可!

3 线性不可分的处理方法

对于输入空间中的非线性分类问题,可以通过非线性变换将它转化为某个高维空间中的线性分类问题,在高维空间中学习线性支持向量机。由于在线性支持向量机学习的过程中,目标函数和分类决策函数都只涉及样本和样本之间的内积,所以不需要显式地指定非线性变换到底是什么,而只要用核函数替换非线性变换后得到的高维样本的内积即可。

最简单粗暴的解释就是将LSVM 推导过程中的(x, y) 替换成K(x, y)即可。具体的,可以比较非线性SVM 算法与LSVM 算法的细微差别!

4 非线性SVM 算法

db426b9cbf6a3252a6a1055d9d9b14f7.png

非线性SVM算法

***更多完整资料请看本人主页介绍***

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值