机器学习领域常常会遇到求解相似度的问题,通常可以转化为对距离的求解,最常用的是对“向量”的距离求解。比如,求解某物品A和某物品B之间的相似度,可以收集它们共有特征,构建特征向量a和b,然后求解这两向量之间的距离,表示它们相似程度。下面介绍一些常用的求解距离的方法。
方法一:欧式距离
欧式距离表示两点之间的直线距离,使用的较多。
(1)二维平面上两个向量a(x1,x2),b(y1,y2)的欧式距离可以写为:
(2)n维空间上两个向量a(x1,x2,x3.....xn),b(y1,y2,y3.....yn)的欧式距离可以写为:
方法二:夹角余弦值
(1)二维平面上两向量a(x1,x2),b(y1,y2)的夹角余弦值可以写为:
(2)n维空间上两向量a(x1,x2,x3.....xn),b(y1,y2,y3.....yn)的夹角余弦值可以写为:
方法三:曼哈顿距离
曼哈顿距离也叫曼哈顿街区距离,可以理解为从一点到另外一点的网格距离。
(1)二维平面上两点a(x1,x2),b(y1,y2)的曼哈顿距离可以写为:
(2)n维空间上两点a(x1,x2,x3.....xn),b(y1,y2,y3.....yn)的曼哈顿距离可以写为:
方法四:切比雪夫距离
切比雪夫距离:各对应坐标数值差的最大值。
(1)二维平面上两向量a(x1,x2),b(y1,y2)的切比雪夫距离可以写为:
(2)n维空间上两向量a(x1,x2,x3.....xn),b(y1,y2,y3.....yn)的切比雪夫距离可以写为:
方法五:汉明距离
两个等长字符串之间的汉明距离 = 两个字符串对应位置的不同字符个数。
字符a=123456,字符b=124456,a与b之间的汉明距离为1;
字符a=mentor,字符b=monter,a与b之间的汉明距离为2.
方法六:相关系数
(1) 相关系数的定义
相关系数是衡量随机变量X与Y相关程度的一种方法,相关系数的取值范围是[-1,1]。相关系数的绝对值越大,则表明X与Y相关度越高。当X与Y线性相关时,相关系数取值为1(正线性相关)或-1(负线性相关)。
(2)相关距离的定义
方法七:闽可夫斯基距离
闵氏距离是一组距离的定义。
(1) 闵氏距离的定义
两个n维变量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:
其中p是一个变参数。
当p=1时,就是曼哈顿距离
当p=2时,就是欧氏距离
当p→∞时,就是切比雪夫距离
根据变参数的不同,闵氏距离可以表示一类的距离。
(2)闵氏距离的缺点
闵氏距离,包括曼哈顿距离、欧氏距离和切比雪夫距离,都有
两个明显的缺点
:(1)将各个分量的量纲(scale),也就是“单位”当作相同的看待了。(2)没有考虑各个分量的分布(期望,方差等)可能是不同的。举个例子:二维样本(每年旅行里程,每年吃冰激凌重量),其中旅行里程范围是0~15000,吃冰激凌重量是0~100,有三个样本:a(1100,10),b(180,50)。那么直接计算a与b之间的闵氏距离(无论是曼哈顿距离、欧氏距离或切比雪夫距离),相当于认为1公里旅行里程和1公斤冰激凌对预测结果同等重要,但事实通常并非如此。因此用闵氏距离来衡量这些样本间的相似度很有问题。
方法八. 标准化欧氏距离 (Standardized Euclidean distance )
标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。
因此样本集的标准化过程(standardization)用公式描述就是:
X为标准化前的值;m为均值;s为标准差。
经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
参考:凡人机器学习,博客:https://www.cnblogs.com/heaad/archive/2011/03/08/1977733.html