Domanda

Sto lavorando all'implementazione di un classificatore Naive Bayes. Programmazione dell'intelligenza collettiva introduce questo argomento descrivendo il Teorema di Bayes come:

Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)

Oltre ad un esempio specifico rilevante per la classificazione dei documenti:

Pr(Category | Document) = Pr(Document | Category) x Pr(Category) / Pr(Document)

Speravo che qualcuno potesse spiegarmi la notazione usata qui, cosa fare Pr(A | B) E Pr(A) Significare?Sembra una sorta di funzione, ma allora cosa fa la pipe ("|") significa, ecc?

È stato utile?

Soluzione

  • Pr (A | B) = probabilità di accadere dato che B è già successo
  • Pr (A) = probabilità per una happening

Ma quanto sopra è per quanto riguarda il calcolo della probabilità condizionale. Quello che vogliamo è un classificatore, che usa questo principio per decidere se qualcosa appartiene ad una categoria in base alla probabilità precedente.

http://en.wikipedia.org/wiki/Naive_Bayes_classifier per un esempio completo

Altri suggerimenti

Credo che abbiamo coperto sulle basi.

Pr(A | B) = Pr(B | A) x Pr(A)/Pr(B)

si legge: la probabilità di A dato B è uguale alla probabilità di B dato A volte la probabilità di una divisa per la probabilità di B. E 'usato di solito quando è possibile misurare la probabilità di B e si sta cercando di capire se B ci sta portando a credere in A. O, in altre parole, abbiamo veramente a cuore la a, ma siamo in grado di misurare in modo più diretto B, quindi cominciamo con quello che possiamo misurare.

Lasciatemi fare una derivazione che rende questo più facile per la scrittura del codice. Viene da Judea Pearl . Ho lottato con questo un po ', ma dopo mi sono reso conto di come Pearl aiuta a trasformare la teoria in codice, la luce accesa per me.

Corsi precedenti:

O(H) = P(H) / 1 - P(H)

Rapporto di Probabilità:

L(e|H) = P(e|H) / P(e|¬H)

posteriori Odds:

O(H|e) = L(e|H)O(H)

In inglese, stiamo dicendo che le probabilità di qualcosa che ti interessa (H per ipotesi) sono semplicemente il numero di volte che si trova qualcosa per essere vero diviso per i tempi a trovarlo, non per essere vero. Quindi, diciamo una casa viene derubato ogni giorno su 10.000. Ciò significa che si ha un 1 / 10.000 possibilità di essere derubati, senza ulteriori prove presa in considerazione.

Il prossimo sta misurando la prova che stai guardando. Qual è la probabilità di vedere la prova che stai vedendo quando la domanda è vera divisa per la probabilità di vedere la prova che stai vedendo quando la tua domanda non è vero. Diciamo che state ascoltando il tuo antifurto andare fuori. Come spesso si ottiene che l'allarme quando si suppone di andare fuori (qualcuno apre una finestra quando l'allarme è attivo) rispetto a quando non è dovuto andare via (il vento impostato l'allarme). Se si dispone di una probabilità del 95% di fissare un ladro scattare l'allarme ed un 1% di possibilità di qualcos'altro scattare l'allarme, allora avete un rischio di 95,0.

La vostra convinzione generale è solo la probabilità * gli odds a priori. In questo caso è:

((0.95/0.01) * ((10**-4)/(1 - (10**-4))))
# => 0.0095009500950095

Non so se questo lo rende più chiaro, ma tende ad essere più facile avere un codice che tiene traccia delle odds a priori, altro codice a guardare verosimiglianze, e un altro pezzo di codice per combinare queste informazioni .

Ho implementato in Python. E 'molto facile da capire perché tutte le formule per il teorema di Bayes sono in funzioni separate:

#Bayes Theorem

def get_outcomes(sample_space, f_name='', e_name=''):
    outcomes = 0
    for e_k, e_v in sample_space.items():
        if f_name=='' or f_name==e_k:
            for se_k, se_v in e_v.items():
                if e_name!='' and se_k == e_name:
                    outcomes+=se_v
                elif e_name=='':
                    outcomes+=se_v
    return outcomes

def p(sample_space, f_name):
    return get_outcomes(sample_space, f_name) / get_outcomes(sample_space, '', '')

def p_inters(sample_space, f_name, e_name):
    return get_outcomes(sample_space, f_name, e_name) / get_outcomes(sample_space, '', '')

def p_conditional(sample_space, f_name, e_name):
    return p_inters(sample_space, f_name, e_name) / p(sample_space, f_name)

def bayes(sample_space, f, given_e):
    sum = 0;
    for e_k, e_v in sample_space.items():
        sum+=p(sample_space, e_k) * p_conditional(sample_space, e_k, given_e)
    return p(sample_space, f) * p_conditional(sample_space, f, given_e) / sum

sample_space = {'UK':{'Boy':10, 'Girl':20},
                'FR':{'Boy':10, 'Girl':10},
                'CA':{'Boy':10, 'Girl':30}}

print('Probability of being from FR:', p(sample_space, 'FR'))
print('Probability to be French Boy:', p_inters(sample_space, 'FR', 'Boy'))
print('Probability of being a Boy given a person is from FR:', p_conditional(sample_space, 'FR', 'Boy'))
print('Probability to be from France given person is Boy:', bayes(sample_space, 'FR', 'Boy'))

sample_space = {'Grow' :{'Up':160, 'Down':40},
                'Slows':{'Up':30, 'Down':70}}

print('Probability economy is growing when stock is Up:', bayes(sample_space, 'Grow', 'Up'))

Pr (A | B): probabilità condizionale di A: cioè probabilità di A, dato che tutto quello che sappiamo è B

Pr (A): probabilità a priori di A

Pr è la probabilità, Pr(A|B) è la probabilità condizionata.

Controlla Wikipedia per i dettagli.

la pipe (|) significa "dato". La probabilità di A dato B è uguale alla probabilità di B in A x Pr (A) / Pr (B)

In base alla tua domanda posso consigliare vivamente che avete bisogno di leggere qualche libro di laurea sulla teoria della probabilità prima. Senza questo non si avanzare correttamente con il compito sul Naive Bayes Classificatore.

mi sento di raccomandare questo libro http://www.athenasc.com/probbook.html o guardare MIT OpenCourseWare .

Il tubo viene usato per rappresentare probabilità condizionale. Pr (A | B) = probabilità di un dato B

Esempio: Diciamo che non si sente bene e si naviga nel web per i sintomi. E internet si dice che se avete questi sintomi, allora si ha una malattia XYZ.

In questo caso: Pr (A | B) è quello che si sta cercando di scoprire, che è: La probabilità di dover XYZ dato che si dispone di alcuni sintomi.

Pr (A) è la probabilità di avere la malattia XYZ

Pr (B) è la probabilità di avere questi sintomi

Pr (B | A) è quello che si trova fuori da internet, che è: La probabilità di avere i sintomi dato che si dispone la malattia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top