Calculer distribution a posteriori de mauvaise classification inconnue avec PRTools dans Matlab

StackOverflow https://stackoverflow.com/questions/2908923

Question

J'utilise le PRTools Matlab bibliothèque pour former des classificateurs, générer des données de test et de tester les classificateurs.

Je les détails suivants:

  • N: Nombre total d'exemples de test
  • k: Nombre de erreurs de classification pour chaque classificateur et classe

Je veux faire:

Calculer et tracer bayésienne postérieure distributions de probabilités inconnues de classification erronée (q notée), qui est, comme les fonctions de densité de probabilité sur q lui-même (si, P (q) est tracée sur q, de 0 à 1) .

J'ai que (formules mathématiques, pas de code Matlab!):

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

Le prieur est à 1, donc je ne dois calculer la constante de la probabilité et la normalisation.

Je sais que la probabilité peut être exprimée en (où B (N, k) est le coefficient binomial):

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

... de sorte que la constante de normalisation est simplement une partie intégrante de la partie postérieure au-dessus, de 0 à 1:

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

(Le coefficient binomial (B (n, k)) peut être omise si, comme il apparaît à la fois la probabilité et la constante de normalisation)

Maintenant, je l'ai entendu dire que l'intégrale de la constante de normalisation doit pouvoir être calculé comme une série ... quelque chose comme:

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

Est-ce exact? (J'ai quelques notes de cours avec cette série, mais ne peut pas savoir si elle est pour l'intégrale constante de normalisation, ou pour la distribution globale de classification erronée (q))

En outre, des conseils sont les bienvenus comment calculer pratiquement cela? (Factorielles créent facilement des erreurs de troncature droit?) ... et, comment calculer pratiquement le tracé final (la distribution postérieure sur q, de 0 à 1).

Était-ce utile?

La solution

J'ai vraiment pas fait beaucoup avec des distributions bayésienne postérieure (et non pendant un certain temps), mais je vais essayer d'aider avec ce que vous avez donné. Tout d'abord,

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

et vous pouvez calculer les coefficients binomiaux dans Matlab avec nchoosek () si elle ne dit dans la documentation qu'il peut y avoir des problèmes de précision pour les grands coefficients. Quelle est la taille N et k?

En second lieu, selon Mathematica,

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

csc() est la fonction cosécante et Gamma() est la fonction gamma . Cependant, Gamma (x) = (x-1)! que nous allons utiliser dans un instant. Le problème est que nous avons une fonction gamma (k-N) sur le fond et k-N sera négatif. Cependant, le formule de réflexion nous aider à cela pour que nous nous retrouvons avec :

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

Apparemment, vos notes sont correctes.

Autres conseils

Soit q la probabilité d'erreurs de classification. Ensuite, la probabilité que vous observer mis-classifications k dans les courses de N est donnée par:

  

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

Vous devez alors supposer un approprié avant de q qui est limitée entre 0 et 1. Un conjugué avant pour ce qui précède est la distribution bêta. Si q ~ Beta(a,b) alors la partie postérieure est également une distribution bêta. Pour votre information postérieure est:

  

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

L'espoir qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top