【python深度學習】KS,KL,JS散度 衡量兩組數據是否同分布


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM