机器学习维数诅咒

时间:2016-05-27 18:30:46

标签: python python-2.7 machine-learning word2vec

我在500 dim和1000dim的word2vec模型中有单词向量。我计算500和1000暗淡的一些示例向量之间的欧氏距离。我的问题是我读过有关维数诅咒的论文:欧几里德距离在高维空间中不起作用。但是这两个维度的结果非常相似。 我计算了1000个暗淡矢量之间的欧氏距离:

distance beween girl and boy 
18.1915241847 
cosine between girl and boy
 0.785652955784 
l1 distance beween girl and boy
 18.1915241847 
distance between girl and neither 
35.549272401 
cosine between girl and neither 
-0.0117403359958 
distance between boy and neither 
34.5523976193
 cosine between boy and neither
 -0.0129663966118 
distance between girl and charger 
28.65625576 
cosine between girl and charger
 0.119322070804 
distance between either and neither 
25.1379275604 
cosine between either and neither
 0.357230346462

在500昏暗中它是:

distance between girl and boy 
13.9897543378 
cosine between girl and boy 0.864196148736 
l1 distance between girl and boy 
13.9897543378 
distance between girl and neither 
35.1385895164 
cosine between girl and neither 
-0.000815672156041 
distance between boy and neither
 34.1677078497 
cosine between boy and neither 
0.00703764567668 
distance between girl and charger 
27.689731876 
cosine between girl and charger
 0.113056294897 
distance between either and neither 
0.0 
cosine between either and neither 
1.0 

有人可以解释为什么会这样吗?它与稀缺性有关吗?

3 个答案:

答案 0 :(得分:1)

似乎与稀疏性无关。它更像是属性或文本表示问题。只需检查500 dim,在计算“既不”和“任何”矢量之间的余弦时,几乎可以获得100%的相似度,但使用1000暗淡时的相似度为35%。虽然其他数据比较做得非常相似,但这个简单的例子是不同的,并且说你的计算或表示是错误的。你是否实施了欧几里德距离法或从某个地方带走了它?你有没有实现你的word2vec模型或从某个地方拿走它?

答案 1 :(得分:0)

当维度变为无穷大时,存在这样的效果:在高维空间中分布的点的最小和最大距离之间的差异消失。然而,这种效应假定矢量维度是独立且相同的分布。在你的情况下,你仍然远离无限,并且字嵌入向量很可能不是相同和独立分布的,所以效果不是那么强。

你还可能注意到的是,对于1000维向量(18对35)而言,男孩与女孩/两者的距离的对比度均小于500维向量(13对比) 35)。抛开分布假设,在进一步增加维度时会变得更糟。

答案 2 :(得分:0)

根据您的原始问题,我相信您正在比较单词向量之间的距离。维度的诅咒简单地指出,随着维度的增加,我们还需要更多的数据来补偿不断增加的空间。如果你碰巧用足够大的数据训练word2vec,那么单词之间的语义属性应该仍然存在。

但是你的结果看起来不太好。我希望'之间的余弦相似性。并且'要么'由于这两个词完全相反,因此接近0.0。您可以尝试在更明显的单词上计算欧氏距离以检查正确性吗?从最初的word2vec网站,他们的例子展示了单词" Paris"和"法国"。

祝你好运!