支持向量机教程


1 数学基础

    1.1 什么是支持向量?

    1.2 什么是超平面?

    1.3 超平面数学方程

    1.4 点到平面的距离

    1.5 函数间隔和几何间隔

2 SVM内容

    2.1 SVM的数学表达式

    2.2 对偶问题

    2.3 拉格朗日函数

    2.4 拉格朗日乘子法

3 扩展服务

    3.1 扩展服务

点到平面的距离

创建时间:2022-04-15 | 更新时间:2022-04-23 | 阅读次数:2127 次

导读: 在三维空间,计算点到平面的距离,需要三个前置知识,请见下文的介绍。另外,还需要理解向量范数和向量点积在二维空间和三维空间的几何意义,对理解后文的推导也是直观重要的。

前置知识1:平面的一般式方程

$$Ax +By +Cz + D = 0$$

其中$n = (A, B, C)$是平面的法向量,$D$是将平面平移到坐标原点所需距离。当$D=0$时,平面过原点。

前置知识2:向量的范数

$$|| x || = \sqrt{[x,x]} = \sqrt{x_1^2+x_2^2+...+x_n^2}$$

可以定义向量的任意范数,但是如果不指定范数阶数,则都假设为2范数。向量[4,2,2]的2范数是:

$$\sqrt{4^2+2^2+2^2}$$

补充:向量范数的几何意义

向量范数的几何意义是长度,当然,在二维和三维空间中才有“长度”之说。此时,向量范数存在的意义是为了实现比较。比如,在一维实数集合中,我们随便取两个点2和1,我们知道2比1大,但是到了二维实数空间中,取两个点$(1,1)$和$(2,2)$,这个时候我们就没办法比较它们之间的大小,因为它们不是可以比较的实数,于是我们引入范数这个概念,把我们的$(1,1)$和$(2,2)$通过范数分别映射到实数$\sqrt{2}$和$\sqrt{8}$,这样我们就比较这两个点了。

提醒:范数使用双竖线,针对的对象是向量,要注意与绝对值进行区分,而绝对值使用单竖线,针对的对象是标量。

前置知识3:向量的点积(内积)

给定两个向量:

$x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} y = \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_n \end{bmatrix}$

它们的内积是:$[x,y] = x_1y_1 + x_2y_2 + ... + x_ny_n$

补充:向量点积的几何意义

设二维空间内有两个向量$\overrightarrow{a}$和$\overrightarrow{b}$,$||\overrightarrow{a}||$和$||\overrightarrow{b}||$表示向量$a$和$b$的大小,它们的夹角为$\theta(0 \leqslant \theta \leqslant \pi)$,则内积定义为以下实数:

$$\overrightarrow{a} \bullet \overrightarrow{b} = ||\overrightarrow{a}|| \cdot || \overrightarrow{b}|| \cdot cos\theta$$

该几何意义只对二维和三维空间有效。这个运算可以简单地理解为:在点积运算中,第一个向量投影到第二个向量上。注意:向量的顺序是不重要的,点积运算是可交换的。

进入主题1:在三维空间,计算点到平面的距离

有了上面的准备知识,下面我们开始求点到直线的距离,给定平面$A_x + B_y + C_y + D = 0$,求平面外一点$Q(x_0,y_0,z_0)$到平面的距离$d$,如下图所示:

解:任取平面内的一点$P(x,y,z)$连接$PQ$,过$P$做平面的法向量$ \overrightarrow{n}=(A,B,C)$,可知$Q$到平面的距离$d$恰好是$PQ$在法向量$\overrightarrow{n}$上的投影长度。

$$d = ||\overrightarrow{PQ}|| \cdot cos\theta$$

$$= \frac{||\overrightarrow{n}||}{||\overrightarrow{n}||} \cdot ||\overrightarrow{PQ}|| \cdot cos\theta $$

备注:乘以$\overrightarrow{n}$再除以$\overrightarrow{n}$,分子整好是$PQ$和$n$的内积,如下所示。

$$= \frac{PQ \bullet n}{||n||}$$

备注:$PQ=(x_0-x,y_0-y,z_0-z)$,展开如下。

$$= \frac{A(x_0-x)+B(y_0-y)+C(z-z_0)}{\sqrt{A^2+B^2+C^2}}$$

$$= \frac{Ax_0+By_0+Cz_0-(Ax+By+Cz)}{\sqrt{A^2+B^2+C^2}}$$

备注:$P$在平面内,所以$Ax+By+Cz=-D$

$$= \frac{Ax_0 + By_0 + Cz_0 + D}{\sqrt{A^2+B^2+C^2}}$$

备注:为保证结果为正,则加上绝对值号

$$= \frac{|Ax_0 + By_0 + Cz_0 + D|}{\sqrt{A^2+B^2+C^2}} $$

进入主题2:在高维空间,计算点到平面的距离

根据上文的介绍:超平面的数学方程,我们知道:高维空间的超平面方程是$n$元一次方程:

$$w_1x_1 + w_2x_2 + ... + w_nx_n + b = 0 $$

用向量的形式表示上面的式子为:

$$ [w_1,w_2,...w_n] \bullet \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} + b => W^T \bullet X + b = 0$$

在三维以上的空间,非人类所能感知的空间,只能按照三维空间的距离计算公式,依葫芦画瓢,从而得到点到超平面的距离为:

$$ d = \frac{|W^T \bullet X + b|}{\sqrt{w_1^2+w_2^2+...+w_n^2}} = \frac{|W^T \bullet X + b|}{||W||}$$

数学是个极其严谨的领域,在高维空间,“距离”二字已经不再适用于高维空间,所以人们提出了一个更抽象的新的术语:几何间隔