马氏距离
协方差与协方差矩阵
协方差计算的是两个随机变量之间线性相关程度。变量之间越相关,协方差越大。变量之间越无关,协方差越小。随机变量X,Y之间的协方差定义为
显然,计算同一个变量的协方差时等同于计算其方差。
通过样本来统计其协方差时,假设单个样本为m维列向量xi,将n个样本组合为一个m×n的矩阵X=(x1,x2,⋯,xn) 。X的数据可示例如下
注意这里求取的协方差是关于不同维度之间的,也就是一个维度(属性)可看作一个随机变量。比如维度1与维度2之间样本协方差的无偏估计可计算如下
两个变量时,它们的相关程度可以方便的用协方差表示。但在机器学习任务中,常常会处理具有多个属性的问题。每个属性都可看作一个随机变量,如果要考虑这些变量两两之间的关系,再挨个列出协方差太过麻烦。因此使用矩阵的形式将其组合起来,这就是协方差矩阵。
对于m维数据的样本集合,相当于有m个随机变量来描述其属性特点。计算这m维数据两两之间的协方差便得到了一个m×m的协方差矩阵。因此,协方差的具体含义可以理解为计算一组数据各个维度之间的相关性。
协方差矩阵是实对称矩阵,实对称矩阵有一个重要性质是可以正交对角化,即存在一个正交矩阵U,对X作一个正交变换Y=UTX后,使得协方差矩阵Σ满足
这意味着,只要对一组样本数据作一个正交变换,就能使得它变成维度之间两两无关的数据。这使得它在很多工程中成为了重要的理论基础。在下文马氏距离的推导中,就先根据这个原理讲数据变换到一个维度无关的线性空间。
同时,协方差矩阵还是半正定矩阵,因此Σ还可做Cholesky分解,即
其中,L 是下三角矩阵,LT 是它的转置。
马氏距离
假设单个样本为m维列向量xi,将n个样本组合为一个m×n的矩阵X=(x1,x2,⋯,xn) 。X的数据可示例如下
对于X第i个维度的样本均值可表示为μ(x)i 。μ(x) 是X的样本均值向量
则其协方差矩阵可表示为
对一组数据,可通过主成分分析等方法,确定其特征向量,按照特征向量进行坐标变换就能得到一个新坐标系下的样本,虽还是同一组样本,但这组样本的各个维度在变换后的坐标系下相互独立。用F来表示X旋转后的向量组成的矩阵(它们是相同的,不过坐标系不同),U表示变换矩阵。于是有
旋转后的均值为
得到
由于F经过正交变换后维度无关,因此其协方差矩阵是一个由其方差组成的对角矩阵
经过变换后的F是维度无关的,此时它的马氏距离相当于欧式距离。不过在求取欧式距离时,其变量的方差也会影响结果,所以要求标准化后的欧式距离。
通过推导过程可以发现,马氏距离计算中用到协方差矩阵的逆与计算欧氏距离中的标准化有某种关系。事实上马氏距离确实是尺度无关的一种度量,它通过对原数据进行线性变换,得到维度无关的数据之后,再计算其标准化后(去除方差影响)的欧式距离。进行线性变换的目的是去除维度之间相关性的影响。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术