在机器学习的聚类中,我们通常需要使用距离来进行类的划分,或者比较不同类之间的各种距离,这里我们介绍西瓜书上所提出的一些距离计算方式。
首先介绍一下距离的一些性质:
西瓜书上给出了四条性质,第一个是非负性,这个好理解,一般来说,距离不会产生负值。下面三条我们结合着例子解释,如下图:
我们看图,这里我们就采用大家都熟悉的欧式距离来说明,第二条距离为零,那肯定就是一个点的距离,比如图中的A到A的距离;第三条的意思就是A到B的距离等于B到A的距离;第四条就是三角形的两边之和大于第三边,反应到图上就是B到C的距离小于B到A距离加A到C的距离。
接下来介绍距离公式,如图所示:
第一个公式其实是一个总结的公式,我们令p为2就得到大家熟悉的欧式距离了,至于p为1时的曼哈顿距离,我们看下图:
图中的绿色线就是欧式距离,蓝线、红线、黄线都是曼哈顿距离,并且它们的距离都相等,这是为什么呢?其实,曼哈顿距离就是两点的横坐标和纵坐标之差再相加,在现实情况中,曼哈顿距离可能会更常用,因为一般情况下两点之间总会有遮挡物,需要避开。
上述说的都是可以直接对“数”进行计算的,那有些不是数值型变量的,我们又该如何进行计算的呢?比如下图中的变量:
比如图中这种变量的,我们又该如何计算距离?西瓜书中给出了一种方案:
书中的公式看着好复杂呀,那我们先不看公式,我们先看一个例子:
我们看图中,假设说在颜色这个属性上,有红色和蓝色这两个值,一共有三个分类,我们看,第一个分类里面有七个红色,10个蓝色,红色总数有11个,蓝色总数有17,那在第一个类里面的距离计算就是红色的个数除以红色总数,蓝色的个数除以蓝色总数,就算出来了,以此类推,其他类也是这样,再把所有值相加就得出VDM了。
现在再回头看上述的公式,是不是就很简单啦?
最后我们再介绍两种变形的公式:
第一个公式就是对于那种既有数值变量也有列名变量混合的计算公式,就是两种公式混合起来。
第二个公式加了一个权重,可能会有某些样本值得重要程度不同,所以加了权重,其实和前面距离计算公式差不多。
ok,这篇就到这里啦,欢迎小伙伴们批评指正~(图片来源于西瓜书和网络)