场景描述:
在机器学习问题中,通常将特征表示为向量的像是,所以在分析两个特征向量之间的相似性时,常用余弦相似度来表示。余弦相似度的取值范围是【-1,1】,相同的2个向量之间的相似度为1.如果希望得到类似于距离的表示,将1-减去余弦相似度即位余弦距离,余弦距离的取值范围【0,2】,2个相同的向量的余弦距离为0.
结合你的学习和研究经历,探讨一下为什么一些场景中使用余弦相似度而不是欧氏距离?
对于2个向量A和B,其余弦相似度即2个向量夹角的余弦。关注的是向量之间的角度关系,并不关心他们的绝对大小,其取值范围是【-1,1】。当一对文本相似度长度差异很大,但内容相近时,如果使用余弦相似度的话,他们之间的夹角可能很小,因而相似度高。此外,在文本,图像,视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然褒词相同时为1,正交时为0,相反时未-1的特性,而欧氏距离的数值则受维度的影响,范围不确定,并且含义也比较模糊。
在一些场景中,例如word2vec ,其向量模长是经过归一化,此时欧氏距离和余弦距离有着单调的关系。
在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦距离和欧氏距离结果是相同的。
总体来说,欧式距离体现在数值上的绝对差异,而余弦距离是体现在方向上的相对差异。
例如:统计2部剧的用户观看行为,用户A 的观看向量为(0,1)用户B的为(1.0)。。此时二者的余弦距离很大,而欧式距离很小,我们分析2个用户对于不同视频的偏好,更关注相对差异,显然用余弦距离。当我们分析用户的活跃度,以登录次数和观看时长作为特征时,余弦距离会认为(1.10)和(10,100)两个用户余弦距离很近,显然2个用户活跃度有着极大的差异的,此时我们更要关注绝对差异,应当使用欧式距离。特定的度量用于特定的问题。
最近在做“判断两段文本的语义相似度”的事情,实验中用doc2vec做文本向量化,用余弦值衡量文本相似度。
如向量的维度是3,有三段文本a、b、c,文本向量化之后的结果假如如下:a=(1,0,0)、