从点与直线的距离到支持向量机(SVM)原理 附python demo(1)

本文介绍了支持向量机的基础知识,包括点到直线与超平面的距离公式,并通过图形理解距离是向量到法向量投影的概念。文章深入探讨了超平面的表示,以及如何计算任一点到超平面的距离,为理解SVM的后续内容打下基础。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

支持向量机 (suppot vector machine , SVM) 算法是常用的经典的分类机器学习算法。本文将详细地,由浅入深地介绍一下支持向量机的原理和推导,以及SVM 核函数解决问题的思想,以及 SMO 算法的python实现。 本文先简单介绍下入门的超平面和点到超平面距离的”向量投影”理解,图形理解等,作为SVM的入门知识。

一、点到直线与超平面

  • 点 ( x 0 , y 0 ) 到 直 线 A x + B y + C = 0 距 离 : d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 点\begin{array}{c} (x_0,y_0)到直线Ax+By+C = 0距离: \end{array}\begin{array}{c} d = {\color{Blue} } \frac{\left|A x_{0}+B y_{0}+C\right|}{\sqrt{A^{2}+B^{2}}} \end{array} (x0,y0)线Ax+By+C=0d=A2+B2 Ax0+By0+C
  • 点 ( x 1 , y 1 , z 1 ) 到 平 面 A x + B y + C z + D = 0 的 距 离 : d = ∣ A x 1 + B y 1 + C z 1 + D ∣ A 2 + B 2 + C 2 \begin{array}{c} 点 (x_1,y_1,z_1)到平面Ax+By+Cz+D = 0的距离: d=\frac{\left|A x_{1}+B y_{1}+C z_{1}+D\right|}{\sqrt{A^{2}+B^{2}+C^{2}}} \end{array} (x1,y1,z1)Ax+By+Cz+D=0d=A2+B2+C2 Ax1+By1+Cz1+D
    有没有想过这个推导过程?我们看这个距离公式可以简单地理解为,将这个点代入到距离的方程中,然后取绝对值,再除以一个方程参数的 根号系数平方和。如果这样理解的话,那是背公式。在过去的考试里面背熟会考试就行,但如果继续往下做有关AI 的东西,那么数学是必须多点理解的。
    我们仔细看以上这个两个公式:
    d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d = ∣ A x 1 + B y 1 + C z 1 + D ∣ A 2 + B 2 + C 2 \begin{array}{c} \begin{array}{c} d=\frac{\left|A x_{0}+B y_{0}+C\right|}{\sqrt{A^{2}+B^{2}}} & &d=\frac{\left|A x_{1}+B y_{1}+C z_{1}+D\right|}{\sqrt{A^{2}+B^{2}+C^{2}}} \end{array}{\normalsize } {\LARGE } \end{array} d=A2+B2 Ax0+By0+Cd=A2+B2+C2 Ax1+By1+Cz1+D
    分子是一个点和一个直线相乘,分母则好像是在除以一个向量的模。
    这不难想到一个投影公式:
    在这里插入图片描述
  • 以上可以说是高中学的知识。学过矩阵论我们知道这个向量的模可以用二范数表示 也就是 ||a||。以上的线,面只是一个二维,三维的方程。如果是一个多维的呢?那么我就将它描述为超平面。
  • 很简单,就是数据的维度增大了,我们发现平面坐标系喜欢用字母,x,y,表示2维,三维的时候喜欢用下,xyz,如果按照这个多维的概念就用一个字母表示的话那,肯定是不够用的。所以,现在都用向量的形式表示超平面。注意这里的单个向量都是表示列向量。x 用 ( x 1 , x 2 , . . . , x m ) T \begin{array}{c} (x_1,x_2,...,x_m)^T \end{array} (x1,x2,...,xm)T表示,那么权重系数,如二维的直线 A,B,三维的A B C,现在用 w = ( w 1 , w 2 , . . . , w k ) T \begin{array}{c} w = (w_1,w_2,...,w_k)^T \end{array} w=(w1,w2,...,wk)T表示,注意到还有一个偏差bias ,b ,因此超平面公式为:
    w T x + b = 0 \begin{array}{c} w^Tx+b = 0 \end{array} wTx+b=0
    例子 原来的直线 2x+y-3=0,
    w = ( 2 , 1 ) T , w T = [ 2 1 ] , x = ( x , y ) T = ( x 1 , x 2 ) T = [ x y ] \begin{array}{c} w = (2,1)^T,w^T = \begin{bmatrix} 2 &1 \end{bmatrix},x = (x,y)^T=(x_1,x_2)^T \end{array} = \begin{bmatrix} x\\y \end{bmatrix} w=(2,1)T,wT=[21],x=(x,y)T=(x1,x2)T=[xy]
    因此直线表示为:
    [ 2 1 ] ⋅ [ x y ] + b = 2 x + y + b = 0 \begin{array}{c} \begin{bmatrix} 2 &1 \end{bmatrix}\cdot \begin{bmatrix} x\\y \end{bmatrix} + b = 2x+y+b = 0 \end{array} [21][xy]+b=2x+y+b=0
    或更严格地:
    [ 2 1 ] ⋅ [ x 1 x 2 ] + b = 2 x 1 + x 2 + b = 0 \begin{array}{c} \begin{bmatrix} 2 &1 \end{bmatrix}\cdot \begin{bmatrix} x_1\\x_2 \end{bmatrix} + b = 2x_1+x_2+b = 0 \end{array} [21][x1x2]+b=2x1+x2+b=0

