目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离
欧氏距离公式:
-
一般而言,我们常见的欧式距离计算公式如下:
- a,b 对应的是两组不同的向量
- dist(a,b)=(a1−b1)2+(a2−b2)2+⋅⋅⋅(an−bn)2dist(a,b)=\sqrt{(a_1-b_1)^{2}+(a_2-b_2)^{2}+···(a_n-b_n)^{2}}dist(a,b)=(a1−b1)2+(a2−b2)2+⋅⋅⋅(an−bn)2
-
事实上对于上面的公式如果我们通过向量的角度来考虑,就会变成是下列形式:
- a,b 对应的是两组不同的向量
- dist(a,b)=dot(a,a)−2∗dot(a,b)+dot(b,b)dist(a,b) = \sqrt{dot(a,a)-2*dot(a,b)+dot(b,b)}dist(a,b)=dot(a,a)−2∗dot(a,b)+dot(b,b)
假设有下列矩阵AAA:
-
A=[a1a2a3b1b2b3]{A}= \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right]A=[a1b1a2b2a3b3]
-
为了凑出上面的公式:
-
先计算出 dot(A,A)dot(A,A)dot(A,A) -> AAT{AA^T}AAT,
- A‾=[a1a2a3b1b2b3][a1b1a2b2a3b3]=[(a1)2+(a1)2+(a1)2(a1)(b1)+(a2)(b2)+(a3)(b3)(a1)(b1)+(a2)(b2)+(a3)(b3)(b1)2+(b2)2+(b3)2]\overline{A} = \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right] \left[{\begin{array}{}{a{_1}}&{b{_1}} \\ {a{_2}}&{b{_2}} \\ {a{_3}}&{b{_3}} \end{array}}\right] = \left[{\begin{array}{}{(a{_1})^2+(a{_1})^2+(a{_1})^2}&{(a{_1})(b{_1})+(a{_2})(b{_2})+(a{_3})(b{_3})} \\{(a{_1})(b{_1})+(a{_2})(b{_2})+(a{_3})(b{_3})} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right]A=[a1b1a2b2a3b3]⎣⎡a1a2a3b1b2b3⎦⎤=[(a1)2+(a1)2+(a1)2(a1)(b1)+(a2)(b2)+(a3)(b3)(a1)(b1)+(a2)(b2)+(a3)(b3)(b1)2+(b2)2+(b3)2]
-
取A‾\overline{A}A对角线:
- A‾.diag()\overline{A}.diag()A.diag() = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]\left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right][(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
-
对对角线矩阵进行一些变换
- A‾1\overline{A}{_1}A1 = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]T\left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right]^T[(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]T [11]\left[{\begin{array}{}1 & 1\end{array}}\right][11]
- = [(a1)2+(a2)2+(a3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(b1)2+(b2)2+(b3)2]\left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(a{_1})^2+(a{_2})^2+(a{_3})^2} \\ {(b{_1})^2+(b{_2})^2+(b{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right][(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
- A‾2\overline{A}{_2}A2 = [11]T\left[{\begin{array}{}1 & 1\end{array}}\right]^T[11]T [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]\left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2}\end{array}}\right][(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]
- = [(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2]\left[{\begin{array}{}{(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \\ {(a{_1})^2+(a{_2})^2+(a{_3})^2} & {(b{_1})^2+(b{_2})^2+(b{_3})^2} \end{array}}\right][(a1)2+(a2)2+(a3)2(a1)2+(a2)2+(a3)2(b1)2+(b2)2+(b3)2(b1)2+(b2)2+(b3)2]
-
经过了上面的处理,我们就可以得出上述的公式了
- dist(A)=A‾1+A‾2−2A‾dist(A) = {\overline{A}{_1}} + {\overline{A}{_2}} - {\overline{2A}}dist(A)=A1+A2−2A
-