搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
你好赵伟
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
学Python常逛的10个网站,都总结在这里了_python代码分享网站
2
从外行到外包,从手工测试到知名互联大厂测开,我经历了什么...
3
api中文文档 mws_therscan API 中文文档-智能合约
4
交换机端口安全配置
5
基于SpringBoot的“实习管理系统”的设计与实现(源码+数据库+文档+PPT)_实习管理平台源码
6
2020,我的秋招
7
Linux入侵排查
8
全志平台BSP裁剪(1)kernel裁剪--调试工具和调试信息的裁剪_全志a40i vmalloc
9
无人驾驶学习笔记--路径规划(二)【Dubins曲线和Reeds-Shepp曲线】_dubins曲线,这对无人车
10
【NLP】Word2Vec模型文本分类_word2vec 词聚类
当前位置:
article
> 正文
机器学习笔记(4)——支持向量机(SVM)_svm正标签
作者:你好赵伟 | 2024-04-15 23:10:00
赞
踩
svm正标签
SVM
支持向量机
SupportVectorMachine
1. 概念
SVM是个二分类的分类模型。也就是说,给定一个包含正例和反例(正样本点和负样本点)的样本集合,支持向量机的目的是寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,但是不是简单地分看,其原则是使正例和反例之间的间隔最大。学习的目标是在特征空间中找到一个分类超平面wx+b=0,分类面由法向量w和截距b决定。分类超平面将特征空间划分两部分,一部分是正类,一部分是负类。法向量指向的一侧是正类,另一侧为负类。
在二维空间,分类的就是线,如果是三维的,分类的就是面了,对于更高维,一般将任何维的分类边界都统称为超平面。
需要确定一个分类线使他最公平,正如黑色线一样。
2.线性可分SVM与硬间隔最大化
SVM试图寻找一个超平面来对样本进行分割,把样本中的正例和反例用超平面分开,尽最大的努力使正例和反例之间的间隔margin最大。关心求得的超平面能够让所有点中离它最近的点具有最大间距。
假设我们有N个训练样本{(x1, y1),(x2, y2), …, (xN, yN)},x是d维向量,而yi∊{+1, -1}是样本的标签,分别代表两个不同的类。
线性分类器(超平面)即为
f
(
x
)
=
s
g
n
(
w
T
x
+
b
)
f
(
x
)
=
s
g
n
(
w
T
x
+
b
)
g
(
x
)
=
w
T
x
+
b
=
0
g
(
x
)
=
w
T
x
+
b
=
0
就是我们要寻找的分类超平面
上图中找到两个和这个超平面平行和距离相等的超平面:
H
1
:
y
=
w
T
x
+
b
=
1
H
1
:
y
=
w
T
x
+
b
=
1
和
H
2
:
y
=
w
T
x
+
b
=
−
1
H
2
:
y
=
w
T
x
+
b
=
−
1
对任何的H1和H2,我们都可以归一化系数向量w,这样就可以得到H1和H2表达式的右边分别是+1和-1了
两个平面需要满足两个条件:(1)没有任何样本在这两个平面之间;(2)这两个平面的距离需要最大。
对于条件2,最大化这个距离,所以就存在一些样本处于这两条线上,他们叫支持向量。
对于两平行直线
a
x
+
b
y
=
c
1
a
x
+
b
y
=
c
1
与
a
x
+
b
y
=
c
2
a
x
+
b
y
=
c
2
根据平行直线距离公式
d
=
|
c
1
−
c
2
|
a
2
+
b
2
√
d
=
|
c
1
−
c
2
|
a
2
+
b
2
H
1
:
w
1
x
1
+
w
2
x
2
=
1
H
1
:
w
1
x
1
+
w
2
x
2
=
1
和
H
2
:
w
1
x
1
+
w
2
x
2
=
−
1
H
2
:
w
1
x
1
+
w
2
x
2
=
−
1
H
1
H
1
与
H
2
H
2
的距离即是
|
1
+
1
|
w
2
1
+
w
2
2
√
=
2
|
|
w
|
|
|
1
+
1
|
w
1
2
+
w
2
2
=
2
|
|
w
|
|
目标即最大化
m
a
r
g
i
n
=
2
|
|
w
|
|
m
a
r
g
i
n
=
2
|
|
w
|
|
问题转换成求
m
i
n
1
2
|
|
w
⃗
|
|
2
m
i
n
1
2
|
|
w
→
|
|
2
约束条件对于任意
(
x
i
→
,
y
i
)
(
x
i
→
,
y
i
)
:
y
i
(
w
i
→
x
i
→
+
b
)
≥
1
,
y
i
(
w
i
→
x
i
→
+
b
)
≥
1
,
3.Dual优化(带约束条件的最优化问题)
利用拉格朗日对偶性将原始问题转换为对偶问题(后面的
x
x
均代表向量)
假设优化问题为求
f
(
x
)
m
i
n
f
(
x
)
m
i
n
,限制条件为
h
i
(
x
)
=
0
,
i
=
1
,
2...
,
n
h
i
(
x
)
=
0
,
i
=
1
,
2...
,
n
引入拉格朗日因子,得到拉格朗日函数:
L
(
x
,
α
)
=
f
(
x
)
+
α
1
h
1
(
x
)
+
α
2
h
2
(
x
)
+
.
.
.
+
α
n
h
n
(
x
)
L
(
x
,
α
)
=
f
(
x
)
+
α
1
h
1
(
x
)
+
α
2
h
2
(
x
)
+
.
.
.
+
α
n
h
n
(
x
)
对
x
x
求极值,也就是对
x
x
求导,导数为0,得到
α
α
关于
x
x
的函数
再代入拉格朗日函数就变成(只有一个变量(向量)
α
α
):
W
(
α
)
=
L
(
x
(
α
)
,
α
)
W
(
α
)
=
L
(
x
(
α
)
,
α
)
同样是求导另其等于0,解出α即可。需要注意的是,我们把原始的问题叫做primal problem,转换后的形式叫做dual problem。需要注意的是,原始问题是最小化,转化为对偶问题后就变成了求最大值了。
对于本题中的不等式约束问题同样也是这样操作
4.SVM优化的对偶问题
Primalproblem:
m
i
n
1
2
|
|
w
|
|
2
m
i
n
1
2
|
|
w
|
|
2
s
.
t
.
y
i
(
w
x
i
+
b
)
≥
1
s
.
t
.
y
i
(
w
x
i
+
b
)
≥
1
同样的方法引入拉格朗日乘子,我们就可以得到以下拉格朗日函数:
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
=
1
N
α
i
y
i
(
w
x
i
−
b
)
L
(
w
,
b
,
α
)
=
1
2
w
T
w
−
∑
i
=
1
N
α
i
y
i
(
w
x
i
−
b
)
然后对
L
(
w
,
b
,
α
)
L
(
w
,
b
,
α
)
分别求
w
w
和
b
b
的极值
∂
L
∂
w
=
0
,
∂
L
∂
b
=
0
,
a
≥
0
∂
L
∂
w
=
0
,
∂
L
∂
b
=
0
,
a
≥
0
求解导数为0的式子可得
w
=
∑
i
=
1
N
α
i
y
i
x
i
w
=
∑
i
=
1
N
α
i
y
i
x
i
∑
i
=
1
N
α
i
y
i
=
0
∑
i
=
1
N
α
i
y
i
=
0
带入拉格朗日函数可得
W
(
α
)
=
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
,
j
=
1
n
α
i
α
j
y
i
y
j
x
T
i
x
j
W
(
α
)
=
∑
i
=
1
n
α
i
−
1
2
∑
i
=
1
,
j
=
1
n
α
i
α
j
y
i
y
j
x
i
T
x
j
(
α
i
≥
0
,
∑
i
=
1
n
α
i
y
i
=
0
)
(
α
i
≥
0
,
∑
i
=
1
n
α
i
y
i
=
0
)
这就是Dual problem,(如果我们知道α,我们就知道了w。反过来,如果我们知道w,也可以知道α)。这时候我们就变成了求对α的极大,即是关于对偶变量α的优化问题(没有了变量w,b,只有α)。当求解得到最优的α
后,就可以同样代入到上面的公式,导出w
和b*了,最终得出分离超平面和分类决策函数。也就是训练好了SVM。
对于新样本
x
⃗
x
→
,就可以这样分类了
f
(
x
⃗
)
=
s
g
n
(
w
⃗
T
x
⃗
+
b
)
=
s
g
n
(
∑
i
=
1
N
α
i
y
i
(
x
⃗
i
x
⃗
)
+
b
)
f
(
x
→
)
=
s
g
n
(
w
→
T
x
→
+
b
)
=
s
g
n
(
∑
i
=
1
N
α
i
y
i
(
x
→
i
x
→
)
+
b
)
其实很多的αi都是0,也就是说w只是一些少量样本的线性加权值。这种“稀疏”的表示实际上看成是KNN的数据压缩的版本。也就是说,以后新来的要分类的样本首先根据w和b做一次线性运算,然后看求的结果是大于0还是小于0来判断正例还是负例。现在有了αi,我们不需要求出w,只需将新来的样本和训练数据中的所有样本做内积和即可。
5.软间隔最大化
偏离正常位置很远的数据点,我们称之为outlier,它有可能是采集训练样本的时候的噪声,也有可能是标数据标错了,把正样本标成负样本了。为了处理这种情况,我们允许数据点在一定程度上偏离超平面。也就是允许一些点跑到H1和H2之间,也就是他们到分类面的间隔会小于1。
原来的约束条件变为:
我们在目标函数里面增加一个惩罚项,新的模型就变成:
其中
ξ
i
ξ
i
表示松弛变量,我们要求的是尽可能小的目标函数值。这里的C是离群点的权重,C越大表明离群点对目标函数影响越大,也就是越不希望看到离群点。这时候,间隔也会很小。
推导后,偶优化问题变成如下
没有参数
ξ
i
ξ
i
,
b
b
的计算方式也发生了改变
6.核函数
对于真正的线性不可分问题需要将原始样本点通过一个变换,变换到另一个空间,在这个特征空间上是线性可分的。也就是说,对于不可分的数据,现在我们要做两个工作:
1)首先使用一个非线性映射Φ(x)将全部原始数据x变换到另一个特征空间,在这个空间中,样本变得线性可分了;
2)然后在特征空间中使用SVM进行学习。
cover定理:将复杂的模式分类问题非线性地投射到高维空间将比投射到低维空间更可能是线性可分的。
利用非线性映射转化到高维空间的小例子:
但是对于这样的大数据维度,映射函数很难找。
但是通过观察,我们发现SVM优化问题,与分类决策函数,都是计算两个样本的内积,训练SVM和使用SVM都用到了样本间的内积,而且只用到内积。那如果我们可以找到一种方法来计算两个样本映射到高维空间后的内积的值就可以了。核函数就是这样的:
K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
K
(
x
i
,
x
j
)
=
ϕ
(
x
i
)
T
ϕ
(
x
j
)
常用的一般是径向基函数
K
(
x
,
y
)
=
e
x
p
(
−
|
|
x
−
y
|
|
2
2
σ
2
)
K
(
x
,
y
)
=
e
x
p
(
−
|
|
x
−
y
|
|
2
2
σ
2
)
决策函数变成
注意的是,因为大部分样本的拉格朗日因子
α
i
α
i
都是0,所以其实我们只需要计算少量的训练样本和新来的样本的核函数,然后求和取符号即可完成对新来样本x的分类了。从计算的角度,不管
Φ
(
x
)
Φ
(
x
)
变换的空间维度有多高,甚至是无限维(函数就是无限维的),这个空间的线性支持向量机的求解都可以在原空间通过核函数进行,这样就可以避免了高维空间里的计算,而计算核函数的复杂度和计算原始样本内积的复杂度没有实质性的增加。
7.SVM多类分类
“One Against All”方法:比如我们5个类别,第一次就把类别1的样本定为正样本,其余2,3,4,5的样本合起来定为负样本,这样得到一个两类分类器,它能够指出一个样本是还是不是第1类的;第二次我们把类别2 的样本定为正样本,把1,3,4,5的样本合起来定为负样本,得到一个分类器,如此下去,我们可以得到5个这样的两类分类器(总是和类别的数目一致)。
但有时也会出现两种很尴尬的情况,例如拿这个样本问了一圈,每一个分类器都说它是属于它那一类的,或者每一个分类器都说它不是它那一类的,前者叫分类重叠现象,后者叫不可分类现象。
对于争议地区,实际上是通过衡量这个点到三个决策边界的距离,因为到分类面的距离越大,分类越可信。
分类标准:
k
∗
=
a
r
g
m
a
x
(
w
T
k
ϕ
(
x
)
+
b
)
k
∗
=
a
r
g
m
a
x
(
w
k
T
ϕ
(
x
)
+
b
)
五角星被分为蓝色类原因是因为距离蓝色分界线更近
8.KKT条件:
化简如下
第一个式子表明如果
α
i
=
0
α
i
=
0
,那么该样本落在两条间隔线外。第二个式子表明如果
α
i
=
C
α
i
=
C
,那么该样本有可能落在两条间隔线内部,也有可能落在两条间隔线上面,主要看对应的松弛变量的取值是等于0还是大于0,第三个式子表明如果
0
<
α
i
<
C
0
<
α
i
<
C
,那么该样本一定落在分隔线上。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/你好赵伟/article/detail/430732
推荐阅读
article
Web
安全之
CSRF
攻击
_
csrtfw
...
CSRF
攻击
是源于
Web
的隐式身份验证机制_
csrtfw
csrtfw
一、CSR...
赞
踩
article
【
博览
网】
设计模式
——
第一周
课程
笔记
_
博览
设计模式
...
本周
课程
先大致介绍了
设计模式
的概念以及产生原因,然后详细讲解了
设计模式
的几大原则,接着按照顺序介绍了模板方法、策略模式、...
赞
踩
article
【
linux
深入剖析】
动态
库
的
使用
(续) | 动静态
库
的
链接...
这里
的
mylib.tgz就是我们
的
库
打包文件。【
linux
深入剖析】
动态
库
的
使用
(续) | 动静态
库
的
链接 ...
赞
踩
article
网络
安全笔记1——
Internet
协议
的
安全性
_
ip
层不能保证
ip
数据报一定是从
源地址
发送的。
攻击者
...
一、
网络
层
协议
二、传输层
协议
三、应用层
协议
一、
网络
层
协议
。_
ip
层不能保证
ip
数据报一定是从
源地址
发送的。
攻击者
可以伪装...
赞
踩
article
vs
code
提交代码
403
_vs
code
git
403
...
参考解决记录以备以后使用。_vs
code
git
403
vs
code
git
403
解决
git
...
赞
踩
article
word
中载入Mathtype报错:The
MathType
DLL
cannot
be
found
...
注意:具体的目录地址和位数(32或64)要与自己的电脑相匹配。_the mathtype dll
cannot
be f...
赞
踩
article
Tensorflow
:
空洞
卷积
(
Atrous
convolution
)
atrous
_
conv2d
的...
一、参考文献https://blog.csdn.net/mao_xiao_feng/article/details/78...
赞
踩
article
【
C++
从练气
到
飞升】
04
---
拷贝
构造函数
...
【
C++
从练气
到
飞升】
04
---
拷贝
构造函数
...
赞
踩
article
在
Docker
中使用
Docker
file实现
ISO
文件转化为完整版
Centos
镜像,并搭建集群数据仓...
在
Docker
中使用
Docker
file实现
ISO
文件转化为完整版
Centos
镜像,并搭建集群
数据仓库
_
docker
.i...
赞
踩
article
JavaWeb
request
接收
参数
3种
方式
_
web
请求
java
接口
参数
的几种
方式
...
1、form表单提交,encrypt= “application/x-www-form-urlencoded” ,即常规...
赞
踩
article
结构化
思维
(
Structured
Thinking
)_以假设为导向的
思维
方法
是
一种
结果逆推...
什么是
结构化
思维
结构化
思维
是指在思考分析解决问题时,以一定的范式、流程顺序进行,首先以假设为先导,对问题进行正确的界...
赞
踩
article
笔记本
选购指南...
学习艺术和理工科的同学尽量选择游戏本,学习文科的同学则看自己是否有需求。而且学校图书馆都是有电脑的,我们也可以不买
笔记本
...
赞
踩
article
超赞!
LeetCode
真题版
电子书
在
GitHub
上终于
开源
了
...
文末有干货“Python高校”,马上关注真爱,请置顶或星标大家好,我是Gao最近有有不少老铁
在
后台留言说,想进大厂,但是...
赞
踩
article
《
嵌入式
系统
》知识总结
1
:
嵌入式
系统
概述
_
计算机
专业课
嵌入式
系统
...
嵌入式
系统
是以应用为中心,以
计算机
技术为基础,软件,硬件可裁剪,以适用于应用
系统
对功能,可靠性,成本,体积,功耗等要求严...
赞
踩
article
IDEA
中
无法
识别到
Yaml
/
Yml
文件
的最简单解决方法...
三\在项目
中
添加Spring工程。二\查看设置
中
的
文件
类型与格式。
IDEA
中
无法
识别到
Yaml
/
Yml
文件
的最简单解决方...
赞
踩
article
BAT
机器
学习
面试
1000
题
系列(第
150
~279
题
)_
以下
说法
中
正确
的
是? () 答
题
区域: a....
首页博客学院下载GitChatTinyMind论坛问答商城VIP活动招聘ITeyeCSTO写博客发Chatleadai
的
...
赞
踩
article
Pull
Request
到底是什么
意思
...
Pull
Request
到底是什么
意思
Pull
Request
实在是一个令人难以理解的词,尽管学会PR很长时间了,自...
赞
踩
article
Flink
内存
模型...
flink
内存
模型
Flink
内存
模型 1、
Flink
进程
内存
模型 配置项...
赞
踩
article
【
Apache
】
Apache
如何
使用
其他
端口
...
Apache
理论上是可以
使用
其他
端口
的,不一定非要
使用
80
端口
。你可以在
Apache
的配置文件中修改监听
端口
,使其...
赞
踩
article
计算机网络--
数据
链路层
_
数据
包
经过中间
网络设备
是的源和目的ip
地址
...
1、
数据
链路层
的作用: 两个设备(同一种
数据
链路节点)之间进行传递
数据
2、以太网是一种技术标准;既包含了
数据
链路层
的内容...
赞
踩
相关标签
前端
servlet
html
设计模式
linux
java
服务器
web安全
网络
安全
git
github
word
microsoft
c++
开发语言
docker
centos
数据仓库
运维
后端
request
javaweb
电脑