Hellinger距離
介紹
Hellinger距離是一種用於度量概率分佈之間相似度的指標。
在統計學和信息論領域中,它被廣泛應用於分類、聚類、圖像識別、文本分類等方面。
Hellinger距離又稱爲Bhattacharyya距離的平方根,它是兩個概率分佈之間的歐幾里德距離的一半,其取值範圍在0到1之間。
和歐幾里德距離不同的是,Hellinger距離比歐幾里德距離更加魯棒,因爲它考慮了概率分佈的重疊部分。若兩個分佈之間沒有重疊部分,則Hellinger距離等於1。若兩個分佈完全一致,則Hellinger距離等於0。
假設有兩個概率分佈 \(P\) 和 \(Q\),則它們之間的Hellinger距離爲:
其中,\(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距離。