Una explicación simple de la clasificación ingenua de Bayes

547

Me resulta difícil entender el proceso de Naive Bayes, y me preguntaba si alguien podría explicarlo con un simple proceso paso a paso en inglés. Entiendo que se necesitan comparaciones por tiempos ocurridos como una probabilidad, pero no tengo idea de cómo se relacionan los datos de entrenamiento con el conjunto de datos real.

Por favor, dame una explicación de qué papel juega el conjunto de entrenamiento. Estoy dando un ejemplo muy simple para las frutas aquí, como el plátano, por ejemplo.

training set---
round-red
round-orange
oblong-yellow
round-red

dataset----
round-red
round-orange
round-red
round-orange
oblong-yellow
round-red
round-orange
oblong-yellow
oblong-yellow
round-red
Jaggerjack
fuente
18
Es bastante fácil si entiendes el Teorema de Bayes. Si no ha leído sobre el teorema de Bayes, pruebe este enlace yudkowsky.net/rational/bayes .
Pinch
1
Por favor explique su ejemplo. para la primera línea de su conjunto de entrenamiento: ¿la ronda se clasifica como roja, o las variables redondas y rojas se clasifican como algo diferente? Si es lo último, ¿cuáles son las clasificaciones para cada entrada en su conjunto de entrenamiento?
K Mehta
22
NOTA: La respuesta aceptada a continuación no es un ejemplo tradicional para Naïve Bayes. Es principalmente una implementación de vecino más cercano. Leer en consecuencia.
chmullig
1
@Jaggerjack: la respuesta de RamNarasimhan está bien explicada que la respuesta aceptada.
Unmesha SreeVeni
2
Bueno, si uno ve un gráfico con algunos puntos que realmente no significa que sea KNN :) La forma de calcular las probabilidades depende de usted. Naive Bayes lo calcula usando el anterior multiplicado por la probabilidad, de modo que eso es lo que Yavar ha mostrado en su respuesta. Cómo llegar a esas probabilidades realmente no es importante aquí. La respuesta es absolutamente correcta y no veo ningún problema.
avinash shah

Respuestas:

672

Su pregunta, según tengo entendido, se divide en dos partes, la primera es que necesita una mejor comprensión del clasificador Naive Bayes y la segunda parte es la confusión que rodea al conjunto de entrenamiento.

En general, todos los algoritmos de aprendizaje automático deben estar capacitados para tareas de aprendizaje supervisadas como clasificación, predicción, etc., o para tareas de aprendizaje no supervisadas como la agrupación.

Durante el paso de entrenamiento, los algoritmos se enseñan con un conjunto de datos de entrada particular (conjunto de entrenamiento) para que luego podamos probarlos en busca de entradas desconocidas (que nunca han visto antes) para las que puedan clasificar o predecir, etc. (en caso de supervisión aprendizaje) en función de su aprendizaje. Esto es en lo que se basan la mayoría de las técnicas de Machine Learning como Redes Neuronales, SVM, Bayesian, etc.

Entonces, en un proyecto general de Aprendizaje automático, básicamente debe dividir su conjunto de entrada en un Conjunto de desarrollo (Conjunto de capacitación + Conjunto de prueba de desarrollo) y un Conjunto de prueba (o conjunto de evaluación). Recuerde que su objetivo básico sería que su sistema aprenda y clasifique las nuevas entradas que nunca antes han visto en el conjunto Dev o el conjunto de prueba.

El conjunto de prueba generalmente tiene el mismo formato que el conjunto de entrenamiento. Sin embargo, es muy importante que el conjunto de pruebas sea distinto del conjunto de entrenamiento: si simplemente reutilizamos el conjunto de entrenamiento como conjunto de prueba, entonces un modelo que simplemente memoriza su entrada, sin aprender cómo generalizar a nuevos ejemplos, recibiría engañosamente puntuaciones altas.

En general, por ejemplo, el 70% de nuestros datos se pueden usar como casos de conjunto de capacitación. También recuerde dividir el conjunto original en los conjuntos de entrenamiento y prueba al azar .

Ahora llego a su otra pregunta sobre Naive Bayes.

Para demostrar el concepto de clasificación Naïve Bayes, considere el siguiente ejemplo:

ingrese la descripción de la imagen aquí

