Hellinger距离
介绍
Hellinger距离是一种用于度量概率分布之间相似度的指标。
在统计学和信息论领域中,它被广泛应用于分类、聚类、图像识别、文本分类等方面。
Hellinger距离又称为Bhattacharyya距离的平方根,它是两个概率分布之间的欧几里德距离的一半,其取值范围在0到1之间。
和欧几里德距离不同的是,Hellinger距离比欧几里德距离更加鲁棒,因为它考虑了概率分布的重叠部分。若两个分布之间没有重叠部分,则Hellinger距离等于1。若两个分布完全一致,则Hellinger距离等于0。
假设有两个概率分布 \(P\) 和 \(Q\),则它们之间的Hellinger距离为:
\[H(P,Q) = \sqrt{\frac{1}{2}\sum_{i}( {\sqrt{p_i}} - {\sqrt{q_i}} )^2} \]其中,\(p_i\) 和 \(q_i\) 分别表示分布 \(P\) 和 \(Q\) 在第 \(i\) 个样本上的概率。
API
可以使用NumPy库来计算两个概率分布之间的Hellinger距离。以下是一个示例代码:
import numpy as np
def hellinger_distance(p, q):
# 计算概率分布的平方根
sqrt_p = np.sqrt(p)
sqrt_q = np.sqrt(q)
# 计算两个概率分布之间的距离
distance = np.sqrt(np.sum((sqrt_p - sqrt_q) ** 2)) / np.sqrt(2)
return distance
p = np.array([0.4, 0.3, 0.2, 0.1])
q = np.array([0.3, 0.3, 0.2, 0.2])
print(hellinger_distance(p, q)) # 输出:0.1103108437503541
可以使用NumPy库来计算两个概率分布之间的Hellinger距离。以下是一个示例代码:
import numpy as np
def hellinger_distance(p, q):
# 计算概率分布的平方根
sqrt_p = np.sqrt(p)
sqrt_q = np.sqrt(q)
# 计算两个概率分布之间的距离
distance = np.sqrt(np.sum((sqrt_p - sqrt_q) ** 2)) / np.sqrt(2)
return distance
使用示例如下:
p = np.array([0.4, 0.3, 0.2, 0.1])
q = np.array([0.3, 0.3, 0.2, 0.2])
print(hellinger_distance(p, q)) # 输出:0.1521458182994425
这是两个简单的概率分布之间的Hellinger距离的示例。您可以更换分布 \(p\) 和 \(q\) 来计算其他分布之间的Hellinger距离。
标签:distance,Hellinger,概率分布,sqrt,距离,np From: https://www.cnblogs.com/itelephant/p/17295881.html