计算数值之间的相关性(计算机如何理解事物的相关性-文档的相似度判断)
计算数值之间的相关性(计算机如何理解事物的相关性-文档的相似度判断)向量是相对标量而言,标量只是单个数字,没有方向性。向量也叫矢量,由一组数字构成,具有方向性。向量代表了事物的特征。我们都知道,计算机并没有思维,它只能理解数字。所以,如果想让计算机理解我们现实世界中的事物,必须先把现实事物转换成数字。空间向量模型假设,任何事物都可以转换成 N 维空间中的一个点 ,这个点称为 向量 ,然后通过计算 向量之间的距离或夹角 ,来判断向量的之间相关性,进而判断事物之间的相关性。什么是向量
公号:码农充电站pro
主页: https://codeshellme.github.io
生活中,我们经常会对比两个事物的 相关性 ,也可以叫做 相似度 。
- 如果一件事物与另一件事物的相似度比较高,那这两件事物的相关性就比较大。
- 如果一件事物与另一件事物的相似度比较低,那这两件事物的相关性就比较小。
人类会根据自己的经验,很容易的判断两件事物是否相似,或者相似度是多少。那如何让 计算机 也能够进行这样的判断呢?
1,空间向量模型我们都知道,计算机并没有思维,它只能理解数字。所以,如果想让计算机理解我们现实世界中的事物,必须先把现实事物转换成数字。
空间向量模型假设,任何事物都可以转换成 N 维空间中的一个点 ,这个点称为 向量 ,然后通过计算 向量之间的距离或夹角 ,来判断向量的之间相关性,进而判断事物之间的相关性。
- 向量之间的距离越大,事物就越不相关;距离越小就越相关。
- 向量之间的夹角越大,事物就越不相关;夹角越小就越相关。
什么是向量
向量代表了事物的特征。
向量是相对标量而言,标量只是单个数字,没有方向性。向量也叫矢量,由一组数字构成,具有方向性。
例如,用下图中的 x 表示向量,其中 n 表示向量的维度:
两个向量所对应的两点之间的距离就是向量的距离,距离可以描述不同向量在向量空间中的差异,也就是现实事物之间的差异。
常用的计算距离的方法有四种:
- 麦哈顿距离
- 欧式距离
- 切比雪夫距离
- 闵可夫斯基距离
其中使用最多的是欧氏距离,下面一一介绍。
麦哈顿距离
麦哈顿距离可以理解为街道距离,或者出租车距离。
可以看到下图中,从A 点到B 点,不管是走 1线路 还是 2线路 ,距离都是一样的,这个线路的距离就是麦哈顿距离。
二维空间中的两个点 A(x1 x2) 和 B(y1 y2) ,麦哈顿距离的计算公式为:
n 维空间中的两个点 A(x1...xn) 和 B(y1...yn) ,麦哈顿距离的计算公式为:
欧式距离
欧式距离也叫欧几里得距离,比较好理解,就是直线距离。
如下图,A 点到B 点的直线距离就是欧式距离。
对于二维空间中的两个点 A(x1 x2) 和 B(y1 y2) ,欧式距离的计算公式为:
对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,欧式距离的计算公式为:
切比雪夫距离
切比雪夫距离可以类比为在方格中走格子,怎样走的格子数最少。
如下图中,从A 格子走到B 格子,先斜线走,再直线走,最终走的 格子数 就是切比雪夫距离。
对于二维空间中的两个点 A(x1 x2) 和 B(y1 y2) ,切比雪夫距离的计算公式为:
上面公式的含义是, ∣x1 − y1∣ 和 ∣x2 − y2∣ 两者的最大者。
对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,切比雪夫距离的计算公式为:
闵可夫斯基距离
闵可夫斯基距离也叫做闵氏距离,它并不是一种单独的距离,而是上面三种距离的统一。
对于二维空间中的两个点 A(x1 x2) 和 B(y1 y2) ,闵可夫斯基距离的计算公式为:
对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,闵可夫斯基距离的计算公式为:
根据 p 取值的不同,闵可夫斯基距离表示不同的距离:
p=1
p=2
p
3,向量的长度
向量也是有大小的,向量的大小就是向量的长度。
向量的长度也叫 向量的模 ,它是向量所对应的 点到空间原点的距离 ,通常使用 欧氏距离 来表示向量的长度。
数学中有一个概念叫做 范数 ,范数常被用来衡量向量的长度。
范数有4 种,分别对应向量的4 种距离:
- L1 范数,用 ||x|| 表示,对应于麦哈顿距离。
- L2 范数,用 ||x|| 2 表示,对应于欧式距离。
- L∞ 范数,用 ||x|| ∞ 表示,对应于切比雪夫距离。
- Lp 范数,用 ||x|| p 表示,对应于闵可夫斯基距离。
向量的夹角经常用 余弦值 表示。
对于二维空间中的两个点 A(x1 x2) 和 B(y1 y2) ,余弦的计算公式为:
对于 n 维空间中的两点 A(x1...xn) 和 B(y1...yn) ,余弦的计算公式为:
夹角的余弦取值范围是 [-1 1] ,那么:
1
-1
5,向量距离与夹角的使用
我们可以将向量的距离与夹角展现在同一个 N 维坐标系中,如下:
向量的余弦取值范围是 [-1 1] ,余弦值越大,表示越相似,正好与相似度成正比。
对于向量之间的距离,通常用 欧式距离 ED表示, ED 越小,表示越相似,与相似度成反比,而且 ED 的取值范围非常大。
所以通常会将欧式距离进行 1/(ED 1) 归一化 处理,用 ED' 表示。 ED' 的取值范围是 [0 1] ,并且与相似度成正比:
ED'
ED'
6,如何判断文档的相似度
为了让计算机能够判断现实事物的相似度,我们引出了 空间向量 的概念。
下面我们来看如何使用空间向量,来判断 文档相似度 。
比如,现在我们有两个中文句子,要判断这两个句子的相似度:
- 句子1:我去过北京,也去过天安门。
- 句子2:我也去过北京,但没去过天安门。
要想将文档转换成向量,首先需要对文档进行分词。
分词
我们可以使用 jieba 对这两个句子进行分词,结果如下:
- 句子1:['我' '去过' '北京' '也' '去过' '天安门']
- 句子2:['我' '也' '去过' '北京' '但' '没' '去过' '天安门']
可以得到所有词的集合:
- 分词集合:['没' '但' '北京' '我' '去过' '天安门' '也']
计算每个句子的分词的词频:
- 句子1:{'没':0 '但':0 '北京':1 '我':1 '去过':1 '天安门':1 '也':1}
- 句子2:{'没':1 '但':1 '北京':1 '我':1 '去过':1 '天安门':1 '也':1}
从而可以得到词频向量:
- 句子1:[0 0 1 1 1 1 1]
- 句子2:[1 1 1 1 1 1 1]
上文中,我们介绍了,可以通过向量的 距离 或者 余弦夹角 来度量向量之间的相似度。这里我们使用余弦夹角来计算。我们知道 N 维空间的余弦公式为:
从而可以计算余弦夹角为:
可以看到,最终算出的余弦夹角为 0.85 ,比较接近 1 ,说明这两个句子还是很相近的。
7,总结本片文章主要介绍了以下几点:
- 要想让计算机理解现实世界中的事物,需要将其转换成 空间向量 的形式。
- 可以通过计算空间向量之间的 距离 或者 夹角 ,来衡量事物之间的相似度。
- 向量之间的夹角通常使用 余弦夹角值 。
- 向量之间的距离有4 种,分别是:麦哈顿距离欧式距离(最常用)切比雪夫距离闵可夫斯基距离
- 案例:如何使用空间向量模型判断文档相似度。