谁都能学会的SVM(支持向量机)分类器(一)超平面篇

2023-10-30 09:30

本文主要是介绍谁都能学会的SVM(支持向量机)分类器(一)超平面篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

谁都能学会的SVM(支持向量机)分类器(一)超平面篇

机器学习领域问题实现模式一般为特征+分类器,SVM分类器在机器学习分类器领域地位举足轻重。
SVM擅长解决什么类型的问题呢?
1.小样本
2.非线性(松弛变量、核函数为SVM精髓)
3.高维模式识别(例如文本分类)

从感知机开始,引入超平面的概念

n 维空间中的超平面由下面的方程确定:
w T x + b = 0 w^Tx+b=0 wTx+b=0其中,w和x都是n维列向量,x 为平面上的点,w 为平面上的法向量,决定了超平面的方向,b 是一个实数,能决定超平面到原点的距离。
x = ( x 1 , x 2 , x 3 , ⋅ ⋅ ⋅ , x n ) T x={(x_1,x_2,x_3,\cdot\cdot\cdot,x_n)}^T x=(x1,x2,x3,,xn)T w = ( w 1 , w 2 , w 3 , ⋅ ⋅ ⋅ , w n ) T w={(w_1,w_2,w_3,\cdot\cdot\cdot,w_n)}^T w=(w1,w2,w3,,wn)T

  • w为什么是法向量?
  • b为什么能决定超平面到原点的距离?
  • 关于超平面是否会经过原点的问题

在查超平面的定义时,其百度百科词条写道:因为是子空间,所以超平面一定经过原点,很多博客根据这个定义默认了此概念,并没有过多的解释,在介绍支持向量机超平面时,加上超平面一定经过原点。虽然过不过原点对后面的SVM的学习没有过多影响,还是要弄清楚这一点。如果超平面一定过原点,那b代表的超平面与原点间的位移,不就恒为0了吗?

为了帮助理解,首先做一个概念区分(线性子空间&仿射子空间):

  • 线性子空间: 如果 W W 是线性空间 V V 的一个非空子集,记作 W ≤ V W≤V WV

    • W W W必须包含0向量,因为0肯定属于 V V
    • 如果向量 x x 属于 W W 空间,则向量 C ∗ x C*x C也必须属于 W W 空间(乘法封闭性)
    • 如果两个向量 A A A B B B属于 W W 空间,则向量 A + B A+B A+B也属于 W W 空间(加法封闭性)
  • 仿射子空间 V V V的一个非空子集 Y Y Y V V V的仿射子空间,如果存在一个 V V V的线性子空间 W ≤ V W≤V WV和向量 a 0 ∈ V a_0∈V a0V,那么 Y = a 0 + W = { a 0 + β ∣ β ∈ W } Y=a_0+W=\{a_0+\beta\vert\beta\in W\} Y=a0+W={a0+ββW}由此可以得出结论:仿射子空间是对应线性子空间的平移,而支持向量机所说的超平面泛指仿射子空间,该超平面并不一定经过原点。百度百科默认子空间代表线性子空间,因此它所构成的超平面一定经过原点。超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0式中,b为位移项,决定了超平面到原点的距离。

说了这么多只解释清楚了是否过原点的问题,所以 w w w为什么是法向量?

降维说明一下该问题,建立方程: a x + b y + c = 0 ax+by+c=0 ax+by+c=0 y = − a x − c b y=\frac{-ax-c}b y=baxc其包含的点集Q为:

令 x = t 令x=t x=t ( t , − a t − c b ) = t ( 1 , − a b ) − ( 0 , c b ) (t,\frac{-at-c}b)=t(1,-\frac ab)-(0,\frac cb) (t,batc)=t(1,ba)(0,bc)该函式是经过点(0, c b \frac cb bc),方向为(1,- a b \frac ab ba)的直线

令 n = ( a , b ) 令n=(a,b) n=ab,则 n ∗ ( t , − a t − c b ) + c = 0 n*(t,\frac{-at-c}b)+c=0 n(t,batc)+c=0

