马氏距离与欧式距离

1、欧式距离

d(x,y) = \sqrt{(x - y).(x - y)T},其中x,y为空间的两个点,表示的空间两个点的绝对距离,不考虑特征之间的相关性如何,而实际上特征之间是经常有相关性的。如果我们要衡量一个点到一个集合的距离,我们很可能就直接计算这个点x到这个集合的质心y的距离,那这样我们就忽略了这个集合的分布了

2、标准欧式距离

其中s为各个特征的方差,标准欧式距离没有考虑特征之间的相关性

3、马氏距离

d(x,y) = \sqrt{(x - y) \Sigma ^{-1}(x -y)T},其中\Sigma ^{-1}是协方差的逆矩阵,所以马氏距离可以理解为标准欧式距离的加强版

4、测试

构造数据,构建一个长轴为2短轴为1的椭圆

def make_ovals(a=2,b=1):
    points = []
    for i in range(400):
        t = np.random.choice(range(360))
        rr = np.random.random()
        x = rr * a * np.cos(t * np.pi / 180)
        y = rr * b * np.sin(t * np.pi / 180)
        points.append([x,y])
    return np.array(points)

测试两个点到质心的距离绿色的点x1(1,0)和黄色的点x2(0,0.8),通过计算欧式距离发现x2距离质心更近一些,但是计算马氏距离和标准欧式距离却又是x1距离的更近些

很直接的原因就是长轴的方差比较大,还有就是这个例子中x和y还有一点微弱相关性

5、变量之间的相关性对马氏距离的影响

按照相关系数的大小调整特征之间的协方差,然后在计算这两个点到质心之间的马氏距离得到下图

x轴为相关系数,y轴为马氏距离的大小,结果可以看到相关性系数的绝对值越大也就是特征之间的共线性越强,马氏距离越大,而特征之间共线性太强一般不是我们想要看到的,我们希望特征之间的最好是正交的,所以在进行马氏距离的计算之前我们最好先进行特征提取降维,可以用pca或者自编码,当特征之间的相关性都为0的时候,马氏距离则变成标准欧式距离

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值