↑↑↑关注后"星标"Datawhale
每日干货 & 每月组队学习,不错过
Datawhale干货
译者:张峰,安徽工业大学,Datawhale成员
许多算法,不管是有监督的还是无监督的,都会使用距离测量。这些度量方法,如欧氏距离或余弦相似度,经常可以在KNN、UMAP、HDBSCAN等算法中找到。
理解距离测量领域比你可能意识到的更重要。以KNN为例,这是一种常用于监督式学习的技术。作为默认设置,它通常使用欧几里得度量。就其本身而言,是一个很好的距离测量方法。
然而,如果你的数据是高维的呢?那么欧几里得距离还能用吗?或者,如果你的数据由地理空间信息组成呢?也许Haversine距离会是一个更好的选择!
知道何时使用哪种距离测量方法可以帮助你从一个差的分类器变成一个准确的模型。
在本文中,我们将介绍不同的距离测量方法,并探索如何以及何时最好地使用它们。最重要的是,我会谈谈各自的缺点,这样你就能知道何时该避开使用某些距离度量的措施。
1. 欧式距离
我们从最常见的距离测量开始,即欧氏距离。它是一种最好的距离测量方法,可以解释为连接两点的线段长度。
这个公式相当简单,因为距离是根据使用勾股定理的点的笛卡尔坐标计算出来的。
缺点
虽然这是一种常见的距离测量方法,但欧几里得距离并不是尺度不变的,这意味着计算出的距离可能会根据特征的单位而有所偏斜。通常情况下,在使用这种距离测量之前,需要对数据进行归一化。
此外,随着数据维度的增加,欧几里得距离的作用就越小。这与维度的诅咒有关,它涉及到高维空间的概念,并不像我们直观地期望的那样,从二维或三维空间中发挥作用。
用例
当你有低维数据,并且向量的大小很重要,需要测量时,欧氏距离的效果非常好。如果在低维数据上使用欧氏距离,kNN和HDBSCAN等方法就会显示出很好的效果。
虽然已经开发了许多其他的测量方法来解释欧氏距离的缺点,但它仍然是最常用的距离测量方法之一,这是有充分理由的。它使用起来非常直观,实现起来也很简单,并且在许多用例中都显示出了很好的效果。
2. 余弦相似性
余弦相似性经常被用来抵消欧几里得距离的高维度问题。余弦相似性只是两个向量之间角度的余弦。如果将它们归一化为都有长度为1的向量,它的内积也相同。
两个方向完全相同的向量的余弦相似度为1,而两个方向截然相反的向量的相似度为-1,请注意,它们的大小并不重要,因为这是方向的量度。余弦相似度公式为:
缺点
余弦相似性的一个主要缺点是不考虑向量的大小,只考虑其方向。在实际应用中,这意味着值的差异没有被完全考虑。以推荐系统为例,那么余弦相似性并没有考虑到不同用户之间的评分等级差异。
用例
当我们有高维数据且向量的大小并不重要时,我们经常使用余弦相似度。对于文本分析来说,当数据用字数来表示时,这种测量方法是很常用的。
例如,当一个词在一个文档中出现的频率高于另一个文档时,这并不一定意味着一个文档与该词的关系更大。可能是文档的长度不均匀,计数的大小就不那么重要了。那么,我们最好是使用不考虑大小的余弦相似性。
3. 汉明距离
汉明距离是指两个向量之间相差的数值。它通常用于比较两个长度相等的二进制字符串。它也可以用来比较字符串之间的相似度,计算彼此不同的字符数。
缺点
正如你所预料的,当两个向量的长度不相等时,汉明距离很难使用。你会希望将相同长度的向量相互比较,以了解哪些位置不匹配。
而且,只要它们不同或相等,它就不考虑实际值。因此,当幅度是一个重要的衡量标准时,不建议使用这个距离衡量。
用例
典型的使用情况包括在计算机网络上传输数据时的纠错/检测。它可以用来确定二进制字中的失真位数,以此来估计错误。
此外,你还可以使用汉明距离来测量分类变量之间的距离。
4. 曼哈顿距离
曼哈顿距离,通常被称为出租车距离或城市街区距离,计算实值向量之间的距离。想象一下,在统一的网格上描述物体的向量,如棋盘。
曼哈顿距离则是指两个向量之间的距离,如果它们只能移动直角。计算距离时不涉及对角线的移动。曼哈顿距离公式为: