机器学习 - 距离计算

在机器学习领域里,最核心的两种数值计算分别是:

  • 距离计算
  • 概率计算

今天Reinhard Hsu就来看看常见都有哪些常见的的距离计算。

欧式距离(Euclidean Metric)

欧几里得距离,用于计算两个点之间的实际距离,计算方法是使用毕达哥拉斯定理,也就是咱们中国的勾股定理。

对于二维平面上的两点,它们的欧式距离可以这样算:
$$
d=\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}
$$

曼哈顿距离(Manhattan distance)

想象下你站在曼哈顿街区,需要从一个十字路口走到另一个十字路口,无法穿过建筑,只能沿着街道走。

对于二维平面上的两点,它们的曼哈顿距离可以这样算:
$$
d=|x_1-x_2|+|y_1-y_2|
$$

海明距离(Hamming distance)

单词“advice”和“advise”之间的距离是多少呢?

距离是1,因为只需要替换一个字符,就可以将一个单词变换成另一个单词。

海明距离用于测量长度相等的字符串之间的距离。

编辑距离(Levenshtein distance,Edit distance)

单词“how”和“show”之间的距离是多少呢?

距离是1,因为只要进行1次下面的动作,就可以从一个词变换到另一个词:

  • 插入一个字母
  • 删除一个字母
  • 交换相邻两个字母的位置
  • 把一个字母替换成另一个字母

编辑距离常用于自然语言处理中的拼写检查,和文本相似性检查。

其它距离

  • 马氏距离(Mahalanobis distance)
  • 切比雪夫距离
  • 闵氏距离
  • 余弦距离
  • 杰卡德距离(Jaccard Distance)。

距离的分类

从距离的形式来划分的话,可以分为如下三类:

几何距离

直观地测量物体从一个点到另一个点有多远。包括欧几里得距离、余弦距离,都属于几何距离。

计算距离

包括曼哈顿距离、编辑距离(Levenshtein distance)。

统计距离

包括马氏距离(Mahalanobis distance)、杰卡德距离(Jaccard Distance)。

参考文献

【1】怎样写一个拼写检查器 by Peter Norvig

【2】大数据时代的算法

【3】Thoughtful Machine Learning with Python

时间: 2024-11-06 00:59:16

机器学习 - 距离计算的相关文章

距离计算

python种距离计算包括两种方式,一是用scipy.spatial.distance里面包括的距离很多 ['braycurtis', 'canberra', 'chebyshev', 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', 'mahalanobis', 'matching', 'minkowski', 'rogerstanimoto', 'russellrao', 'seuclidean', 'sokalmichene

重磅︱R+NLP:text2vec包简介(GloVe词向量、LDA主题模型、各类距离计算等)

词向量的表示主流的有两种方式,一种当然是耳熟能详的google的word2vec,还有一类就是GloVe.那么前面一类有三个开源的包,后面这一类我倒是看到得不多,恰好是在我关注了许久的一个包里面有,它就是text2vec啦.该包提供了一个强大API接口,能够很好地处理文本信息. 本包是由C++写的,流处理器可以让内存得到更好的利用,一些地方是用RcppParallel包进行并行化加乘,同时兼容各个系统的服务器.如果没有并行的地方,大家也可以自己用foreach包来自己加速. ----------

Touch事件详解及区别,触屏滑动距离计算

移动端有四个关于触摸的事件,分别是touchstart.touchmove.touchend.touchcancel(比较少用), 它们的触发顺序是touchstart-->touchmove-->touchend-->click,所以touch事件触发完成后会接着触发click事件,需要注意一下 ,阻止一下事件冒泡就可以了. touch事件可以产生一个event对象,这个event对象除基本的一些属性外还附带了三个额外的属性: touches 一个TouchList对象,包含当前所有屏

Touch事件及触屏滑动距离计算

移动端涉及图片轮播或者一些交互性的游戏时都会用到,毕竟移动端交互大多都靠手指. 移动端有四个关于触摸的事件,分别是touchstart.touchmove.touchend.touchcancel(比较少用), 它们的触发顺序是touchstart-->touchmove-->touchend-->click,所以touch事件触发完成后会接着触发click事件,需要注意一下 ,阻止一下事件冒泡就可以了. touch事件可以产生一个event对象,这个event对象除基本的一些属性外还附

经纬度 范围 距离 计算

private const double EARTH_RADIUS = 6378.137;//地球半径         private static double RAD = Math.PI / 180.0;        //获取两个经纬度之间的距离         public static double GetDistance(double lng1, double lat1, double lng2, double lat2)        {            double rad

【Python学习】指定两点地理位置经纬度的距离计算

指定两点地理位置经纬度的距离计算 1 #coding=utf-8 2 3 from math import * 4 5 # input Lat_A 纬度A 6 # input Lng_A 经度A 7 # input Lat_B 纬度B 8 # input Lng_B 经度B 9 # output distance 距离(km) 10 def calcDistance(Lat_A, Lng_A, Lat_B, Lng_B): 11 ra = 6378.140 # 赤道半径 (km) 12 rb =

PHP百度地图开发之距离计算的实例分享

/** * 计算两个坐标之间的距离(米) * @param float $fP1Lat 起点(纬度) * @param float $fP1Lon 起点(经度) * @param float $fP2Lat 终点(纬度) * @param float $fP2Lon 终点(经度) * @return int */ function distanceBetween($fP1Lat, $fP1Lon, $fP2Lat, $fP2Lon){ $fEARTH_RADIUS = 6378137; //角度

机器学习 - 基础知识 - 距离计算

1. 曼哈顿距离 二维平面两点a与b之间的曼哈顿距离:\[{d\mathop{{}}\nolimits_{{a-b}}={ \left| {x\mathop{{}}\nolimits_{{1}}-x\mathop{{}}\nolimits_{{2}}} \right| }+{ \left| {y\mathop{{}}\nolimits_{{1}}-y\mathop{{}}\nolimits_{{2}}} \right| }}\] 原文地址:https://www.cnblogs.com/zhon

百度地图距离计算,计算结果和调用百度的api一样

 var DEF_PI =Math.PI;// 3.14159265359 var DEF_2PI =2 *Math.PI;// 6.28318530712 var DEF_PI180 =Math.PI/ 180.0;// 0.01745329252 var DEF_R =6370996.81;// radius of earth // 利用弧夹角方式计算地图上两点之间的距离,和百度地图计算结果不一致 function GetShortDistance(lon1, lat1, lon2, l