背景
最近开始自学机器学习,在网上看浙江大学机器学习的课程。一上来就发现自己数学这一块着实是不太行,很多基础都不懂。毕竟从学校毕业以后就没碰过数学了。没办法,慢慢找补找补吧~
课程一开始是先讲了支持向量机,里面需要用到“一个点到一个超平面”的距离。(这个是中学的内容了,我都已经不会了哈哈)。在网上搜索学习了一下差不多是会了。
在网上搜索到这篇博客,讲的很好。这里我做一些自己的补充。
点到超平面的距离
问题描述
求点 X 0 X_{0} X0 到超平面 ω ⃗ X ⃗ + b = 0 \vec{\omega} \vec{X} + b = 0 ωX+b=0 的距离。超平面是多维的情况。两维时就是直线,三维时就是个平面。
推导
先找一个平面的法向量
ω ⃗ \vec{\omega} ω 就是这个平面的一个法向量。嗯,就这么简单。
为什么呢?
在平面上任取两个点 X 1 X_{1} X1和 X 2 X_{2} X2,有:
- ω ⃗ X 1 ⃗ + b = 0 \vec{\omega} \vec{X_{1}} + b = 0 ωX1+b=0
- ω ⃗ X 2 ⃗ + b = 0 \vec{\omega} \vec{X_{2}} + b = 0 ωX2+b=0
所以,
ω
⃗
⋅
(
X
1
⃗
−
X
2
⃗
)
=
0
\vec{\omega} \cdot (\vec{X_{1}} - \vec{X_{2}}) = 0
ω⋅(X1−X2)=0
即
ω
⃗
\vec{\omega}
ω 和平面上任意向量垂直,所以
ω
⃗
\vec{\omega}
ω 就是该平面的一个法向量。
求距离
再在平面任取一点 X 1 X_{1} X1,然后通过和 X 0 X_{0} X0连线,得到 X 0 X 1 ⃗ \vec{X_{0}X_{1}} X0X1。再用夹角余弦求得 X 0 X_{0} X0到平面的距离。

我们要求的就是距离
d
d
d 就是
∥
X
0
X
1
⃗
∥
⋅
c
o
s
θ
\left \| \vec{X_{0}X_{1}} \right \| \cdot cos\theta
X0X1
⋅cosθ
我们已经有了法向量
ω
⃗
\vec{\omega}
ω,根据向量点积的几何定义,我们有
c o s θ = ω ⃗ ⋅ X 0 X 1 ⃗ ∥ ω ⃗ ∥ ∥ X 0 X 1 ⃗ ∥ cos\theta = \frac{ \vec{\omega} \cdot \vec{X_{0}X_{1}} }{ \left \| \vec{\omega} \right \| \left \| \vec{X_{0}X_{1}} \right \| } cosθ=∥ω∥ X0X1 ω⋅X0X1
距离
d
d
d 就等于:
d
=
ω
⃗
⋅
X
0
X
1
⃗
∥
ω
⃗
∥
=
ω
⃗
⋅
X
0
⃗
−
ω
⃗
⋅
X
1
⃗
∥
ω
⃗
∥
d = \frac{ \vec{\omega} \cdot \vec{X_{0}X_{1}} }{ \left \| \vec{\omega} \right \| } = \frac{ \vec{\omega} \cdot \vec{X_{0}} - \vec{\omega} \cdot \vec{X_{1}} }{ \left \| \vec{\omega} \right \| }
d=∥ω∥ω⋅X0X1=∥ω∥ω⋅X0−ω⋅X1
然后因为 X 1 X_{1} X1 就在超平面上,所以距离 d d d 为:
d = ω ⃗ ⋅ X 0 ⃗ + b ∥ ω ⃗ ∥ d = \frac{ \vec{\omega} \cdot \vec{X_{0}} + b }{ \left \| \vec{\omega} \right \| } d=∥ω∥ω⋅X0+b
小结
依然觉得公式不是特别直观,但好在很短很好记。
可以这样记:直接把 X 0 X_{0} X0 带入超平面然后除以 ∥ ω ⃗ ∥ \left \| \vec{\omega} \right \| ∥ω∥。
本文介绍了点到超平面距离的概念,特别是在支持向量机中的应用。通过数学推导,阐述了如何找到超平面的法向量并计算距离,强调了距离公式的关键点,并提供了记忆方法。

4398

被折叠的 条评论
为什么被折叠?



