点到超平面的距离公式推导
证明:$\mathbb{R}^n$中任意一点$x_0$到超平面$w^Tx+b=0$的距离为$\frac{|w^Tx_0+b|}{||w||}$.
证明思路
什么是超平面?二维空间的超平面是一条直线,将二维空间分成两部分;三维空间的超平面是一个平面,将三维空间分成两部分。对于维数大于3的$n$维空间,我们已经无法直接想象其形态,但可以知道$n$维空间的超平面是$n-1$维的。
我们如何定义点到超平面的距离呢?
对于二维空间,点$x_0$到超平面(也就是直线)$l$的距离是过点$x_0$作直线$l$的垂线,垂线与直线$l$相交于点$x^*$, $x_0$与$x^*$之间的距离就是$x_0$到超平面$l$的距离;
对于三维空间,点$x_0$到超平面(也就是平面)$s$的距离是过点$x_0$作平面$s$的垂线,垂线与平面$s$相交于点$x^*$, $x_0$与$x^*$之间的距离就是$x_0$到超平面$s$的距离;
从而,点到超平面的距离,即为点到超平面上任意一点距离的最小值。证明的思路是:首先在超平面上找到一点,随后证明这一点使得距离最小。
那么问题来了,怎么找到这个使得距离最小的点?从上面二维、三维空间的例子中,我们可以看到:过点作超平面的垂线,垂线与超平面的交点就是这个最小点。不过,在$n$维空间中,我们一般不说垂线,而是用法向量这个概念。
证明过程
这样一切都清楚了:我们首先在超平面$w^Tx+b=0$上找到一点$x^*$, 使得$x^* - x_0$平行于超平面的法向量,然后证明对于超平面上任意一点$x$,$x$到$x_0$的距离都不小于$x^*$到$x_0$的距离。以下的证明说的就是这样一件事情。
第1步:找到点$x^*$
首先,对于超平面上的任意两点$x_1, x_2$, 有
\[ w^Tx_1 + b = 0, w^Tx_2 + b = 0 \]
两式相减,得到
\[ w^T(x_1-x_2) = 0 \]
由于$x_1-x_2$是平行于超平面的任一向量,而$w$始终垂直于此向量,因此$w$是超平面的法向量。
我们在超平面上取一点$x^*$, 使得$(x^* - x_0) // w$.可以设
\[ x^* = x_0 + tw(t \in \mathbb{R}) \]
由于$x^*$在超平面上,从而
\[ w^T(x_0 + tw) + b = 0 \]
由上式解得$t = -\frac{w^Tx_0+b}{||w||^2} $. 这样我们就找到了点$x^*$.
第2步:证明$x^*$使得距离最小
现在考虑超平面上的任意一点$x$, 向量$x - x_0$可以写作
\[ x - x_0 = x - x^* + x^* - x_0 \]
做这样的分解,是因为分解后的两个向量$x-x^*$和$x^* - x_0$是正交的,因为
\[ (x-x^*)^T(x^*-x_0) = (x-x^*)^Ttw=tw^T(x-x^*)=0 \]
因此
\[ ||x-x_0||^2 = ||(x-x^*)+(x^*-x_0)||^2 = ||x-x^*||^2 + ||x^*-x_0||^2 \]
由于$||x^*-x_0||^2$是个定值,因此当$||x-x^*||^2$最小时,$||x-x_0||^2$取得最小值,此时$x=x^*$. 此时的距离即为点到超平面的距离。即
\[ \min{||x-x_0||} = ||x^*-x_0|| = ||tw|| = \sqrt{t^2||w||^2} = \sqrt{\frac{(w^Tx_0+b)^2}{||w||^2}} = \frac{|w^Tx_0+b|}{||w||} \]