在Q点集上任取一点 ( x 0 , y 0 ) (x_0,y_0) (x0y0) c = − n ∗ ( x 0 , y 0 ) c=-n*(x_0,y_0) c=n(x0y0)

n ∗ ( t , − a t − c b ) − n ∗ ( x 0 , y 0 ) = 0 ⇔ n ∗ ( ( t , − a t − c b ) − ( x 0 , y 0 ) ) = 0 n*(t,\frac{-at-c}b)-n*(x_0,y_0)=0\Leftrightarrow n*((t,\frac{-at-c}b)-(x_0,y_0))=0 n(t,batc)n(x0y0)=0n((t,batc)(x0y0))=0

由于 ( t , − a t − c b ) 和 ( x 0 , y 0 ) (t,\frac{-at-c}b)和(x_0,y_0) (t,batc)(x0y0)都为点集 Q Q Q上的一点,所以证明了 n ⊥ L n\perp L nL

同理将该方法推向多维依然适用,说了这么多终于可以证明 w w w为什么是超平面的法向量

点到直线的距离

针对超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0,由点到直线的距离可以推出,任意点到超平面的距离 d d d:
d = ∣ w T x + b ∣ ∣ ∣ w ∣ ∣ d=\frac{\vert w^Tx+b\vert}{\vert\vert w\vert\vert} d=wwTx+b

这篇关于谁都能学会的SVM(支持向量机)分类器(一)超平面篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/306970

相关文章

SpringKafka消息发布之KafkaTemplate与事务支持功能

《SpringKafka消息发布之KafkaTemplate与事务支持功能》通过本文介绍的基本用法、序列化选项、事务支持、错误处理和性能优化技术,开发者可以构建高效可靠的Kafka消息发布系统,事务支... 目录引言一、KafkaTemplate基础二、消息序列化三、事务支持机制四、错误处理与重试五、性能优

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

定价129元!支持双频 Wi-Fi 5的华为AX1路由器发布

《定价129元!支持双频Wi-Fi5的华为AX1路由器发布》华为上周推出了其最新的入门级Wi-Fi5路由器——华为路由AX1,建议零售价129元,这款路由器配置如何?详细请看下文介... 华为 Wi-Fi 5 路由 AX1 已正式开售,新品支持双频 1200 兆、配有四个千兆网口、提供可视化智能诊断功能,建

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

Vector3 三维向量

Vector3 三维向量 Struct Representation of 3D vectors and points. 表示3D的向量和点。 This structure is used throughout Unity to pass 3D positions and directions around. It also contains functions for doin

8. 自然语言处理中的深度学习:从词向量到BERT

引言 深度学习在自然语言处理(NLP)领域的应用极大地推动了语言理解和生成技术的发展。通过从词向量到预训练模型(如BERT)的演进,NLP技术在机器翻译、情感分析、问答系统等任务中取得了显著成果。本篇博文将探讨深度学习在NLP中的核心技术,包括词向量、序列模型(如RNN、LSTM),以及BERT等预训练模型的崛起及其实际应用。 1. 词向量的生成与应用 词向量(Word Embedding)

为何我建议你学会抄代码?

文章目录 为何我建议你学会抄代码?一、引言二、抄代码的艺术1、理解抄代码的真正含义1.1、抄代码的好处 2、如何有效地抄代码2.1、发现问题2.2、整理需求2.3、造轮子标准流程 三、抄代码的实践案例1、发现问题2、整理需求3、设计重试机制4、实现重试工具类5、使用重试工具类6、优化和扩展 四、总结 为何我建议你学会抄代码? 一、引言 在编程的世界中,“抄代码” 常被视为一

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

sqlite不支持中文排序,采用java排序

方式一 不支持含有重复字段进行排序 /*** sqlite不支持中文排序,改用java排序* 根据指定的对象属性字段,排序对象集合,顺序* @param list* @param field* @return*/public static List sortListByField(List<?> list,String field){List temp = new ArrayList(