SVM非常清晰的实现步骤与白话原理

简介: 笔记

SVM详细笔记,由浅入深,非常全面

第一部分,SVM简介

SVM的中文名字叫做支持向量机,是求解凸二次规划的最优算法。

SVM学习方法包括:线性可分支持向量机、线性支持向量机、非线性支持向量机,分别对应着训练数据线性可分,近似线性可分和线性不可分三种情况。

当输入数据线性不可分时,可以通过核函数将数据映射到更高维的空间中,使其变成线性可分的。

SVM百度百科.

第二部分 线性支持向量机

定义:对于给定的线性可分数据集,通过间隔最大化或者等价地求解相应的凸二次规划问题学习得到的分离超平面为:

w ∗ x + b = 0


(ps:在w,b能满足所有数据被分类正确的情况下,离超平面距离最近的点的距离要最大,也就是说,不仅仅只是要分类正确,而且在所有分类正确的情况下,离超平面距离最小的那个的值要最大)。


分类决策函数为:

f(x)=sign(w∗x+b)


可以用∣ w ∗ x + b ∣表示点x离超平面的距离,而w ∗ x + b的符号与y 的符号是否一致表示分类是否正确,所以可以用y ( w ∗ x + b ) 表示分类的正确性以及点离超平面的距离,叫做函数间隔,这样就去掉了绝对值。最后求解的函数为:

γ i = y i ( w ∗ x i + b )

要注意的一个问题的是,如果w b成倍的增加的话,超平面并没有发生改变,但是点离超平面的距离却变成为原来的两倍,所以我们需要对超平面的法向量w 加一些约束条件,使得距离是确定的。


几何间隔,定义:对于给定的训练集T和超平面(w,b)

定义超平面(w,b)关于样本点( x i , y i )的几何间隔为

γ i = y i / ∣ ∣ w ∣ ∣ ( w ∗ x i + b )

这里令y i ( w + x i + b ) = 1最后要求解的函数变成


min ~1/2||w||^2


s . t .      y i ( w ∗ x i + b ) − 1 ≥ 0


6.在上面的函数中,求解时,并不是那么的容易,这里引入对偶算法,一是对偶问题往往跟容易求解,二是自然引入核函数,进而推广到非线性分类问题。


首先构造拉格朗日函数:

L ( w , b , α ) = 1 / 2 ∣ ∣ w ∣ ∣ 2 − Σ α i y i ( w ∗ x i + b ) + Σ α i

原始问题的对偶问题是极大极小问题max minL(w,b,α)

其核心有一些几点:

1. max min ,最小最大

2.点到超平面距离的假设

3.拉格朗日乘子法在约束条件下求解最优问题

4.优化问题的对偶性

这里说一下第四点,白话:最大值里面的最小值肯定比最小值里面的最大值大。

接下来总结一下实现步骤:


假设存在一个超平面 ,表示每个样本点到平面的距离为D (这里加了绝对值)

假设正样本为+1,负样本为-1。D<0,label = -1;D>0,label = +1; (这里D没有加绝对值)

去掉第一步D的绝对值,根据第二步可知,D * label > 0 ;

求解距离平面最小的点中,最大的那个。(每一次都会产生一个平面,也就是说每一次最小的点中,距离平面的值最大的那个点)

特征缩放 D *label >0,将其假设为 D *label > 1,便于计算

得到目标函数,利用拉格朗日乘子法,利用对偶性 ,求解问题。

分别对w,b求导,代入原式,然后代入数据后,对拉格朗日算子求导,然后令其为0。

求解算子,然后回算出w,b,得到该超平面。

上面就是一个最简单的svm实现的具体步骤,里面还需要注意一下细节,不如一些约束条件我没有写进去,在下面的公式中,我会列出来,在计算出值后,还要注意看看满不满足约束条件。

image.jpeg

thank for your time !!

公众号:FPGA之旅

目录
相关文章
|
2月前
|
机器学习/深度学习 Java 网络架构
YOLOv5改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
YOLOv5改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
94 0
|
机器学习/深度学习 算法 搜索推荐
一文读懂FM算法优势,并用python实现!(附代码)
介绍 我仍然记得第一次遇到点击率预测问题时的情形,在那之前,我一直在学习数据科学,对自己取得的进展很满意,在机器学习黑客马拉松活动中也开始建立了自信,并决定好好迎接不同的挑战。 为了做得更好,我购买了一台内存16GB,i7处理器的机器,但是当我看到数据集的时候却感到非常不安,解压缩之后的数据大概有50GB - 我不知道基于这样的数据集要怎样进行点击率预测。
14965 0
|
2月前
|
机器学习/深度学习 Java 网络架构
YOLOv8改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
YOLOv8改进 | TripletAttention三重注意力机制(附代码+机制原理+添加教程)
99 0
|
8月前
|
机器学习/深度学习 算法 决策智能
最大熵图像复原方法原理(附完整代码)
最大熵图像复原方法原理(附完整代码)
111 0
|
7月前
|
Python
线性回归从零开始的实现过程python实现
线性回归从零开始的实现过程python实现
39 1
|
机器学习/深度学习 人工智能 算法
一文搞懂模型量化算法基础
一文搞懂模型量化算法基础
2737 0
|
机器学习/深度学习 自然语言处理 语音技术
小白总结Transformer模型要点(二)(下)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(二)(下)
|
机器学习/深度学习 自然语言处理 并行计算
小白总结Transformer模型要点(一)(上)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(一)(上)
|
机器学习/深度学习 自然语言处理
小白总结Transformer模型要点(一)(下)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(一)(下)
|
机器学习/深度学习 自然语言处理
小白总结Transformer模型要点(二)(上)
本文主要总结了Transformer模型的要点,包含模型架构各部分组成和原理、常见问题汇总、模型具体实现和相关拓展学习。
小白总结Transformer模型要点(二)(上)