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),就是两个字符串之间从一个变到另一个需要的最少的单字改变数.
好的度量选择往往是提高模型的效果的必要条件.实践过程中倍加注意.