KS(不需要兩組數據相同shape)
- 奇怪之處:有的地方也叫KL
- KS距離,相對熵,KS散度
- 當P(x)和Q(x)的相似度越高,KS散度越小
- KS散度主要有兩個性質:
(1)不對稱性
不對稱性盡管KL散度從直觀上是個度量或距離函數,但它並不是一個真正的度量或者距離,因為它不具有對稱性,即D(P||Q)!=D(Q||P)
(2)非負性
相對熵的值是非負值,即D(P||Q)>0
from scipy.stats import ks_2samp
beta=np.random.beta(7,5,1000)
norm=np.random.normal(0,1,1000)
ks_2samp(beta,norm)
- 原假設:beta和norm服從相同的分布。
JS散度(需要兩組數據同shape)
JS散度基於KL散度,同樣是二者越相似,JS散度越小。
- JS散度的取值范圍在0-1之間,完全相同時為0
- JS散度是對稱的
import numpy as np
import scipy.stats
p=np.asarray([0.65,0.25,0.07,0.03])
q=np.array([0.6,0.25,0.1,0.05])
q2=np.array([0.1,0.2,0.3,0.4])
def JS_divergence(p,q):
M=(p+q)/2
return 0.5*scipy.stats.entropy(p, M)+0.5*scipy.stats.entropy(q, M)
print(JS_divergence(p,q)) # 0.003093977084273652
print(JS_divergence(p,q2)) # 0.24719159952098618
print(JS_divergence(p,p)) # 0.0