机器学习中的数学——距离定义(二十二):海林格距离(Hellinger Distance)

我们假设p p p和q q q是两个概率测度,并且它们对于第三个概率测度λ \lambda λ来说是绝对连续的,则p p p和q q q的海林格距离(Hellinger Distance)的平方被定义如下:
H 2 ( p , q ) = 1 2 ∫ ( d p d λ − d q d λ ) 2 d λ H^2(p,q)=\frac{1}{2}\int(\sqrt{\frac{\text{d}p}{\text{d}\lambda}}-\sqrt{\frac{\text{d}q}{\text{d}\lambda}})^2\text{d}\lambda H 2 (p ,q )=2 1 ​∫(d λd p ​​−d λd q ​​)2 d λ

这里的d p d λ \frac{\text{d}p}{\text{d}\lambda}d λd p ​和d q d λ \frac{\text{d}q}{\text{d}\lambda}d λd q ​分别是p p p和q q q的Radon–Nikodym微分。这里的定义是与λ \lambda λ无关的,因此当我们用另外一个概率测度替换λ \lambda λ时,只要p p p和q q q关于它绝对连续,那么上式就不变。为了简单起见,我们通常把上式改写为:
H 2 ( p , q ) = 1 2 ∫ ( d p − d q ) 2 d λ H^2(p,q)=\frac{1}{2}\int(\sqrt{\text{d}p}-\sqrt{\text{d}q})^2\text{d}\lambda H 2 (p ,q )=2 1 ​∫(d p ​−d q ​)2 d λ

为了在经典的概率论框架下定义Hellinger距离,我们通常将λ \lambda λ定义为Lebesgue度量,此时d p d λ \frac{\text{d}p}{\text{d}\lambda}d λd p ​和d q d λ \frac{\text{d}q}{\text{d}\lambda}d λd q ​就变为了我们通常所说的概率密度函数,那么可以用以下的积分形式表示Hellinger距离:
H 2 ( p , q ) = 1 2 ∫ ( d p d λ − d q d λ ) 2 d λ = 1 − ∫ d p d λ d q d λ d λ H^2(p,q)=\frac{1}{2}\int(\sqrt{\frac{\text{d}p}{\text{d}\lambda}}-\sqrt{\frac{\text{d}q}{\text{d}\lambda}})^2\text{d}\lambda=1-\int\sqrt{\frac{\text{d}p}{\text{d}\lambda} \frac{\text{d}q}{\text{d}\lambda}}\text{d}\lambda H 2 (p ,q )=2 1 ​∫(d λd p ​​−d λd q ​​)2 d λ=1 −∫d λd p ​d λd q ​​d λ

上述等式可以通过展开平方项得到,注意到任何概率密度函数在其定义域上的积分为1,根据柯西-施瓦茨不等式(Cauchy-Schwarz Inequality),Hellinger距离满足如下性质:
0 ≤ H ( p , q ) ≤ 1 0\leq H(p,q)\leq 1 0 ≤H (p ,q )≤1

对于两个离散概率分布p = ( p 1 , p 2 , ⋯ , p n ) p=(p_1, p_2, \cdots, p_n)p =(p 1 ​,p 2 ​,⋯,p n ​)和q = ( q 1 , q 2 , ⋯ , q n ) q=(q_1, q_2, \cdots, q_n)q =(q 1 ​,q 2 ​,⋯,q n ​),它们的Hellinger距离可以定义如下:
H ( p , q ) = 1 2 ∑ i = 1 n ( p i − q i ) 2 H(p, q)=\frac{1}{\sqrt{2}}\sqrt{\sum_{i=1}^n(\sqrt{p_i}-\sqrt{q_i})^2}H (p ,q )=2 ​1 ​i =1 ∑n ​(p i ​​−q i ​​)2 ​

上式也可以被看作两个离散概率分布平方根向量的欧几里得距离
H ( p , q ) = 1 2 ∣ ∣ p − q ∣ ∣ 2 H(p, q)=\frac{1}{\sqrt{2}}||\sqrt{p}-\sqrt{q}||_2 H (p ,q )=2 ​1 ​∣∣p ​−q ​∣∣2 ​

也可以写成:
1 − H 2 ( p , q ) = ∑ i = 1 n p i q i 1 – H^2(p, q)=\sum_{i=1}^n\sqrt{p_iq_i}1 −H 2 (p ,q )=i =1 ∑n ​p i ​q i ​​

下面我们来看一下海林格距离的Python实现:

def HellingerDistance(p, q):
    import numpy as np
    p = np.array(p)
    q = np.array(q)
    M = (p + q)/2
    return 1/np.sqrt(2)*np.linalg.norm(np.sqrt(p)-np.sqrt(q))

Original: https://blog.csdn.net/hy592070616/article/details/122394607
Author: von Neumann
Title: 机器学习中的数学——距离定义(二十二):海林格距离(Hellinger Distance)

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

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

(0)

大家都在看

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