【机器学习Q&A】余弦相似度、余弦距离、欧式距离以及机器学习中距离的含义
余弦相似度、余弦距离、欧式距离以及机器学习中距离的含义
- 问题1:在某些情况下为何选择使用余弦相似度而非欧氏距离?
- 问题2:是否余弦距离被视为一个严格的数学距离?
- 参考资料
在机器学习问题中,通常会将特征表示成向量的形式,在考察两个特征向量之间相似程度时,则常用余弦相似度这一指标来衡量。
问题1:为什么在一些场景中要使用余弦相似度而不是欧氏距离?
对于两个向量A与B来说,其计算方式为cos(A,B)=\frac{A\cdot B}{||A||_2||B||_2}。这表明两个向量之间的夹角余弦值侧重于它们之间的角度关系,并不受它们长度的影响。该余弦值的取值范围限定在区间[-1, 1]之内。
对于这样一对文本,在其主题接近的前提下且呈现出显著差异性时,在以词频或词向量为特征进行提取的情况下,在特征空间中的欧氏距离通常较大;然而若采用余弦相似度进行计算,则两向量间的夹角可能较小,并且这种情况下被认为两文本间的相似程度较高。
此外,在文本、图像以及视频等不同领域中,研究对象在各个领域的特征维度通常较高。值得注意的是,在高维空间中,余弦相似度仍然具备"相同时得分为1"、"正交时得分为0"以及"相反时得分为-1"等特性。相比之下,则是由于其数值会受到维度的影响较为显著。
例如,在Word2Vec模型中
总体而言,在量值层面反映出了欧式距离的明显差异性特征,在方向层面则突显出余弦距离的角度特性
问题2:余弦距离是否是一个严格定义的距离?
注意:余弦距离不是严格定义上的距离!
代码解读
距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定性、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离。
(1)正定性
根据余弦距离的定义,有
dist(A, B)=1-cos \theta = \frac{||A||_2||B||_2-AB}{||A||_2||B||_2}
考虑到||A||_2||B||_2-AB\ge 0,因此有dist(A, B)\ge 0恒成立。
(2)对称性
根据余弦距离的定义,有
dist(A, B)=\frac{||A||_2||B||_2-AB}{||A||_2||B||_2}=\frac{||B||_2||A||_2-AB}{||B||_2||A||_2}
满足对称性
(3)三角不等式
该性质并不成立,反例。给定A=(1,0),B=(1,1),C=(0,1),则有dist(A,B)=1-\frac{\sqrt{2}}{2},dist(B,C)=1-\frac{\sqrt{2}}{2},dist(A,C)=1
因此有dist(A,B)+dist(B,C)=2-\sqrt{2}<1=dist(A,C)
余弦距离满足正定性和对称性,不满足三角不等式。
此外,在单位圆上定义的欧氏距离和余弦相似度满足以下关系:
||A-B||=\sqrt{2(1-\cos(A,B))}=\sqrt{2dist(A,B)}
即存在如下公式:
dist(A, B)=\frac{1}{2}||A-B||^2
显然,在单位圆上定义的余弦相似度和欧氏平方的距离均位于区间[0, 2]内。已知欧氏平方距离是一种符合规范的距离度量方式;然而,在这种情况下(基于单位圆),余弦相似度与欧氏平方的距离之间存在二次关系因而并不满足三角不等式这一关键性质。
在现代机器学习算法中,尽管某些指标被称为"距离"概念但它并未完全符合三条基本公理的情况并不仅限于余弦相似性这一指标,在其他应用场景中还有一种重要的指标被称为KL散度(Kullback-Leibler Divergence),通常用于评估两个概率分布之间的差异程度然而这种度量工具却不具备对称性与三角不等式特性
在机器学习领域中,A/B测试是验证模型最终效果的重要手段 。
问题2:线上A/B测试的实施步骤是什么?
(1) 实施线上A/B测试的核心方法是通过用户分桶技术来进行。具体操作包括将所有访问该功能的用户提供随机分配至实验组或对照组;对被选中的实验组用户提供新的功能体验方案,并为对照组用户提供现有的标准方案;
(2)在操作过程中需特别关注以下几点:一是样本间的独立性;二是采样过程的无偏性。为了保证数据质量,在实际应用中我们采取了严格的身份认证机制,并通过多层过滤确保每个用户的分配结果仅属于其中一个组别。
问题3:如何划分实验组和对照组?

参考资料
[1] 第二章 模型评估:《机器学习 cheatsheet》
[2] 香农信息论的核心概念包括:
- 熵(Entropy)
- 相对熵(Relative Entropy)
- 交叉熵(Cross Entropy)
- 条件熵(Conditional Entropy)