Como se indicó, los objetos se pueden clasificar como GREENo RED. Nuestra tarea es clasificar los casos nuevos a medida que llegan, es decir, decidir a qué etiqueta de clase pertenecen, en función de los objetos existentes actualmente.

Dado que hay el doble de GREENobjetos RED, es razonable creer que un caso nuevo (que aún no se ha observado) tiene el doble de probabilidades de tener membresía en GREENlugar de hacerlo RED. En el análisis bayesiano, esta creencia se conoce como la probabilidad previa. Probabilidades anteriores se basan en la experiencia anterior, en este caso el porcentaje de GREENy REDobjetos, y utilizan a menudo para predecir los resultados antes de que ocurran.

Por lo tanto, podemos escribir:

Probabilidad previa deGREEN :number of GREEN objects / total number of objects

Probabilidad previa deRED :number of RED objects / total number of objects

Dado que hay un total de 60objetos, 40de los cuales son GREEN20 RED, nuestras probabilidades previas de pertenencia a la clase son:

Probabilidad previa paraGREEN :40 / 60

Probabilidad previa paraRED :20 / 60

Habiendo formulado nuestra probabilidad previa, ahora estamos listos para clasificar un nuevo objeto ( WHITEcircule en el diagrama a continuación). Dado que los objetos están bien agrupados, es razonable suponer que cuantos más GREEN(u RED) objetos estén cerca de X, es más probable que los nuevos casos pertenezcan a ese color en particular. Para medir esta probabilidad, dibujamos un círculo alrededor de X que abarca un número (para ser elegido a priori) de puntos, independientemente de sus etiquetas de clase. Luego calculamos el número de puntos en el círculo que pertenecen a cada etiqueta de clase. A partir de esto calculamos la probabilidad:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

De la ilustración anterior, está claro que la probabilidad de lo Xdado GREENes menor que la probabilidad de lo Xdado RED, ya que el círculo abarca 1 GREENobjetos y 3 REDunos. Así:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Aunque las probabilidades anteriores indican que Xpuede pertenecer GREEN(dado que hay el doble en GREENcomparación con RED), la probabilidad indica lo contrario; que la membresía de la clase Xes RED(dado que hay más REDobjetos en la vecindad de Xque GREEN). En el análisis bayesiano, la clasificación final se produce combinando ambas fuentes de información, es decir, la anterior y la probabilidad, para formar una probabilidad posterior utilizando la llamada regla de Bayes (llamada así por el reverendo Thomas Bayes 1702-1761).

ingrese la descripción de la imagen aquí

Finalmente, clasificamos X como REDya que su membresía de clase logra la mayor probabilidad posterior.

Yavar
fuente
39
¿No es este algoritmo anterior más parecido a los vecinos más cercanos?
Renaud
251
Esta respuesta es confusa: combina KNN (k vecinos más cercanos) e ingenuos bayes.
Michal Illich
77
La respuesta avanzó bien hasta que surgió la probabilidad. Entonces, @Yavar ha utilizado a los vecinos K más cercanos para calcular la probabilidad. ¿Qué tan correcto es eso? Si es así, ¿cuáles son algunos otros métodos para calcular la probabilidad?
wrahool
1
Usaste un círculo como ejemplo de probabilidad. Leí sobre bayes ingenuos gaussianos donde la probabilidad es gaussiana. ¿Cómo se puede explicar eso?
umair durrani
1
En realidad, la respuesta con knn es correcta. Si no conoce la distribución y, por lo tanto, la densidad de probabilidad de dicha distribución, debe encontrarla de alguna manera. Esto se puede hacer a través de kNN o Kernels. Creo que faltan algunas cosas. Sin embargo, puedes ver esta presentación .
CS
1053

Me doy cuenta de que esta es una vieja pregunta, con una respuesta establecida. La razón por la que estoy publicando es que la respuesta aceptada tiene muchos elementos de k-NN ( k -vecinos más cercanos), un algoritmo diferente.

Tanto k-NN como NaiveBayes son algoritmos de clasificación. Conceptualmente, k-NN utiliza la idea de "proximidad" para clasificar nuevas entidades. En k-NN, la 'proximidad' se modela con ideas como la distancia euclidiana o la distancia cosenoidal. Por el contrario, en NaiveBayes, el concepto de 'probabilidad' se usa para clasificar nuevas entidades.

