机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance)

在统计中,巴氏距离(Bhattacharyya Distance)测量两个离散或连续概率分布的相似性。它与衡量两个统计样品或种群之间的重叠量的巴氏系数密切相关。巴氏距离和巴氏系数以20世纪30年代曾在印度统计研究所工作的一个统计学家A. Bhattacharya命名。同时,巴氏系数可以被用来确定两个样本被认为相对接近的,它是用来测量中的类分类的可分离性。

首先,我们先定义离散和连续情况下的巴氏系数:
离散值: B C ( p , q ) = ∑ p ( x ) q ( x ) 连续值: B C ( p , q ) = ∫ p ( x ) q ( x ) d x \begin{aligned} &\text{离散值:}BC(p, q)=\sum\sqrt{p(x)q(x)}\ &\text{连续值:}BC(p, q)=\int\sqrt{p(x)q(x)}\text{d}x \end{aligned}​离散值:B C (p ,q )=∑p (x )q (x )​连续值:B C (p ,q )=∫p (x )q (x )​d x ​

在得到了巴氏系数后巴氏距离被定义为:
D B ( p , q ) = − ln ⁡ ( B C ( p , q ) ) D_B(p, q)=-\ln(BC(p, q))D B ​(p ,q )=−ln (B C (p ,q ))

从公式可以看出,巴氏系数B C ( p , q ) BC(p, q)B C (p ,q )可以海林格距离联系起来,此时海林格距离可以被定义为:
H ( p , q ) = 1 − B C ( p , q ) H(p, q)=\sqrt{1-BC(p,q)}H (p ,q )=1 −B C (p ,q )​

接下来,我们来看一下求B C ( p , q ) BC(p, q)B C (p ,q )的Python实现以及求出B C ( p , q ) BC(p, q)B C (p ,q )后求解海林格距离和巴氏距离的Python实现:

def BC(p,q):
    import numpy as np
    p = np.array(p)
    q = np.array(q)
    return np.sum(np.sqrt(p * q))

def HellingerDistance(p, q):
    import numpy as np
    bc = BC(p,q)
    return np.sqrt(1 - bc)

def BhattacharyyaDistance(p, q):
    import numpy as np
    bc = BC(p,q)
    return np.log(bc)

Original: https://blog.csdn.net/hy592070616/article/details/122400635
Author: von Neumann
Title: 机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/614767/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球