常见距离算法
版权声明:署名-非商业性使用-相同方式共享
距离算法用于衡量数据点之间的相似性或差异性,根据数据特性的不同,可以采用不同的度量方法。
一般而言,定义一个函数 $\text{dist}(x, y)$,若它是一个“距离度量”(distance measure),则需要满足以下基本性质:
- 非负性: $\text{dist}(x_i, x_j) \geq 0$;
- 同一性: $\text{dist}(x_i, x_j) = 0$ 当且仅当 $x_i = x_j$;
- 对称性: $\text{dist}(x_i, x_j) = \text{dist}(x_j, x_i)$;
- 三角不等式: $\text{dist}(x_i, x_j) \leq \text{dist}(x_i, x_k) + \text{dist}(x_k, x_j)$。
常见的有以下几种:
1. 欧氏距离 (Euclidean Distance)
- 定义: 两点在欧几里得空间中的直线距离。
- 公式: 对于点 $P = (p_1, p_2, \dots, p_n)$ 和 $Q = (q_1, q_2, \dots, q_n)$,欧氏距离为:
$$
d(P, Q) = \sqrt{\sum_{i=1}^n (p_i - q_i)^2}
$$ - 应用: 适用于连续数据,如KNN、K-Means等。
2. 曼哈顿距离 (Manhattan Distance)
- 定义: 两点在标准坐标系上的绝对轴距总和。
- 公式:
$$
d(P, Q) = \sum_{i=1}^n |p_i - q_i|
$$ - 应用: 适用于网格状路径,如城市街区距离。
3. 切比雪夫距离 (Chebyshev Distance)
- 定义: 两点在各坐标轴上的最大差值。
- 公式:
$$
d(P, Q) = \max_i |p_i - q_i|
$$ - 应用: 适用于需要衡量最大差异的场景,如棋盘上的移动。
4. 闵可夫斯基距离 (Minkowski Distance)
- 定义: 欧氏距离和曼哈顿距离的推广,通过参数 $p$ 控制距离类型。
- 公式:
$$
d(P, Q) = \left( \sum_{i=1}^n |p_i - q_i|^p \right)^{1/p}
$$ - 应用: 通过调整 $p$ 值适应不同场景。
- 特点:
-
p=1: 闵可夫斯基距离等同于曼哈顿距离。
-
p=2: 闵可夫斯基距离等同于欧氏距离。
$$
d(P, Q) = \left( \sum_{i=1}^n |p_i - q_i|^2 \right)^{1/2}
$$进一步简化为:
$$
d(P, Q) = \sqrt{\sum_{i=1}^n (p_i - q_i)^2}
$$ -
p→∞: 闵可夫斯基距离趋近于切比雪夫距离。
-
5. 汉明距离 (Hamming Distance)
- 定义: 两个等长字符串在相同位置上不同字符的数量。
- 公式:
$$
d(P, Q) = \sum_{i=1}^n \delta(p_i, q_i), \quad \delta(p_i, q_i) =
\begin{cases}
0 & \text{如果 } p_i = q_i \
1 & \text{如果 } p_i \neq q_i
\end{cases}
$$ - 应用: 用于编码理论、信息检索等。
6. 余弦相似度 (Cosine Similarity)
- 定义: 通过计算两个向量的夹角余弦值来衡量相似性。
- 公式:
$$
\text{cosine}(P, Q) = \frac{P \cdot Q}{|P| |Q|}
$$ - 应用: 适用于文本分析、推荐系统等。
7. 杰卡德距离 (Jaccard Distance)
- 定义: 衡量两个集合的差异,基于交集与并集的比例。
- 公式:
$$
d(P, Q) = 1 - \frac{|P \cap Q|}{|P \cup Q|}
$$ - 应用: 用于集合相似性比较,如文档相似性。
8. 马氏距离 (Mahalanobis Distance)
- 定义: 考虑数据分布的距离度量,适用于多维数据。
- 公式:
$$
d(P, Q) = \sqrt{(P - Q)^T S^{-1} (P - Q)}
$$
其中 $S$ 是协方差矩阵。 - 应用: 适用于需要考虑数据相关性的场景。
这些距离算法各有特点,选择时应根据具体问题和数据特性进行权衡。
Comments ()