程序员数学之距离度量
第1节 为什么需要距离
距离是为了将用户进行分类的(距离越小的他们越可能是同一类人,反之就不是)。
如何得到距离呢?
可以通过不同用户对相同事物的看法(如评分)等信息,然后求出他们的距离。
第2节 欧式距离
2.1 从电影评分开始讲起
假设只有两个用户,他们只看了一部电影(误杀)。
姓名 | 电影(误杀) |
---|---|
张三 | 4 |
李四 | 5 |
如何计算他们对电影评分的距离?
也就是说张三和李四之间的距离是1。
如果看了两部电影。
姓名 | 电影1(误杀) | 电影2(反贪风暴) |
---|---|---|
张三 | 4 | 8 |
李四 | 5 | 7 |
2.2 欧式距离
如果张三和李四一共看了n部电影,并且在每部电影上的评分分别是xi和yi分,那么张三和李四之间的距离是多少呢?
他们的距离可以总结为以下公式(欧式距离):
这个公式就是将距离从直线上的两点、平面上的两点、三维空间的两点或n维空间的两点之间的距离进行了归纳。
假设李四在最后两部电影上没有评分。
姓名 | 追龙 | 千与千寻 | 调音师 | 误杀 |
---|---|---|---|---|
张三 | 5 | 4 | 3 | 3 |
李四 | 4 | 3 | - | - |
王五 | 4 | 5 | 4 | 3 |
张三和李四的距离是:
张三和王五的距离是:
从计算结果来看,是不是说张三和李四的距离要比张三和王五的距离要近呢?
不能,原因在于参与评分的电影越多,可能距离就越大。
2.3 修正的欧式距离
修正的欧氏距离就是为了解决参与维数越多可能距离就越大问题。再次计算张三与李四或王五之间的距离:
张三和李四的距离:
张三和王五的距离:
修正的欧氏距离公式可以总结如下:
修改欧氏距离公式,具体要修正的是参与维度数量不一样造成的距离误差。这个误差是指,共同维数越高,算出来的距离越大。
2.4 权重
2.4.1 权重的意义
由于每部电影在影迷们的心里重要程度不一样,好的电影往往大家的评分都很接近,对于烂片大家的评分就很随意。出于这样的原因,我们采取的办法就是人为的给片子添加权重。权重越高的电影就越好看,反之就没有那么好看。
需要注意的是,所有参与计算的电影权重相加的和等于1。
假如,追龙、千与千寻、调音师是三部经典影片,他们的权重都是0.3,而误杀是烂片,权重是0.1。
姓名 | 追龙 | 千与千寻 | 调音师 | 误杀 |
---|---|---|---|---|
张三 | 5 | 4 | 3 | 3 |
王五 | 4 | 5 | 4 | 1 |
0.3 | 0.3 | 0.3 | 0.1 |
2.4.2 修正权重
假如参与共同评分的电影就只有两部,那么权重如何计算呢?
追龙 | 千与千寻 | 调音师 | 误杀 | |
---|---|---|---|---|
张三 | 5 | 4 | 3 | 3 |
李四 | 4 | 3 | - | - |
原始权重 | 0.3 | 0.3 | 0.3 | 0.1 |
修正权重 | 0.5 | 0.5 |
这就需要对权重进行归1化处理。修正权重的计算方式为:原始权重/所有参与计算的权重和。修正后的权重之和为1。
2.5 带有权重的欧式距离
修正欧式距离公式是权重欧式距离公式的一个特例,是在各个维度上的权重都一样且为1/n。
第3节 曼哈顿距离
3.1 为什么需要曼哈顿距离
先看一个场景,如下图:假如这是一个城市的地图,人通过网络打车的场景。那么车要去接人,司机应该怎么走呢?根据欧式距离(两点之间的直线距离)司机要斜着开车,这显然不可能(也就是说欧式距离在这种场景下不适用)。
3.2 曼哈顿距离
曼哈顿距离就是为了解决类似上述场景的距离,如何计算呢?
曼哈顿距离不仅仅只能计算两点间的距离,还能计算多维空间的距离。
第4节 海明距离
4.1 字符串的距离
4.2 信息编码的距离
海明距离更多的是使用在信息编码上。
海明距离的本质就是将异或操作的结果求和。
4.3 曼哈顿距离与海明距离
如果曼哈顿距离的每个维度要么取0要么取1,那就变成了海明距离。换句话说,海明距离是曼哈顿距离的一个特例。
第5节 长度衡量小结
第6节 角度衡量
用角度衡量两个点差异的时候,角度距离的取值范围为0°~180°
在欧式距离或曼哈顿距离中,长度距离范围为0~正无穷
海明距离中,长度距离范围为0~n(n为维度数量)
6.1 角度度量应用
假设有一个新闻网站,网名A、B、C在不同频道花费时间如下表格:
用户 | 军事频道花费时间 | 美容频道花费时间 |
---|---|---|
A | 20 | 1 |
B | 50 | 4 |
C | 2 | 5 |
问题:AB的距离近?还是AC的距离近?
假如用欧式距离计算。
AB之所以远是因为B上网的时间比较长,但是通过在两个频道花费的时间比例来看,AB应该更近。还有通常而言军事频道男生看得比较多,美容频道女生看得比较多。那么这就需要度量上网时间分配比例,而不是时间长度。
角度度量的距离,更多的是衡量在各个维度上的比例差异,而和绝对数值关系不大。
6.2 相似度
相似度越大,夹角越小,相似度越小,夹角越大。
也就是说相似度越大的,他们的距离就越近,越小的距离就越远。
计算AB、AC的相似度
用户 | 军事频道花费时间 | 美容频道花费时间 |
---|---|---|
A | 20 | 1 |
B | 50 | 4 |
C | 2 | 5 |
6.3 相似度公式
第7节 总结
距离 | 度量 | 补充 |
---|---|---|
欧式距离 | 两点(直线上、平面上、三维空间、n维空间)间的直线距离。 | 有两个修正版本 1、维度不一致 2、不同电影的权重问题 |
曼哈顿距离 | 两点(直线上、平面上、三维空间、n维空间)间的实际距离。比如:比如通过网络打车的场景。他们的距离并不是直线的。 | |
海明距离 | 度量不同位置的差异,不同为1,相同为0 | 1、它是一种特殊的曼哈顿距离。 2、常用于二进制编码,本质上是异或运算再求和 |
角度距离 | 度量两点分别直线经过原点形成的夹角。把夹角转换成相似度进行求解。 | 相似度的取值范围:[-1,1] 对直线长度不敏感。 主要考察在不同维度上比例的差异。 |