mark 向量空间中点与点集的相似度计算
via http://ask.julyedu.com/question/136
向量空间中点与点集的相似度计算
需求:向量空间中,假设我有一个已知的点集S,现在我有两个点a和b,我想度量a和b哪一个点与S中的点更相似,应该用什么度量呢?
我现在用的是余弦距离求和,但感觉不是很对,似乎欧式距离更合理一些
问题补充:实际上,S中的点的重要程度是不一致的,即对S中的一个点P,我会有一个Wp,0<=Wp<=1来表示其的重要程度的,如果考虑这个因素,那么上述问题又该如何呢?
希望大家帮忙提提宝贵建议。
我现在用的是余弦距离求和,但感觉不是很对,似乎欧式距离更合理一些
问题补充:实际上,S中的点的重要程度是不一致的,即对S中的一个点P,我会有一个Wp,0<=Wp<=1来表示其的重要程度的,如果考虑这个因素,那么上述问题又该如何呢?
希望大家帮忙提提宝贵建议。
6 个回复
SuiterChik
赞同来自: 春越 、July 、lianyutao 、beta 、electron 更多 »
首先先定义什么是“距离”,满足一下四条性质的度量都可以用来衡量距离
1. 非负性 D(a, a)≥0
2. 自反性 D(a, b) = 0 等价于 a = b
3. 对称性 D(a, b) = D(b, a)
4. 三角不等式 D(a, b) + (b, c) ≥D(a, c)
根据以上的定义,我们不难猜想距离的形式有很多种。事实上也有很多种,有些时候我们也称距离为“范数”,d维空间中k范数的定义如下
比如我们常用的欧式距离就是二范数,在很多统计学的方法中,使用了大量的二范数,这在机器学习中也很常见,比如很多准则函数,像3层BP神经网络的,PCA的,FDA的等等都使用了大量的二范数。下面我们又搬出这张图出来感受一下各个范数在几何上的差异:
图中不同颜色的曲面代表了不同的范数(根据小数字标记来看),比如白色的代表1范数,浅灰色的代表2范数,深灰色的代表4范数,红色的代表无穷范数。
每个范数的曲面代表了到原点的距离为1(也就是L_k = 1这个方程所构成的曲面)。
为什么我们大量使用2范数而不是别的呢?忘了..........
但2范数一定是最好的吗?不一定
除了范数,我们还有很多定义的距离,比如分类学中的Tanimoto距离
其中n1, n2分别为集合S1, S2中元素的个数,而n12代表两个集合交集的元素
又比如马氏距离,在多维高斯分布中,其概率密度为
其中,我们称
为马氏距离。当我们知道一个事物,其分布有如如下形式时,用2范数就不在适合了,而应使用马氏距离
为什么?或许可以认为他可以对不同的轴看重程度不一样
又比如你提到的余弦距离
事实上这个距离就非常看重夹角,而不再关心其模长,在某些时候是适用的。
说了这么多,距离应该怎么选?
这取决于你的先验,或者说取决于你对数据的了解有多少(如果你的先验准的话,否则会误导模型),以及计算能力上的考虑
另外,通过对数据的尺度变换,也能达到改变距离度量的效果
以上图片来自《模式分类》