Mahalanobis距离
来源:互联网 发布:杨氏模量实验数据图 编辑:程序博客网 时间:2024/05/19 23:12
Mahalanobis距离是表示数据的协方差距离。它是一种有效的计算两个未知样本集的相似度的方法。与欧氏距离不同的是它考虑到各种特性之间的联系
与欧氏距离不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。
举个例子,坐飞机从上海到北京和坐普快从上海到北京,由于速度的差异,会让人觉得距离也有变化,坐飞机可能觉得,好快啊,没多远,一下就到了,坐火车,时常会感觉好慢,怎么这么远。
再举个例子,小时候买菜都用杆秤,假如物品和秤砣恰好相等且分别放在秤的两端,那么提纽应该恰好在正中间。但随着物品的重量增大,而秤砣的重量不变,那么这时候,提纽就应该向物品一侧靠近,才能继续保持平衡。马氏距离,就是一个找到两个物体之间平衡点的方法。
对于一个均值为
协方差矩阵是方阵,其维度跟样本维度一样。
Mahalanbis距离与Euclidean距离类似,只不过它还需要除以空间的协方差矩阵,通过方差归一化,变量之间的关系便会更加符合实际情况。
对于两个变量,
对于多个列向量,协方差矩阵计算公式:
即,
如果协方差矩阵为单位矩阵,马氏距离就简化为欧氏距离;如果协方差矩阵为对角阵,其也可称为正规化的欧氏距离。
其中
opencv
计算协方差矩阵函数
void cvCalcCovarMatrix( const CvArr** vects,
int count,
CvArr* cov_mat,
CvArr* avg,
int flags
);
计算逆矩阵函数
double cvInvert( const CvArr* src,
CvArr* dst,
int method CV_DEFAULT =CV_LU
);
计算Mahalanobis距离:
double cvMahalanobis(const CvArr* vec1,
const CvArr* vec1,
CvArr* mat
);
Mahalanobis距离 = Euclidean距离 * 空间协方差矩阵的逆矩阵
计算Mahalanobis距离时,用cvInvert函数计算逆矩阵时,参数method做好用CV_SVD_SYM。使用该参数虽速度较慢,但可计算更精确的逆矩阵。
计算时间大部分由cvCalcCovarMatrix()消耗,所以稍微多花点时间计算精确的逆矩阵是明智的。
- Mahalanobis距离
- Mahalanobis距离
- 马氏距离(mahalanobis)
- Mahalanobis(马氏)距离
- Mahalanobis Distance (马氏距离)
- Mahalanobis Distance (马氏距离)
- Mahalanobis distance(马氏距离)
- Mahalanobis Metric 马氏距离
- opencv——Mahalanobis距离
- 马氏距离-Mahalanobis Distance
- Mahalanobis Distance(马氏距离)
- Mahalanobis距离 Vs. 欧氏距离
- Mahalanobis距离(马氏距离)
- Mahalanobis距离(马氏距离)
- 马氏距离(Mahalanobis距离)
- 马氏距离(Mahalanobis distances)
- OpenCV学习笔记(10)-Mahalanobis距离
- Mahalanobis距离(马氏距离)的“哲学”解释
- Scroller类的介绍
- 快速排序的C++实现代码
- 位运算基本操作总结
- 使用dubbo时applicationContext.xml报错解决办法
- DOM节点删除之detach()和remove()区别
- Mahalanobis距离
- CocoaPods创建公有和私有Pod库方法总结
- c语言版数据结构之线性表归并大概
- 编程艺术之旋转字符串
- 斯坦福机器学习视频笔记 Week6 关于机器学习的建议 Advice for Applying Machine Learning
- Linux内核内存管理中伙伴查找和检查
- Presentation 常用的承接句——技术分享、学术报告串联全场不尴尬
- mysql数据库中文乱码问题总结及解决手段
- Android复习-Acitivity的生命周期(一、正常情况下的各种回调)