So berechnen sie die kl-divergenz in python (mit beispiel)


In der Statistik ist die Kullback-Leibler-Divergenz (KL) eine Distanzmetrik, die den Unterschied zwischen zwei Wahrscheinlichkeitsverteilungen quantifiziert.

Wenn wir zwei Wahrscheinlichkeitsverteilungen haben, P und Q, schreiben wir die KL-Divergenz im Allgemeinen mit der Notation KL(P || Q), was „Divergenz von P von Q“ bedeutet.

Wir berechnen es nach folgender Formel:

KL(P || Q) = ΣP(x) ln (P(x) / Q(x))

Wenn die KL-Divergenz zwischen zwei Verteilungen Null ist, bedeutet dies, dass die Verteilungen identisch sind.

Wir können die Funktion scipy.special.rel_entr() verwenden, um die KL-Divergenz zwischen zwei Wahrscheinlichkeitsverteilungen in Python zu berechnen.

Das folgende Beispiel zeigt, wie Sie diese Funktion in der Praxis nutzen können.

Beispiel: Berechnung der KL-Divergenz in Python

Angenommen, wir haben die folgenden zwei Wahrscheinlichkeitsverteilungen in Python:

Hinweis : Es ist wichtig, dass die Wahrscheinlichkeiten jeder Verteilung eins ergeben.

 #define two probability distributions
P = [.05, .1, .2, .05, .15, .25, .08, .12]
Q = [.3, .1, .2, .1, .1, .02, .08, .1]

Wir können den folgenden Code verwenden, um die KL-Divergenz zwischen den beiden Verteilungen zu berechnen:

 from scipy. special import rel_entr

#calculate (P || Q)
sum(rel_entr(P, Q))

0.589885181619163

Die KL-Divergenz der P-Verteilung von der Q-Verteilung beträgt ungefähr 0,589 .

Beachten Sie, dass die in dieser Berechnung verwendeten Einheiten als Nats bezeichnet werden, was für Natural Unit of Information steht.

Wir würden also sagen, dass die KL-Divergenz 0,589 Nats beträgt.

Beachten Sie auch, dass die KL-Divergenz keine symmetrische Metrik ist. Das heißt, wenn wir die KL-Divergenz der Q-Verteilung von der P-Verteilung berechnen, erhalten wir wahrscheinlich einen anderen Wert:

 from scipy. special import rel_entr

#calculate (Q || P)
sum(rel_entr(Q, P))

0.497549319448034

Die KL-Divergenz der Q-Verteilung von der P-Verteilung beträgt ungefähr 0,497 Nats .

Hinweis : Einige Formeln verwenden den Logarithmus zur Basis 2, um die KL-Divergenz zu berechnen. In diesem Fall sprechen wir von Divergenz in Bezug auf Bits und nicht auf Nats.

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere gängige Vorgänge in Python ausführen:

So erstellen Sie eine Korrelationsmatrix in Python
So erstellen Sie eine Kovarianzmatrix in Python

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert