1 毕达哥拉斯定理和余弦定理
1.1 毕达哥拉斯定理(勾股定理)
对于 毕达哥拉斯定理(勾股定理) 大家应该都比较熟悉,在一个直角三角形中,两条 直角边的平方之和 等于 斜边的平方
例如一个直角三角形两个直角边分别是 a 和 b, 斜边为 c,其数学表达式可以写为:
a 2 + b 2 = c 2 a^2 + b^2 = c^2 a2+b2=c2
1.2 从毕达哥拉斯定理(勾股定理)到余弦定理
那么,我们可以很自然的推导出 ab 夹角是锐角和钝角的情况,如下表所示:
ab夹角 | 表达式 |
---|---|
< 90度 | a 2 + b 2 − c 2 > 0 a^2 + b^2 - c^2 > 0 a2+b2−c2>0 |
= 90度 | a 2 + b 2 − c 2 = 0 a^2 + b^2 - c^2 = 0 a2+b2−c2=0 |
> 90度 | a 2 + b 2 − c 2 < 0 a^2 + b^2 - c^2 < 0 a2+b2−c2<0 |
将上述表达式除以 2ab 消除边长对计算结果的影响,使计算结果落在 -1 - 1之间,由此我们便从毕达哥拉斯定理出发得到了余弦定理的公式
cos γ = a 2 + b 2 − c 2 2 a b \cos\gamma=\frac{a^2+b^2-c^2}{2ab} cosγ=2aba2+b2−c2
2.向量距离和夹角余弦的计算
机器学习中常用的向量距离和夹角余弦的计算使用上述两个公式便可以很容易的计算出来。
本文中关于 向量的距离 仅仅讨论 欧氏距离
2.1 向量的距离计算
2.1.1 以二维空间为例推导
假设有两个二维向量 ( x 1 , x 2 ) , ( y 1 , y 2 ) (x_1, x_2) , (y_1, y_2) (x1,x2),(y1,y2),要计算这两个向量之间的欧式距离即为计算下图中 c 的长度,依据勾股定理便能轻松计算
a = y 1 − x 1 b = x 2 − y 2 带入毕达哥拉斯定理: c = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 a = y_1 - x_1 \\ b = x_2 - y_2 \\ 带入毕达哥拉斯定理:\\ c = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2} a=y1−x1b=x2−y2带入毕达哥拉斯定理:c=(x1−y1)2+(x2−y2)2
2.1.2 扩展到多维
E D ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 ED(x,y)=\sqrt{\sum_{i=1}^n\left(x_i-y_i\right)^2} ED(x,y)=i=1∑n(xi−yi)2
2.2 向量夹角余弦的计算
2.2.1 以二维空间为例推导
如下图所示,只要将 a, b, c的值带入 cos γ = a 2 + b 2 − c 2 2 a b \cos\gamma=\frac{a^2+b^2-c^2}{2ab} cosγ=2aba2+b2−c2 即可
a = x 1 2 + x 2 2 b = y 1 2 + y 2 2 c = ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 a = \sqrt{x_1^2 + x_2^2} \\ b = \sqrt{y_1^2 + y_2^2} \\ c = \sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2} a=x12+x22b=y12+y22c=(x1−y1)2+(x2−y2)2
带入 cos γ = a 2 + b 2 − c 2 2 a b \cos\gamma=\frac{a^2+b^2-c^2}{2ab} cosγ=2aba2+b2−c2 :
cos γ = x 1 2 + x 2 2 2 + y 1 2 + y 2 2 2 − ( x 1 − y 1 ) 2 + ( x 2 − y 2 ) 2 2 2 ∗ x 1 2 + y 1 2 ∗ x 2 2 + y 2 2 \cos\gamma = \cfrac{ {\sqrt{x_1^2 + x_2^2}}^2 + {\sqrt{y_1^2 + y_2^2}}^2 - {\sqrt{(x_1 - y_1)^2 + (x_2 - y_2)^2}}^2}{2*\sqrt{x_1^2 + y_1^2}*\sqrt{x_2^2 + y_2^2}} cosγ=2∗x12+y12∗x22+y22x12+x222+y12+y222−(x1−y1)2+(x2−y2)22
化简后得到:
cos γ = x 1 y 1 + x 2 y 2 ( x 1 2 + x 2 2 ) ( y 1 2 + y 2 2 ) \cos\gamma =\cfrac{x_1 y_1 + x_2 y_2} {\sqrt{(x_1^2+x_2^2)(y_1^2 + y_2^2)}} cosγ=(x12+x22)(y12+y22)x1y1+x2y2
2.2.1 扩展到多维
c o s γ = ∑ i = 1 n ( x i × y i ) ∑ i = 1 n x i 2 × ∑ i = 1 n y i 2 \mathrm{ cos } γ =\frac{\sum_{i=1}^n(x_i\times y_i)}{\sqrt{\sum_{i=1}^nx_i^2\times\sum_{i=1}^ny_i^2}} cosγ=∑i=1nxi2×∑i=1nyi2∑i=1n(xi×yi)