距离是数据挖掘的核心概念之一。在很多模型运用中(例如近邻算法),往往需要知道两个个体之间的距离是多少。更进一步说,还得能够解决一对个体相对另一对个体是否更相近等问题。这类问题的解决方法,会直接影响分类算法的结果。

关于距离的计算方式有 5 种,分别是:欧氏距离、曼哈顿距离、余弦距离、闵可夫斯基距离、切比雪夫距离。

欧式距离
**
欧式距离是最常用的距离公式,就是真实距离。也叫做欧几里得距离。在图像中画两个点,用直尺测量这两个点之间的距离,得到的结果就是欧氏距离。它其实是两个特征向量长度平方和的平方根。具体公式为:
image.png

曼哈顿距离
**
曼哈顿距离为两个特征在标准坐标系中绝对轴距之和(没有使用平方距离)。用公式表示就是:
image.png
余弦距离

余弦距离实际上计算的是两个向量的夹角,是在方向上计算两者之间的差异,对绝对数值不敏感。在兴趣相关性比较上,角度关系比距离的绝对值更重要,因此余弦距离可以用于衡量用户对内容兴趣的区分度。比如我们用搜索引擎搜索某个关键词,它还会给你推荐其他的相关搜索,这些推荐的关键词就是采用余弦距离计算得出的。也适用于解决数据异常值和数据稀疏问题。

image.png

下图分别是欧式距离、曼哈顿距离、余弦距离示意图。图中两个灰圆与白圆之间的距离是相等的。左图是欧氏距离,因此两个灰圆都落在以白圆为圆心的同一个圆的圆周上。中间这幅图表示的是曼哈顿距离,它指的是从灰圆到白圆所走的横向和纵向距离之和,测量时可以想象棋中车的走法。右图是余弦距离示意图,计算夹角之间的余弦值,忽略特征向量的长度。

闵可夫斯基距离
**
闵可夫斯基距离不是一个距离,而是一组距离的定义。对于 n 维空间中的两个点 x(x1,x2,…,xn) 和 y(y1,y2,…,yn) , x 和 y 两点之间的闵可夫斯基距离为:
image.png

其中 p 代表空间的维数,当 p=1 时,就是曼哈顿距离;当 p=2 时,就是欧氏距离;当 p→∞时,就是切比雪夫距离。切比雪夫距离计算就是这两个点坐标数值差的绝对值的最大值,用数学表示就是:max(|x1-y1|,|x2-y2|)。

采用哪种距离度量方法对最终结果有很大影响。例如,曼哈顿距离在某些情况下具有更高的稳定性,但是如果数据集中某些特征值很大,用曼哈顿距离的话,这些特征会掩盖其他特征间的邻近关系。余弦距离适用于特征向量很多的情况,但是它丢弃了向量长度所包含的在某些场景下可能会很有用的一些信息。