In [ ]:
度量是集合中两个元素之间的距离函数,我们在机器学习中会不可避免得遇到度量的选择问题.

对于数字型的数据,最常用的度量包括:

1. 欧几里得距离,物理世界的直线距离,也就是2-范数诱导出的度量,所以有角标2,$\vert \vec a- \vec b \vert_2 =\sqrt{ \sum \limits_{i =1}^d \vert a_i-b_i \vert^2 }$,其中d为各个数据点的维度.

2. 欧几里得平方距离,是欧几里得距离的平方,$\vert \vec a- \vec b \vert_2^2 = \sum \limits_{i =1}^d \vert a_i-b_i \vert^2 $

3. 曼哈顿距离,我们可以想象田字形道路两点的距离,$\vert \vec a- \vec b \vert_1 = \sum \limits_{i =1}^d \vert a_i-b_i \vert $

4. 最大距离,也就是无限范数诱导出的度量,$\vert \vec a- \vec b \vert_\infty = \max \limits_{i =1}^d \vert a_i-b_i \vert $

5. 马氏距离考虑到向量分量之间的关系数学上用协方差矩阵表示,$\vert \vec a- \vec b \vert = \sqrt{ \{ \vec a - \vec b \}^T \times \Sigma^{-1}  \times \{ \vec a - \vec b \} } \vert $,其中 $\Sigma$为数据点所在的向量空间的分量之间的协方差矩阵.

对于文本或者非数字型的数据,我们使用编辑距离最常用的包括:

6. 汉明距离Hamming distance,也就是同样长度的两段字符串之间同一位置上不同字符的数量.

7. 莱温斯顿距离Levenshtein distance,就是两个字符串之间从一个变到另一个需要的最少的单字改变数.

好的度量选择往往是提高模型的效果的必要条件.实践过程中倍加注意.