Como la pregunta es sobre Naive Bayes, así es como describiría las ideas y los pasos a alguien. Trataré de hacerlo con la menor cantidad de ecuaciones y en inglés simple tanto como sea posible.

Primero, la probabilidad condicional y la regla de Bayes

Antes de que alguien pueda comprender y apreciar los matices de Naive Bayes, primero debe conocer un par de conceptos relacionados, a saber, la idea de probabilidad condicional y la regla de Bayes. (Si está familiarizado con estos conceptos, vaya a la sección titulada Cómo llegar a Bayes ingenuos ' )

Probabilidad condicional en inglés simple: ¿Cuál es la probabilidad de que algo suceda, dado que algo más ya ha sucedido?

Digamos que hay algún Resultado O. Y alguna Evidencia E. Por la forma en que se definen estas probabilidades: La Probabilidad de tener tanto el Resultado O como la Evidencia E es: (Probabilidad de que ocurra O) multiplicado por (Prob de E dado que O paso)

Un ejemplo para entender la probabilidad condicional:

Digamos que tenemos una colección de senadores estadounidenses. Los senadores podrían ser demócratas o republicanos. También son hombres o mujeres.

Si seleccionamos un senador completamente al azar, ¿cuál es la probabilidad de que esta persona sea una mujer demócrata? La probabilidad condicional puede ayudarnos a responder eso.

Probabilidad de (demócrata y senadora) = Prob (el senador es demócrata) multiplicado por la probabilidad condicional de ser mujer dado que son demócratas.

  P(Democrat & Female) = P(Democrat) * P(Female | Democrat) 

Podríamos calcular exactamente lo mismo, de la manera inversa:

  P(Democrat & Female) = P(Female) * P(Democrat | Female) 

Entendiendo la regla de Bayes

Conceptualmente, esta es una forma de pasar de P (Evidencia | Resultado conocido) a P (Resultado | Evidencia conocida). A menudo, sabemos con qué frecuencia se observa alguna evidencia particular, dado un resultado conocido . Tenemos que usar este hecho conocido para calcular el reverso, para calcular la posibilidad de que ese resultado suceda , dada la evidencia.

P (Resultado dado que conocemos alguna Evidencia) = P (Evidencia dado que conocemos el Resultado) veces Prob (Resultado), escalado por el P (Evidencia)

El ejemplo clásico para entender la regla de Bayes:

Probability of Disease D given Test-positive = 

               Prob(Test is positive|Disease) * P(Disease)
     _______________________________________________________________
     (scaled by) Prob(Testing Positive, with or without the disease)

Ahora, todo esto fue solo un preámbulo, para llegar a Naive Bayes.

Llegando a Naive Bayes

Hasta ahora, solo hemos hablado de una pieza de evidencia. En realidad, tenemos que predecir un resultado dada la evidencia múltiple. En ese caso, las matemáticas se vuelven muy complicadas. Para evitar esa complicación, un enfoque es 'desacoplar' múltiples piezas de evidencia y tratar cada una de ellas como independiente. Este enfoque es la razón por la que esto se llama ingenuo Bayes.

P(Outcome|Multiple Evidence) = 
P(Evidence1|Outcome) * P(Evidence2|outcome) * ... * P(EvidenceN|outcome) * P(Outcome)
scaled by P(Multiple Evidence)

Muchas personas eligen recordar esto como:

                      P(Likelihood of Evidence) * Prior prob of outcome
P(outcome|evidence) = _________________________________________________
                                         P(Evidence)

Observe algunas cosas sobre esta ecuación:

  • Si el Prob (evidencia | resultado) es 1, entonces solo estamos multiplicando por 1.
  • Si el Prob (alguna evidencia particular | resultado) es 0, entonces el problema completo. se convierte en 0. Si ve evidencia contradictoria, podemos descartar ese resultado.
  • Como dividimos todo por P (Evidencia), incluso podemos escapar sin calcularlo.
  • La intuición detrás de multiplicar por lo anterior es para que demos alta probabilidad a resultados más comunes, y bajas probabilidades a resultados poco probables. También se les llama base ratesy son una forma de escalar nuestras probabilidades predichas.

¿Cómo aplicar NaiveBayes para predecir un resultado?

Simplemente ejecute la fórmula anterior para cada resultado posible. Como estamos tratando de clasificar , cada resultado se llama classay tiene un class label.Nuestro trabajo es mirar la evidencia, considerar la probabilidad de que sea esta clase o esa clase, y asignar una etiqueta a cada entidad. Una vez más, adoptamos un enfoque muy simple: la clase que tiene la mayor probabilidad se declara "ganadora" y esa etiqueta de clase se asigna a esa combinación de evidencias.

Ejemplo de fruta

Probemos con un ejemplo para aumentar nuestra comprensión: el OP solicitó un ejemplo de identificación de 'fruta'.

Digamos que tenemos datos sobre 1000 piezas de fruta. Resultan ser plátano , naranja o alguna otra fruta . Conocemos 3 características de cada fruta:

  1. Si es largo
  2. Si es dulce y
  3. Si su color es amarillo.

Este es nuestro 'conjunto de entrenamiento'. Usaremos esto para predecir el tipo de cualquier fruta nueva que encontremos.

Type           Long | Not Long || Sweet | Not Sweet || Yellow |Not Yellow|Total
             ___________________________________________________________________
Banana      |  400  |    100   || 350   |    150    ||  450   |  50      |  500
Orange      |    0  |    300   || 150   |    150    ||  300   |   0      |  300
Other Fruit |  100  |    100   || 150   |     50    ||   50   | 150      |  200
            ____________________________________________________________________
Total       |  500  |    500   || 650   |    350    ||  800   | 200      | 1000
             ___________________________________________________________________

Podemos precalcular muchas cosas sobre nuestra colección de frutas.

Las llamadas probabilidades "anteriores". (Si no supiéramos ninguno de los atributos de la fruta, esta sería nuestra suposición.) Estos son nuestrosbase rates.

 P(Banana)      = 0.5 (500/1000)
 P(Orange)      = 0.3
 P(Other Fruit) = 0.2

Probabilidad de "evidencia"

p(Long)   = 0.5
P(Sweet)  = 0.65
P(Yellow) = 0.8

Probabilidad de "verosimilitud"

P(Long|Banana) = 0.8
P(Long|Orange) = 0  [Oranges are never long in all the fruit we have seen.]
 ....

P(Yellow|Other Fruit)     =  50/200 = 0.25
P(Not Yellow|Other Fruit) = 0.75

Dada una fruta, ¿cómo clasificarla?

Digamos que se nos dan las propiedades de una fruta desconocida y se nos pide que la clasifiquemos. Nos dicen que la fruta es larga, dulce y amarilla. ¿Es un plátano? ¿Es una naranja? ¿O es alguna otra fruta?

Simplemente podemos ejecutar los números para cada uno de los 3 resultados, uno por uno. Luego elegimos la probabilidad más alta y 'clasificamos' nuestra fruta desconocida como perteneciente a la clase que tenía la probabilidad más alta según nuestra evidencia previa (nuestro conjunto de entrenamiento de 1000 frutas):

P(Banana|Long, Sweet and Yellow) 
      P(Long|Banana) * P(Sweet|Banana) * P(Yellow|Banana) * P(banana)
    = _______________________________________________________________
                      P(Long) * P(Sweet) * P(Yellow)

    = 0.8 * 0.7 * 0.9 * 0.5 / P(evidence)

    = 0.252 / P(evidence)


P(Orange|Long, Sweet and Yellow) = 0


P(Other Fruit|Long, Sweet and Yellow)
      P(Long|Other fruit) * P(Sweet|Other fruit) * P(Yellow|Other fruit) * P(Other Fruit)
    = ____________________________________________________________________________________
                                          P(evidence)

    = (100/200 * 150/200 * 50/200 * 200/1000) / P(evidence)

    = 0.01875 / P(evidence)

Por un margen abrumador ( 0.252 >> 0.01875), clasificamos esta fruta dulce / larga / amarilla como probable que sea una banana.

¿Por qué es tan popular el clasificador Bayes?

Mira a lo que finalmente se reduce. Solo un poco de contar y multiplicar. Podemos precalcular todos estos términos, por lo que la clasificación se vuelve fácil, rápida y eficiente.

Let z = 1 / P(evidence). Ahora calculamos rápidamente las siguientes tres cantidades.

P(Banana|evidence) = z * Prob(Banana) * Prob(Evidence1|Banana) * Prob(Evidence2|Banana) ...
P(Orange|Evidence) = z * Prob(Orange) * Prob(Evidence1|Orange) * Prob(Evidence2|Orange) ...
P(Other|Evidence)  = z * Prob(Other)  * Prob(Evidence1|Other)  * Prob(Evidence2|Other)  ...

Asigne la etiqueta de clase de la que sea el número más alto y listo.

A pesar del nombre, Naive Bayes resulta excelente en ciertas aplicaciones. La clasificación de texto es un área donde realmente brilla.

Espero que ayude a comprender los conceptos detrás del algoritmo Naive Bayes.

Ram Narasimhan
fuente
14
Gracias por la explicación muy clara! Fácilmente uno de los mejores flotando en la web. Pregunta: dado que cada P (resultado / evidencia) se multiplica por 1 / z = p (evidencia) (que en el caso del fruto, significa que cada uno es esencialmente la probabilidad basada únicamente en evidencia previa), ¿sería correcto decir que z no ¿No le importa nada a Naïve Bayes? Lo que significaría que si, por ejemplo, uno se topa con una fruta larga / dulce / amarilla que no es un plátano, se clasificará incorrectamente.
covarianza
77
@ E.Chow Sí, tienes razón en que la computación z no importa para Naive Bayes. (Es una forma de escalar las probabilidades para estar entre 0 y 1.) Tenga en cuenta que z es producto de las probabilidades de toda la evidencia disponible. (Es diferente de las distribuciones a priori , que es el tipo de base de las clases.) Tienes razón: si se encontró una fruta Largo / dulce / amarillo que no es un plátano, NB clasificará de forma incorrecta como un plátano, en base a esta conjunto de entrenamiento. El algoritmo es una "mejor estimación probabilística basada en la evidencia" y, por lo tanto, se clasificará erróneamente en ocasiones.
Ram Narasimhan
1
@Jasper En la tabla hay un total de 200 "Otras frutas" y 50 de ellas son amarillas. Entonces, dado que la fruta es "Otra fruta", el universo es 200. 50 de ellos son amarillos. De ahí 50/200. Tenga en cuenta que 800 es el número total de fruta amarilla. Entonces, si quisiéramos P (otra fruta / Amarillo), haríamos lo que usted sugiera: 50/800.
Ram Narasimhan
3
Absolutamente buena explicación. No podría entender este algoritmo de los trabajos académicos y libros. Porque, la explicación esotérica es generalmente aceptado estilo de escritura quizás. Eso es todo, y muy fácil. Gracias.
Suat Atan PhD
3
¿Por qué las probabilidades no suman 1? La evidencia es 0.26 en el ejemplo (500/100 * 650/1000 * 800/1000), por lo que el P final (banana | ...) = 0.252 / 0.26 = 0.969, y el P (otro | ...) = 0.01875 / 0.26 = 0.072. ¡Juntos suman 1.04!
Mauricio
18

Ram Narasimhan explicó muy bien el concepto aquí abajo. Es una explicación alternativa a través del ejemplo de código de Naive Bayes en acción.
Utiliza un problema de ejemplo de este libro en la página 351.
Este es el conjunto de datos que usaremos en el conjunto de datos anterior si damos la hipótesis = entonces, ¿cuál es la probabilidad de que compre o no compre una computadora? El siguiente código responde exactamente esa pregunta. Simplemente cree un archivo llamado named y pegue el siguiente contenido.
ingrese la descripción de la imagen aquí
{"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

new_dataset.csv

Age,Income,Student,Creadit_Rating,Buys_Computer
<=30,high,no,fair,no
<=30,high,no,excellent,no
31-40,high,no,fair,yes
>40,medium,no,fair,yes
>40,low,yes,fair,yes
>40,low,yes,excellent,no
31-40,low,yes,excellent,yes
<=30,medium,no,fair,no
<=30,low,yes,fair,yes
>40,medium,yes,fair,yes
<=30,medium,yes,excellent,yes
31-40,medium,no,excellent,yes
31-40,high,yes,fair,yes
>40,medium,no,excellent,no

¡Aquí está el código que los comentarios explican todo lo que estamos haciendo aquí! [pitón]

import pandas as pd 
import pprint 

class Classifier():
    data = None
    class_attr = None
    priori = {}
    cp = {}
    hypothesis = None


    def __init__(self,filename=None, class_attr=None ):
        self.data = pd.read_csv(filename, sep=',', header =(0))
        self.class_attr = class_attr

    '''
        probability(class) =    How many  times it appears in cloumn
                             __________________________________________
                                  count of all class attribute
    '''
    def calculate_priori(self):
        class_values = list(set(self.data[self.class_attr]))
        class_data =  list(self.data[self.class_attr])
        for i in class_values:
            self.priori[i]  = class_data.count(i)/float(len(class_data))
        print "Priori Values: ", self.priori

    '''
        Here we calculate the individual probabilites 
        P(outcome|evidence) =   P(Likelihood of Evidence) x Prior prob of outcome
                               ___________________________________________
                                                    P(Evidence)
    '''
    def get_cp(self, attr, attr_type, class_value):
        data_attr = list(self.data[attr])
        class_data = list(self.data[self.class_attr])
        total =1
        for i in range(0, len(data_attr)):
            if class_data[i] == class_value and data_attr[i] == attr_type:
                total+=1
        return total/float(class_data.count(class_value))

    '''
        Here we calculate Likelihood of Evidence and multiple all individual probabilities with priori
        (Outcome|Multiple Evidence) = P(Evidence1|Outcome) x P(Evidence2|outcome) x ... x P(EvidenceN|outcome) x P(Outcome)
        scaled by P(Multiple Evidence)
    '''
    def calculate_conditional_probabilities(self, hypothesis):
        for i in self.priori:
            self.cp[i] = {}
            for j in hypothesis:
                self.cp[i].update({ hypothesis[j]: self.get_cp(j, hypothesis[j], i)})
        print "\nCalculated Conditional Probabilities: \n"
        pprint.pprint(self.cp)

    def classify(self):
        print "Result: "
        for i in self.cp:
            print i, " ==> ", reduce(lambda x, y: x*y, self.cp[i].values())*self.priori[i]

if __name__ == "__main__":
    c = Classifier(filename="new_dataset.csv", class_attr="Buys_Computer" )
    c.calculate_priori()
    c.hypothesis = {"Age":'<=30', "Income":"medium", "Student":'yes' , "Creadit_Rating":'fair'}

    c.calculate_conditional_probabilities(c.hypothesis)
    c.classify()

salida:

Priori Values:  {'yes': 0.6428571428571429, 'no': 0.35714285714285715}

Calculated Conditional Probabilities: 

{
 'no': {
        '<=30': 0.8,
        'fair': 0.6, 
        'medium': 0.6, 
        'yes': 0.4
        },
'yes': {
        '<=30': 0.3333333333333333,
        'fair': 0.7777777777777778,
        'medium': 0.5555555555555556,
        'yes': 0.7777777777777778
      }
}

Result: 
yes  ==>  0.0720164609053
no  ==>  0.0411428571429

Espero que ayude a comprender mejor el problema

paz

Sayed Zainul Abideen
fuente
18

Naive Bayes: Naive Bayes viene bajo la supervisión del aprendizaje automático que solía hacer clasificaciones de conjuntos de datos. Se utiliza para predecir cosas en función de su conocimiento previo y suposiciones de independencia.

Lo llaman ingenuo porque son suposiciones (se supone que todas las características del conjunto de datos son igualmente importantes e independientes) son realmente optimistas y rara vez son ciertas en la mayoría de las aplicaciones del mundo real.

Es el algoritmo de clasificación el que toma la decisión del conjunto de datos desconocido. Se basa en el Teorema de Bayes, que describe la probabilidad de un evento en función de su conocimiento previo.

El siguiente diagrama muestra cómo funciona Bayes ingenuo

ingrese la descripción de la imagen aquí

Fórmula para predecir NB:

ingrese la descripción de la imagen aquí

¿Cómo utilizar el algoritmo Naive Bayes?

Tomemos un ejemplo de cómo NB woks

Paso 1: Primero descubrimos la probabilidad de la tabla que muestra la probabilidad de sí o no en el siguiente diagrama. Paso 2: Encuentra la probabilidad posterior de cada clase.

ingrese la descripción de la imagen aquí

Problem: Find out the possibility of whether the player plays in Rainy condition?

P(Yes|Rainy) = P(Rainy|Yes) * P(Yes) / P(Rainy)

P(Rainy|Yes) = 2/9 = 0.222
P(Yes) = 9/14 = 0.64
P(Rainy) = 5/14 = 0.36

Now, P(Yes|Rainy) = 0.222*0.64/0.36 = 0.39 which is lower probability which means chances of the match played is low.

Para más referencia consulte estos blog.

Consulte el repositorio de GitHub Naive-Bayes-Ejemplos

jitsm555
fuente
14

Trato de explicar la regla de Bayes con un ejemplo.

¿Cuál es la posibilidad de que una persona aleatoria seleccionada de la sociedad sea fumadora?

Puede responder 10%.

Ahora, ¿qué pasa si la persona es hombre y tiene 15 años?

No puede ser del 60%, aunque sabemos que el porcentaje de fumadores era muy bajo. Tampoco puede ser inferior al 10%. 15 o 20% son mejores conjeturas.

De hecho, tratamos de actualizar la suposición inicial con nuevas pruebas ( P(smoker) vs. P(smoker | evidence)). La regla de Bayes es una forma de conectar estas dos probabilidades.

P(smoker | evidence) = P(smoker)* p(evidence | smoker)/P(evidence)

Cada evidencia puede aumentar o disminuir esta posibilidad. Por ejemplo, este hecho de que es un hombre puede aumentar las posibilidades, siempre que este porcentaje (ser un hombre) entre los no fumadores sea menor. En otras palabras, ser hombre debe ser un buen indicador de ser un fumador en lugar de ser un no fumador.

Podemos mostrar esta contribución de otra manera también. Para cada característica, puede comparar la similitud (probabilidad) de esa característica en las condiciones dadas con su similitud sola. ( P(f | x) vs. P(f)).

P(smoker | evidence) / P(smoker) = P(evidence | smoker)/P(evidence)

Por ejemplo, si sabemos que el 90% de los fumadores son hombres, todavía no es suficiente decir si ser hombre es un indicador de ser fumador o no. Por ejemplo, si la probabilidad de ser un hombre en la sociedad también es del 90%, entonces saber que alguien es un hombre no nos ayuda ((90% / 90%) = 1. Pero si los hombres contribuyen al 40% de la sociedad, pero al 90% de los fumadores, saber que alguien es hombre aumenta las posibilidades de ser fumador (90% / 40%) = 2.25, por lo que aumenta la suposición inicial (10%) en 2.25, lo que resulta en 22.5%.

Sin embargo, si la probabilidad de ser hombre era del 95% en la sociedad, ¡independientemente del hecho de que el porcentaje de hombres entre los fumadores es alto (90%)! ¡La evidencia de que alguien es un hombre disminuye la posibilidad de que sea fumador! (90% / 95%) = 0.95).

Entonces tenemos:

P(smoker | f1, f2, f3,... ) = P(smoker) * contribution of f1* contribution of f2 *... =
P(smoker)* 
(P(being a man | smoker)/P(being a man))*
(P(under 20 | smoker)/ P(under 20))

Tenga en cuenta que en esta fórmula asumimos que ser hombre y tener menos de 20 años son características independientes, por lo que las multiplicamos, lo que significa que saber que alguien tiene menos de 20 años no tiene ningún efecto en adivinar que es hombre o mujer. Pero puede no ser cierto, por ejemplo, tal vez la mayoría de la adolescencia en una sociedad son hombres ...

Para usar esta fórmula en un clasificador

El clasificador se da con algunas características (ser hombre y ser menor de 20 años) y debe decidir si es fumador o no (estas son dos clases). Utiliza la fórmula anterior para calcular la probabilidad de cada clase bajo la evidencia (características), y asigna la clase con la mayor probabilidad a la entrada. Para proporcionar las probabilidades requeridas (90%, 10%, 80% ...) utiliza el conjunto de entrenamiento. Por ejemplo, cuenta las personas en el conjunto de capacitación que son fumadores y descubren que contribuyen con el 10% de la muestra. Luego, para los fumadores, verifique cuántos de ellos son hombres o mujeres ... cuántos están por encima de 20 o por debajo de 20 ... En otras palabras, trata de construir la distribución de probabilidad de las características para cada clase en función del entrenamiento datos.

Ahmad
fuente