Pregunta

Estoy trabajando en una implementación de un clasificador Naive Bayes. Programación introduce inteligencia colectiva este tema describiendo el Teorema de Bayes como:

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

Así como un ejemplo específico relevante para la clasificación de documentos:

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

Yo estaba esperando que alguien podría explicarme la notación utilizada aquí, ¿qué hacer Pr(A | B) y Pr(A) media? Parece que algún tipo de función, pero luego lo que hace el tubo ( "|") media, etc?

¿Fue útil?

Solución

  • Pr (A | B) = Probabilidad de un suceso dado que ya ha ocurrido B
  • Pr (A) = Probabilidad de un suceso

Pero lo anterior es con respecto al cálculo de la probabilidad condicional. Lo que queremos es un clasificador, que utiliza este principio para decidir si algo pertenece a una categoría en función de la probabilidad anterior.

http://en.wikipedia.org/wiki/Naive_Bayes_classifier para un ejemplo completo

Otros consejos

creo que lo tenemos cubierto en lo básico.

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

lee: la probabilidad de A dado B es la misma que la probabilidad de veces que un B dada la probabilidad de A dividida por la probabilidad de B. Se utiliza generalmente cuando se puede medir la probabilidad de B y que están tratando de averiguar si B nos conduce a creer en A. O, en otras palabras, que realmente importa a, pero podemos medir B más directamente, así que vamos a empezar con lo que podemos medir.

Déjeme darle una derivación que hace esto para escribir código más fácil. Viene de Judea Pearl . Luché con esto un poco, pero después me di cuenta de lo perla nos ayuda a pasar de la teoría a código, la luz enciende por mí.

Las probabilidades previas:

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

Tasa de Riesgo:

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

Las probabilidades posteriores:

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

En Inglés, estamos diciendo que las probabilidades de que algo está interesado en (H) para la hipótesis son simplemente el número de veces que encuentre algo que es cierto dividido por las veces que resulta no ser cierto. Así, por ejemplo una casa es robado todos los días de cada 10.000. Eso significa que usted tiene una probabilidad de 1 / 10.000 de ser robado, y sin ninguna otra prueba que se considera.

La siguiente es la medición de la evidencia que está viendo. ¿Cuál es la probabilidad de ver la evidencia que se está viendo cuando su condición se cumple, dividido por la probabilidad de ver la evidencia que se está viendo en su pregunta no es cierto. Digamos que usted está escuchando la alarma antirrobo se apagan. ¿Con qué frecuencia se obtiene que la alarma cuando se supone que debe apagarse (alguien abre una ventana cuando la alarma está activada) frente cuando se supone que no debe apagarse (el viento hará saltar la alarma). Si usted tiene una probabilidad del 95% de un entorno antirrobo de la alarma y un 1% de posibilidades de ajuste de los demás algo de la alarma, entonces usted tiene una probabilidad de 95,0.

Su creencia general es simplemente la probabilidad * las probabilidades previas. En este caso es:

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

No sé si esto hace que sea más clara, pero tiende a ser más fácil tener un código que realiza un seguimiento de probabilidades previas, a otro código vistazo a las probabilidades, y una pieza más de código para combinar esta información .

Me han implementado en Python. Es muy fácil de entender, porque todas las fórmulas para el teorema de Bayes están en funciones separadas:

#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): La probabilidad condicional de A: es decir, la probabilidad de A, dado que todo lo que sabemos es B

Pr (A): probabilidad previa de A

Pr es la probabilidad, Pr (A | B). Es la probabilidad condicional

Compruebe wikipedia para más detalles.

la barra vertical (|) significa "dado". La probabilidad de A dado B es igual a la probabilidad de B dado A x Pr (A) / Pr (B)

Sobre la base de su pregunta puedo aconsejar encarecidamente que se necesita para leer algún libro de licenciatura en Teoría de la Probabilidad primero. Sin esto no avanzará correctamente con su tarea de Naive Bayes clasificador.

Yo le recomendaría este libro http://www.athenasc.com/probbook.html o mirar MIT OpenCourseWare .

El tubo se utiliza para representar la probabilidad condicional. Pr (A | B) = probabilidad de A dado B

Ejemplo: Digamos que usted no se siente bien y navegar por la web para los síntomas. Y el Internet le dice que si usted tiene estos síntomas, entonces usted tiene la enfermedad de XYZ.

En este caso: Pr (A | B) es lo que está tratando de averiguar, que es: La probabilidad de que habiendo XYZ Teniendo en cuenta que usted tiene ciertos síntomas.

Pr (A) es la probabilidad de tener la enfermedad XYZ

Pr (B) es la probabilidad de tener esos síntomas

Pr (B | A) es lo que se encuentra fuera de la Internet, que es: La probabilidad de tener los síntomas Dado que usted tiene la enfermedad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top