矩阵向量中两两间欧式距离计算[通俗易懂]

目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离

欧氏距离公式:

  • 一般而言,我们常见的欧式距离计算公式如下:

    • a,b 对应的是两组不同的向量
    • d i s t a , b ) = a 1 − b 1 ) 2 + a 2 − b 2 ) 2 + ⋅ ⋅ ⋅ a n − b n ) 2 dista,b)=\sqrt{a_1-b_1)^{2}+a_2-b_2)^{2}+···a_n-b_n)^{2}} dista,b)=a1b1)2+a2b2)2+anbn)2
  • 事实上对于上面的公式如果我们通过向量的角度来考虑,就会变成是下列形式:

    • a,b 对应的是两组不同的向量
    • d i s t a , b ) = d o t a , a ) − 2 ∗ d o t a , b ) + d o t b , b ) dista,b) = \sqrt{dota,a)-2*dota,b)+dotb,b)} dista,b)=dota,a)2dota,b)+dotb,b)

假设有下列矩阵 A A A:

  • A = [ a 1 a 2 a 3 b 1 b 2 b 3 ] {A}= \left[{\begin{array}{}{a{_1}}&{a{_2}}&{a{_3}}\\{b{_1}}&{b{_2}}&{b{_3}}\end{array}}\right] A=[a1b1a2b2a3b3]

  • 为了凑出上面的公式:

    • 先计算出 d o t A , A ) dotA,A) dotA,A) -> A A T {AA^T} AAT

      • A ‾ = [ a 1 a 2 a 3 b 1 b 2 b 3 ] [ a 1 b 1 a 2 b 2 a 3 b 3 ] = [ 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 ] \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)2a1)b1)+a2)b2)+a3)b3)a1)b1)+a2)b2)+a3)b3)b1)2+b2)2+b3)2]
    • A ‾ \overline{A} A对角线:

      • A ‾ . d i a g ) \overline{A}.diag) A.diag) = [ a 1 ) 2 + a 2 ) 2 + a 3 ) 2 b 1 ) 2 + b 2 ) 2 + b 3 ) 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)2b1)2+b2)2+b3)2]
    • 对对角线矩阵进行一些变换

      • A ‾ 1 \overline{A}{_1} A1 = [ a 1 ) 2 + a 2 ) 2 + a 3 ) 2 b 1 ) 2 + b 2 ) 2 + b 3 ) 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)2b1)2+b2)2+b3)2]T [ 1 1 ] \left[{\begin{array}{}1 & 1\end{array}}\right] [11]
      • = [ 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 ] \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)2b1)2+b2)2+b3)2a1)2+a2)2+a3)2b1)2+b2)2+b3)2]
      • A ‾ 2 \overline{A}{_2} A2 = [ 1 1 ] T \left[{\begin{array}{}1 & 1\end{array}}\right]^T [11]T [ a 1 ) 2 + a 2 ) 2 + a 3 ) 2 b 1 ) 2 + b 2 ) 2 + b 3 ) 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)2b1)2+b2)2+b3)2]
      • = [ 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 ] \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)2a1)2+a2)2+a3)2b1)2+b2)2+b3)2b1)2+b2)2+b3)2]
    • 经过了上面的处理,我们就可以得出上述的公式了

      • d i s t A ) = A ‾ 1 + A ‾ 2 − 2 A ‾ distA) = {\overline{A}{_1}} + {\overline{A}{_2}} – {\overline{2A}} distA)=A1+A22A

Published by

风君子

独自遨游何稽首 揭天掀地慰生平

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注