Frage

Ich bin mit der PRTools MATLAB-Bibliothek einiger Klassifizierer zu trainieren, Testdaten zu erzeugen und die Klassifizierer zu testen.

Ich habe die folgenden Angaben:

  • N: Gesamtanzahl der Testbeispiele
  • k: Anzahl der mis-Klassifizierung für jeden Sichter und Klasse

ich tun möchte:

berechnen und Plotten Bayesian posterior Verteilungen der unbekannten Wahrscheinlichkeiten mis-Klassifizierung (bezeichnet q), die, wie Wahrscheinlichkeitsdichtefunktionen über q ist selbst (so, P (q) wird über q aufgetragen werden, von 0 bis 1) .

Ich habe, dass die (mathematische Formeln, nicht MATLAB-Code!):

Posterior = Likelihood * Prior  / Normalization constant = 
P(q|k,N)  = P(k|q,N)   * P(q|N) / P(k|N)

Der Stand wird auf 1 gesetzt, so dass ich nur die Wahrscheinlichkeit und die Normierungskonstante muß berechnen.

Ich weiß, dass die Wahrscheinlichkeit, wie folgt ausgedrückt werden kann (wobei B (N, k) der Binomialkoeffizient):

P(k|q,N) = B(N,k) * q^k * (1-q)^(N-k)

... so der Normierungskonstante ist einfach ein Integral der hinteren oben, von 0 bis 1:

P(k|N) = B(N,k) * integralFromZeroToOne( q^k * (1-q)^(N-k) )

(Der Binomialkoeffizient (B (n, k)) weggelassen werden kann, obwohl, da sie sowohl erscheint in der Wahrscheinlichkeit und die Normierungskonstante)

Nun, ich habe gehört, dass das Integral für den Normalisierungskonstante der Lage sein sollte als eine Reihe berechnet werden ... so etwas wie:

k!(N-k)! / (N+1)!

Ist das richtig? (Ich habe einige Skriptum mit dieser Serie, kann aber nicht herausfinden, ob es für den Normierungskonstante integriert ist, oder für die allgemeine Verteilung der Fehlklassifikation (q))

Auch Hinweise sind willkommen, wie dies praktisch berechnen? (Factorials erstellen leicht Kürzungsfehler oder?) ... und, wie man praktisch die letzte Handlung berechnen (die hintere Verteilung über q, von 0 bis 1).

War es hilfreich?

Lösung

Ich habe wirklich nicht viel mit Bayes getan posteriori-Verteilungen (und nicht für eine Weile), aber ich werde versuchen zu helfen mit dem, was Sie gegeben haben. Zuerst

k!(N-k)! / (N+1)! = 1 / (B(N,k) * (N + 1))

und Sie können die Binomialkoeffizienten in Matlab mit nchoosek () berechnen, obwohl es in der Dokumentation sagt, dass es für große Koeffizienten Genauigkeit Probleme. Wie groß sind N und k?

Zweitens, nach Mathematica,

integralFromZeroToOne( q^k * (1-q)^(N-k) ) = pi * csc((k-N)*pi) * Gamma(1+k)/(Gamma(k-N) * Gamma(2+N))

wo csc() ist die Kosekans Funktion und Gamma() ist die Gamma-Funktion . Allerdings Gamma (x) = (x-1)! die wir in einem Moment verwenden. Das Problem besteht darin, dass wir eine Funktion Gamma (k-N) auf dem Boden und k-N negativ wird sein müssen. Doch die Reflexion Formel wird uns dabei helfen, damit wir am Ende mit :

= (N-k)! * k! / (N+1)!

Offenbar Ihre Notizen korrekt waren.

Andere Tipps

Let q die Wahrscheinlichkeit einer Fehlklassifikation sein. Dann ist die Wahrscheinlichkeit, dass Sie k Fehlklassifikationen in N Läufe beobachten würde, ist gegeben durch:

P (k | N, Q) = B (N, k) q ^ k (1-q) ^ (N-k)

Sie müssen dann einen geeigneten Stand für q annehmen, die zwischen 0 und 1 Konjugat vor Antritt der oben ist die Beta-Verteilung begrenzt ist. Wenn q ~ Beta(a,b) dann ist das posteriore auch eine Beta-Verteilung. Für Ihre Informationen der hintere ist:

f (q | -) ~ Beta (a + k, b + N-k)

Ich hoffe, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top