在机器学习中,距离是一个非常形象并且常用的概念。在分类和聚类问题中,距离的作用尤为明显。除此之外,在回归问题,甚至自然语言处理问题上,距离也有其相应的应用。
除了距离之外,相似系数也是解决这一问题的方法之一,显而易见,距离和相似系数应该呈反比,距离越小越相似;距离越大越不同。距离主要是对不同的观测进行度量,相似系数主要是对不同的变量进行度量。但是,距离也可以衡量不同的变量,同理,相似系数也可以衡量不同的观测。
本文将介绍距离的定义,并详细介绍两种非常常用的距离:明可夫斯基距离和马氏距离。在后文中,我们将介绍相似系数。
距离定义
设两个n维向量x⃗=(x1,x2,⋯ ,xn)T\vec{x} = (x_1,x_2,\cdots,x_n)^Tx=(x1,x2,⋯,xn)T和y⃗=(y1,y2,⋯ ,yn)T\vec{y} = (y_1,y_2,\cdots,y_n)^Ty=(y1,y2,⋯,yn)T为两个观测,其所定义的距离一般需要满足三个条件:
非负性:d(x⃗,y⃗)≥0d(\vec{x},\vec{y}) ≥ 0d(x,y)≥0,d(x⃗,y⃗)=0d(\vec{x},\vec{y}) = 0d(x,y)=0当且仅当x⃗=y⃗\vec{x} = \vec{y}x=y对称性:d(x⃗,y⃗)=d(y⃗,x⃗)d(\vec{x},\vec{y}) = d(\vec{y},\vec{x})d(x,y)=d(y,x)三角不等式:假设存在另一个n维向量z⃗\vec{z}z,d(x⃗,y⃗)≤d(x⃗,z⃗)+d(z⃗,y⃗)d(\vec{x},\vec{y}) ≤ d(\vec{x},\vec{z}) + d(\vec{z},\vec{y})d(x,y)≤d(x,z)+d(z,y)
明可夫斯基距离
明可夫斯基距离是一类距离的总称。向量x⃗\vec{x}x和y⃗\vec{y}y之间的明可夫斯基距离定义为:
d(x⃗,y⃗)=[∑i=1n∣xi−yi∣q]1qd(\vec{x},\vec{y}) = [\sum_{i=1}^{n}|x_i-y_i|^q]^{\frac{1}{q} }d(x,y)=[i=1∑n∣xi−yi∣q]q1其中q>0q>0q>0。
明可夫斯基距离有三种特殊且常见的形式:
当q=1q=1q=1时,d(x⃗,y⃗)=∑i=1n∣xi−yi∣d(\vec{x},\vec{y}) = \sum_{i=1}^{n}|x_i-y_i|d(x,y)=∑i=1n∣xi−yi∣,称为绝对值距离,也被称为曼哈顿距离。当q=2q=2q=2时,d(x⃗,y⃗)=[∑i=1n∣xi−yi∣]12=(x⃗−y⃗)T(x⃗−y⃗)d(\vec{x},\vec{y}) = [\sum_{i=1}^{n}|x_i-y_i|]^\frac{1}{2} = \sqrt{(\vec{x}-\vec{y})^T(\vec{x}-\vec{y})}d(x,y)=[∑i=1n∣xi−yi∣]21=(x−y)T(x−y),称为欧式距离,也是最常用的一种距离。当q=∞q = \inftyq=∞,d(x⃗,y⃗)=max1<i<n∣xi−yi∣d(\vec{x},\vec{y}) = max_{1<i<n}|x_i - y_i|d(x,y)=max1<i<n∣xi−yi∣,称为切比雪夫距离。
在明考夫斯基距离中,qqq值越大,其受(较大的)异常值影响就越厉害。可以发现当q=∞q = \inftyq=∞时,切比雪夫距离将完全由最大的异常值决定。同理,欧式距离比绝对值距离受异常值的影响程度更高。
明考夫斯基距离可以说是生活中最最常见的一种距离,到那时它有一个非常大的缺点,那就是它会受到单位和数据变异程度的不同的影响。
举一个简单的例子,如果我们要统计一个单位所有人身高、体重和年龄,那么在统计身高的时候,使用“m”做单位,那么大家身高的变化应该集中在1.55-1.85之间;但是如果使用“cm”做单位,那么身高的变化就应该集中在155-185之间。这两个单位造成的数据变异程度(方差)不同,从而使得身高这个变量在后期计算距离的时候重要程度不同。显然,变异性更大的变量应该占据更加重要的地位,在本例中,选择以“cm”做单位会使得身高变量的重要性提高。
为了解决这个问题,我们引入马氏距离。
马氏距离
向量x⃗\vec{x}x和y⃗\vec{y}y之间的马氏距离定义为:
d(x⃗,y⃗)=(x⃗−y⃗)TS−1(x⃗−y⃗)d(\vec{x},\vec{y}) = \sqrt{(\vec{x}-\vec{y})^TS^{-1}(\vec{x}-\vec{y})}d(x,y)=(x−y)TS−1(x−y)其中,SSS代表x⃗\vec{x}x、y⃗\vec{y}y的协方差矩阵。
使用马氏距离最大的好处在于避免了单位不同以及数据变异程度的不同对计算造成的影响。
但是,马氏距离也有自己的缺点,协方差矩阵的计算在大规模数据中是困难的。尤其在聚类问题中,每一个类别中的观测都在不停变化导致协方差矩阵也在变化。