二、用图形理解距离是向量到法向量的投影

如下图所示:途中的红色直线是目标直线,P点为R2中任意一点,要求求出该点到直线(超平面的)L距离d, ,在图中知道有坐标点(2,1),连接坐标原点(0,0)得到法向量 w T \begin{array}{c} w^T \end{array} wT与直线的 斜率向量 w \begin{array}{c} w \end{array} w垂直。如图所示,依据几何关系可以证明出点P 到直线L的距离可以分为两部分,一部分是向量OP到向量 w T \begin{array}{c} w^T \end{array} wT的投影,称为 d 1 \begin{array}{c} d_1 \end{array} d1; 另一部分则是直线 L : 2 x + y + 3 = 0 \begin{array}{c} L:2x+y+3 = 0 \end{array} L2x+y+3=0,到直线,(图中紫色线): L 0 : 2 x + y = 0 \begin{array}{c} L_0:2x+y = 0 \end{array} L02x+y=0的距离 d 2 \begin{array}{c} d_2 \end{array} d2,显然 d = d 1 + d 2 \begin{array}{c} d = d_1+d_2 \end{array} d=d1+d2.
在这里插入图片描述
由上述的公式得到:

  • d1可以直接向量乘法得到,但是这里注意是距离因此分子要加个绝对值符号,分母为二范数必然大于0。
    d 1 = w T x ∥ w ∥ \begin{array}{c} d_1 = \frac{w^Tx }{\left \| w\right \| } \end{array} d1=wwTx
  • 由两个平行直线的距离公式: d 2 = C 1 − C 2 A 2 + B 2 = b ∥ w ∥ \begin{array}{c} d_2 = \frac{ C1-C2 }{\sqrt{A^2+B^2} } = \frac{ b }{ \left \| w \right \| } \end{array} d2=A2+B2 C1C2=wb

注意以上的距离d1,d2 是一个可正可负的数值.
在这里插入图片描述
如图当不同的情况d = d1+ d2 仍成立但是d1,d2 是正负不一定。

d = d 1 + d 2 = w T x ∥ w ∥ + b ∥ w ∥ = w T x + b ∥ w ∥ \begin{array}{c} d = d_1+d_2 = \frac{w^Tx }{\left \| w\right \| } +\frac{ b }{ \left \| w \right \| }= \frac{w^Tx+b}{\left \| w \right \| } \end{array} d=d1+d2=wwTx+wb=wwTx+b.
由于d 实际中需要计算的是距离,因此取绝对值,

得到任一点到超平面的距离

d i s t a n c e = ∣ d ∣ = ∣ w T x + b ∣ ∥ w ∥ \begin{array}{c} distance = \left |d \right | = \frac{\left |w^Tx+b\right | }{\left \| w \right \| } \end{array} distance=d=wwTx+b

  • d1 描述的是一个向量到超平面过原点时的平行超平面距离,这里说的平行即有相同的 w \begin{array}{c} w \end{array} w
  • d2 表示的是超平面到其过原点的平行超平面距离。
    再看看之前的二维、三维情况,只是w的维度不一样:
  • 点 ( x 0 , y 0 ) 到 直 线 A x + B y + C = 0 距 离 : d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 点\begin{array}{c} (x_0,y_0)到直线Ax+By+C = 0距离: \end{array}\begin{array}{c} d = {\color{Blue} } \frac{\left|A x_{0}+B y_{0}+C\right|}{\sqrt{A^{2}+B^{2}}} \end{array} (x0,y0)线Ax+By+C=0d=A2+B2 Ax0+By0+C
  • 点 ( x 1 , y 1 , z 1 ) 到 平 面 A x + B y + C z + D = 0 的 距 离 : d = ∣ A x 1 + B y 1 + C z 1 + D ∣ A 2 + B 2 + C 2 \begin{array}{c} 点 (x_1,y_1,z_1)到平面Ax+By+Cz+D = 0的距离: d=\frac{\left|A x_{1}+B y_{1}+C z_{1}+D\right|}{\sqrt{A^{2}+B^{2}+C^{2}}} \end{array} (x1,y1,z1)Ax+By+Cz+D=0d=A2+B2+C2 Ax1+By1+Cz1+D

以上就是用向量的相乘–投影来表示向量到超平面的欧式距离计算公式推导。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值