矩阵向量中两两间欧式距离计算

本文介绍了如何通过矩阵运算快速求解矩阵向量中两两之间的欧式距离,详细阐述了从欧氏距离公式到矩阵运算的转换过程,并提供了具体的计算步骤和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:希望通过的矩阵运算就能得出矩阵向量中两两之间的欧式距离
欧氏距离公式:
  • 一般而言,我们常见的欧式距离计算公式如下:

    • 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)=(a1b1)2+(a2b2)2+(anbn)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)2dot(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+A22A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值