UTF8gbsn
本文主要介绍马氏距离(Mahalanois distance). 与欧拉距离不同,
马氏距离主要用在判断一个样本是否属于某个分布.
定义
假设我们有一个采样数据
x
=
{
x
1
,
x
2
,
⋯
,
x
n
}
T
\mathbf{x}=\{x_1,x_2, \cdots, x_n\}^T
x={x1,x2,⋯,xn}T,
而有一个已知的分布
P
P
P,
这个分布
P
P
P的均值为
μ
=
(
μ
1
,
μ
2
,
⋯
,
μ
n
)
T
\mathbf{\mu}= \left( \mu_1, \mu_2, \cdots, \mu_n \right)^T
μ=(μ1,μ2,⋯,μn)T,
它的协方差矩阵为
S
S
S.那么我们可以定义马氏距离
D
M
(
x
)
D_M(\mathbf{x})
DM(x)为
D M ( x ) = ( x − μ ) T S − 1 ( x − μ ) D_M(\mathbf{x})=\sqrt{(\mathbf{x}-\mathbf{\mu})^TS^{-1}(\mathbf{x}-\mathbf{\mu})} DM(x)=(x−μ)TS−1(x−μ)
也就是说马氏距离越小,
x
∈
P
\mathbf{x}\in P
x∈P的概率越大.
另外可以定义两个样本之间的距离为.
d
(
x
,
y
)
=
(
x
−
y
)
T
S
−
1
(
x
−
y
)
d(\mathbf{x}, \mathbf{y})=\sqrt{(\mathbf{x}-\mathbf{y})^TS^{-1}(\mathbf{x}-\mathbf{y})}
d(x,y)=(x−y)TS−1(x−y)
马氏距离越小, 则两个样本之间的距离越小.
直观解释
这里我们使用三个层次来做直观解释. 层层递进来解释这个马氏距离.
1
当你有一个样本
x
\mathbf{x}
x, 并且知道分布
P
P
P的
μ
\mathbf{\mu}
μ时.
自然而然的想到一个方法来判断
x
\mathbf{x}
x是否是
∈
P
\in P
∈P的.
∣ ∣ x − μ ∣ ∣ 2 2 ⩽ τ ||\mathbf{x}-\mathbf{\mu}||_2^2\leqslant \tau ∣∣x−μ∣∣22⩽τ
这个方法就是使用简单的欧式距离来判断样本与均值之间的距离.但是这有一个缺点,
也就是说的有的分布范围比较大,
有的比较小.因为分布的方差不一样.画个图形来表示就是,
以
μ
\mathbf{\mu}
μ为中心画一个圆. 方差小的分布, 圆半径比较小,
方法大的分布,
圆半径比较大.不同的分布要采用不同的
τ
\tau
τ.于是我们提出改进2.
2
使用
x − μ σ ⩽ τ \frac{\mathbf{x}-\mathbf{\mu}}{\sigma}\leqslant \tau σx−μ⩽τ
这样就可以弥补方差带来的不同差异.但是这里仍然有一个问题.
上式表示的分布需要在各个维度上具有相同的
σ
\sigma
σ,
如果分布是圆而是一个椭圆.则上面的方法就会失效.所以最后就引入了马氏距离.
3
使用马氏距离,
来度量样本是否属于某个分布.这里稍微解释下
S
−
1
S^{-1}
S−1.不过这种解释不是严谨和准确.
如果有人能更好的解释请留言.
-
协方差矩阵 S S S, 表征数据的分散程度.(主对角线)
-
S − 1 S^{-1} S−1,表征数据的紧实程度.(主对角线)
应用
现在我们可以来用马氏距离来分类了.先我们对于不同的类别数据有不同的
S
i
,
μ
i
S_i,\mathbf{\mu}_i
Si,μi,
我们可以分别计算
i ∗ = arg min i ( x − μ i ) T S i − 1 ( x − μ i ) i^*=\underset{i}{\arg\min}\sqrt{(\mathbf{x}-\mathbf{\mu}_i)^TS_i^{-1}(\mathbf{x}-\mathbf{\mu}_i)} i∗=iargmin(x−μi)TSi−1(x−μi)
最后可得 P i P_i Pi就是 x \mathbf{x} x所处的分类.