天天看点

机器学习里的欧氏距离

“远在天边,近在眼前”,距离是一个需要定义的概念,对距离进行量化需要一个合适的坐标参考体系。在诗句里,距离可以很浪漫,“世界上最遥远的距离,不是生与死的距离,不是天各一方,而是,我就站在你的面前,你却不知道我爱你”。在机器学习里,距离是严谨的,需要一个精确的公式来计算。

许多机器学习的常见算法都需要用到距离函数,即用于计算两个不同观测(obs)之间的距离。以癌症组织的转录组测序数据为例,不同的癌症样本即不同的观测,两个样本间的距离越短,意味着它们之间越相似,在各种非监督聚类算法中更容易被归为同一类。距离函数五花八门,欧氏距离应该算得上其中“最简单”和“最直观”的距离函数了。

机器学习里的欧氏距离

在数学上,欧氏距离是欧氏空间里两点间的直线距离。在一个二维空间里,两个点p1和p2的坐标分别为(x1, y1), (x2, y2)。那么p1和p2的距离d(p1, p2)等于sqrt((x1-x2)2+(y1-y2)2)。同理,在一个三维空间里,两个点p1和p2的坐标分别为(x1, y1), (x2, y2) , (z2, z2)。那么p1和p2的距离d(p1, p2)等于sqrt((x1-x2)2+(y1-y2)2+(z1-z2)2)。简单的说,在二维和三维空间里,两个点间的距离就是它们在欧氏空间里的真实距离。事实上,两个数据点的情形就是毕达哥拉斯定理用两个直角边计算斜边的公式。

现实中,我们的数据维度往往高于三维。对于n维空间里的两个点p1和p2,它们的坐标分别为(p11, p12, …, p1n), (p21, p22, …, p2n)。这两个点的欧氏距离可以用如下公式定义:

机器学习里的欧氏距离

这种距离公式有什么用呢?在非监督机器学习算法k-means聚类中,我们事先并不知道我们的观测(obs)应该属于哪个类别。距离公式对于这样的场景尤为重要。通常,我们随机选择n个数据中心,作为n个不同类别的“中心”;随后,其他观测将通过欧式距离公式定义的距离“就近”被分配到不同类别中。新的中心被计算,观测与新中心的距离重新计算,类别重新定义,不断迭代这个过程直至最终结果不再改变。

机器学习里的欧氏距离

欧氏距离只是“一棵树”,它之外还有一片森林。感兴趣的可以安装R包philentrophy,里面有46种不同的距离算法可以调用。

机器学习里的欧氏距离

参考文献

1.Drost HG. Philentropy: Information Theory and Distance Quantification with R. Journal of Open Source Software (2018).<doi:10.21105/joss.00765>

2.https://www.brandidea.com/kmeans.html

机器学习里的欧氏距离

继续阅读