![机器学习数学基础](https://wfqqreader-1252317822.image.myqcloud.com/cover/482/43738482/b_43738482.jpg)
1.5.4 角度
在欧几里得空间中定义了距离和向量长度(范数)之后,就可以继续定义角度,以平面几何空间为例,如图1-5-9所示,设有两个向量,并且围成了三角形
,其中角度
即为向量
和向量
之间的夹角。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_631.jpg?sign=1739272591-MIFBLRWJHiPEttdawD8creOtyrc2hNWo-0-684885dad572f37bfc405659be847e27)
图1-5-9
对于,依据边角关系中的余弦定理,得:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_633.jpg?sign=1739272591-HGoGdQ2hOGyWczDWAePnZxMjmNiWuZZU-0-7f8c7e5f22d2e3069a01445fe2a963bd)
其中,分别代表三角形的三条边的长度,
又分别是向量
的长度(即范数)。所以:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_637.jpg?sign=1739272591-ArZcCPJlVUzo4kOi5bFSqdfjRTVzUSps-0-dec08a0249f2e528cd1e41903fe6c894)
又因为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_638.jpg?sign=1739272591-F0xLJc4F8Y8B6jga0vWmPe8U2fbvuLzL-0-56840f6bf4dd36180d568305c93ec1ec)
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_639.jpg?sign=1739272591-fJpghTIVx3pqLymBqfrHvBHUMq3UxsQt-0-eefcfc26b95861d57aade56ad5707c36)
则:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_640.jpg?sign=1739272591-2GkBZzkdjeYX8isP66t0W3bSL9bOpfvF-0-bbcc13af2c54eff15203e3a3c30c1015)
以上我们在平面几何空间中推导出了两个向量的夹角余弦,此结论也适用于所有的欧几里得空间。
定义 设是欧几里得空间中的两个非零向量,它们的夹角余弦值为:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_642.jpg?sign=1739272591-cC7S3u9XAFiTZR8PEmc3LvXbpNahWv2k-0-3d61744610a62e1498be5af57f85a3dd)
如果把上述结论向内积空间推广,则角度的定义是:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_643.jpg?sign=1739272591-Z5zAOvK9GSjWGnhz3Tu3lbKFNZWckPln-0-c11101a262c69dea4afbada7c75f5597)
结合图1-5-9和上述对角度定义,不难发现,角度越小,两个向量越趋于一致(包括大小和方向)。可以考虑一种极端条件,当
时,
,即
,由此可得
。如果用距离来衡量,比如欧几里得距离,也是
。
当时,
,即
,在欧几里得空间中,即为
,以几何的方式表现就是两个向量相互垂直,也称正交(参阅3.4.1节)。例如我们已经熟知的三维几何空间的一个标准基
中的向量就是两两互相垂直的。显然,这样的向量是线性无关的。
前面用scipy.spatial.distance中的函数cityblock()计算了向量间的曼哈顿距离,此模块中也有与余弦值计算相关的函数cosine(),但是注意:所计算的并不是两个向量夹角的余弦值,而是
。
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_657.jpg?sign=1739272591-dy3STs3hxev1uIFrcO7QbFxxe6dIw0gK-0-06c478b6c37efef2f82b65d295c7afce)
上述代码中的两个数组所表示的向量是正交的,根据两个向量夹角余弦的定义,它们的夹角余弦值应该是0,但这里实际输出的结果是1。
余弦反映的是两个向量的夹角大小,在前面的讨论中也可以看出来,夹角越小,两个向量越趋同,因此可以用夹角的余弦来度量两个向量之间的相似程度(称为“余弦相似度”)。例如,一种特殊情况,当两个向量相同的时候,,
。夹角越大,两个向量的相似度越小。1.5.1节中探讨的向量间的距离与此异曲同工,基于距离分类,就是将更相似的向量归为一个类别。距离、余弦以不同方式度量向量的关系。
余弦相似度的最典型应用是判断文本内容的相似程度,这是自然语言处理(Natural Language Processing,NLP)中的一项计算。例如有如下两条文本:
● 文本1:数学是基础,基础很重要
● 文本2:数学很重要,要打牢基础
按照人的理解,以上两条文本虽然文字不完全相同,但表达的意思是一样的。那么,用余弦相似度来衡量,也会得到此结论吗?
为了计算余弦相似度,先根据1.1.1节所述,将两个文本向量化,如表1-5-1所示。
表1-5-1
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_660.jpg?sign=1739272591-wV2T4uVw0sqvXrja2LcZNZ64odpF6mLL-0-07e2b778c65e6a77c6c72d0f26fcc3e9)
从而可以用如下两个向量表示两条文本:
![](https://epubservercos.yuewen.com/39156C/23020656909779806/epubprivate/OEBPS/Images/txt001_661.jpg?sign=1739272591-lbg5Z69TEeymXzutBidqguQb98CLMriy-0-1a25883d98f4fbf6b3ab4a6ecaf369d1)
计算这两个向量夹角的余弦值:,即上述两个文本的相似性为0.7。当然,在真实的NLP项目中,一般要计算1.1.1节中提到的tf-idf的值。
关于相似度,是机器学习中一个重要话题,在5.5.3节,汇总了各种常见的相似度计算方法,敬请参阅。