機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

直線と点の距離

下図に示すような点\mathbf{a}から、直線y(\mathbf{x})=\mathbf{w}^{T}\mathbf{x}+b=0におろした垂線との交点\mathbf{h}との距離を考えます。

f:id:opabinia2:20200114225421p:plain


直線y(\mathbf{x})の法線ベクトルは\nabla y=\mathbf{w}(参考:法線ベクトルと勾配)ですから、


\displaystyle \mathbf{a} - \mathbf{h} = d \frac{\mathbf{w}}{\|  \mathbf{w} \|} \tag{1}

となる実数dが存在します。式(1)において\displaystyle \frac{\mathbf{w}}{\|  \mathbf{w} \|}\mathbf{w}方向への単位ベクトルです。したがって|d|は点\mathbf{a}から\mathbf{h}までの距離を表します。使っている文字が1次関数y=ax+bと似ててややこしいですが、y(\mathbf{x})=w_1 x_1+w_2 x_2+b=0を想定しています。

式(1)より


\displaystyle \mathbf{h} =\mathbf{a}- d \frac{\mathbf{w}}{\|  \mathbf{w} \|} \tag{2}

です。ここで\mathbf{h}は直線y(\mathbf{x})=0上の点ですから、


\begin{eqnarray*}
\displaystyle \mathbf{w}^{T} \left( \mathbf{a} - d \frac{\mathbf{w}}{\|\mathbf{w}\|} \right) + b &=& 0 \tag{2} \\
\displaystyle \mathbf{w}^{T}\mathbf{a} - d \frac{\mathbf{w}^{T}\mathbf{w}}{\|\mathbf{w}\|} + b &=& 0 \tag{3}
\end{eqnarray*}

です。ベクトルのノルムの式(5)より \mathbf{w}^{T}\mathbf{w} = \| \mathbf{w} \|^{2}ですから、


\begin{eqnarray*}
\mathbf{w}^{T}\mathbf{a} - d \| \mathbf{w}\| + b &=& 0 \tag{4} \\
\displaystyle d &=& \frac{\mathbf{w}^{T}\mathbf{a}+b}{ \|\mathbf{w}\| } \tag{5} \\
&=& \frac{y(\mathbf{a})}{\|\mathbf{w}\|} \tag{6}
\end{eqnarray*}

です。したがって、点\mathbf{a}から直線y(\mathbf{x})におろした垂線の距離dは、


\displaystyle |d| = \frac{|y(\mathbf{a})|}{\|\mathbf{w}\|} \tag{6}

です。直線でなくとも、曲線でも平面でも同じ式で距離が求められます。