Saltar al contenido

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

Este team de especialistas pasados muchos días de trabajo y de recopilar de datos, dieron con la solución, deseamos que te sea de utilidad en tu trabajo.

Solución:

Me doy cuenta de que esta es una pregunta antigua, con una respuesta establecida. La razón por la que publico 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 usa la idea de “cercanía” para clasificar nuevas entidades. En k-NN, la ‘cercanía’ se modela con ideas como la distancia euclidiana o la distancia cosenoidal. Por el contrario, en NaiveBayes, el concepto de “probabilidad” se utiliza para clasificar nuevas entidades.

Dado que la pregunta es sobre Naive Bayes, así es como describiría las ideas y los pasos a alguien. Intentaré hacerlo con la menor cantidad de ecuaciones y en un lenguaje sencillo tanto como sea posible.

Primero, probabilidad condicional y regla de Bayes

Antes de que alguien pueda comprender y apreciar los matices de Naive Bayes, primero necesita conocer un par de conceptos relacionados, a saber, la idea de probabilidad condicional y la regla de Bayes. (Si está familiarizado con estos conceptos, pase a la sección titulada Llegar a Naive Bayes ‘)

La probabilidad condicional en un lenguaje sencillo: ¿Cuál es la probabilidad de que suceda algo? dado que algo mas ya ha pasado.

Digamos que hay algún Resultado O. Y alguna Evidencia E. De la forma en que se definen estas probabilidades: La probabilidad de tener ambos el Resultado O y la Evidencia E es: (Probabilidad de que ocurra O) multiplicado por (Prob de E dado que O sucedió)

Un ejemplo para comprender la probabilidad condicional:

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

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

Probabilidad de (Demócrata y Senadora) = Prob (La Senadora es Demócrata) multiplicada por la Probabilidad Condicional de ser Mujer dado que es Demócrata.

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

Podríamos calcular exactamente lo mismo, al revés:

  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 lo contrario, para calcular la probabilidad de que resultado sucediendo, dada la evidencia.

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

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

Probability of Disease D given Test-positive = 

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

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

Llegar a Naive Bayes ‘

Hasta ahora, solo hemos hablado de una prueba. En realidad, tenemos que predecir un resultado dado múltiples pruebas. 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 pieza de evidencia 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)

Mucha gente elige 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 problema (evidencia | resultado) es 1, entonces solo estamos multiplicando por 1.
  • Si el problema (alguna evidencia particular | resultado) es 0, entonces todo el problema. se convierte en 0. Si ve evidencia contradictoria, podemos descartar ese resultado.
  • Dado que dividimos todo por P (Evidencia), incluso podemos escapar sin calcularlo.
  • La intuición detrás de multiplicar por el previo es para que otorguemos alta probabilidad a resultados más comunes y bajas probabilidades a resultados poco probables. Estos también se llaman base rates y 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. Ya que estamos tratando de clasificar, cada resultado se llama class y tiene un class label. Nuestro trabajo es mirar la evidencia, considerar qué tan probable es que sea de esta o aquella clase, y asignar una etiqueta a cada entidad. Nuevamente, adoptamos un enfoque muy simple: la clase que tiene la probabilidad más alta se declara “ganadora” y esa etiqueta de clase se asigna a esa combinación de evidencias.

Ejemplo de fruta

Probémoslo con un ejemplo para aumentar nuestra comprensión: el OP pidió un ejemplo de identificación de ‘fruta’.

Digamos que tenemos datos sobre 1000 frutas. Ellos son Banana, naranja o algunos Otras frutas. Conocemos 3 características de cada fruta:

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

Este es nuestro ‘set de entrenamiento’. Usaremos esto para predecir el tipo de cualquier nuevo fruto que encontramos.

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 “Previas”. (Si no supiéramos ninguno de los atributos de la fruta, esta sería nuestra suposición). Estos son nuestros base 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 “probabilidad”

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. Se nos dice 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 probablemente un plátano.

¿Por qué es tan popular el clasificador de Bayes?

Mira a lo que finalmente se reduce. Solo contando y multiplicando. 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 del 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.

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 es la confusión que rodea al conjunto de entrenamiento.

En general, todos los algoritmos de aprendizaje automático deben capacitarse para tareas de aprendizaje supervisado como clasificación, predicción, etc. o para tareas de aprendizaje no supervisadas como agrupación en clústeres.

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 antes habían visto) para las cuales pueden clasificar o predecir, etc. (en el caso de supervisados aprendizaje) basado en su aprendizaje. Esto es en lo que se basan la mayoría de las técnicas de aprendizaje automático como redes neuronales, SVM, bayesiano, 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 entrenamiento + 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 nuevas entradas que nunca antes había visto en el conjunto de desarrollo o de prueba.

El conjunto de prueba normalmente tiene el mismo formato que el conjunto de entrenamiento. Sin embargo, es muy importante que el conjunto de prueba sea distinto del corpus de entrenamiento: si simplemente reutilizáramos el conjunto de entrenamiento como conjunto de prueba, entonces un modelo que simplemente memorizara su entrada, sin aprender a generalizar a nuevos ejemplos, recibiría engañosamente puntuaciones altas.

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

Ahora llego a tu otra pregunta sobre Naive Bayes.

Para demostrar el concepto de Clasificación Naïve Bayes, considere el ejemplo que se da a continuación:

ingrese la descripción de la imagen aquí

Como se indicó, los objetos se pueden clasificar como GREEN o 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 GREEN objetos como RED, es razonable creer que un caso nuevo (que aún no se ha observado) tiene el doble de probabilidades de tener membresía GREEN en vez de RED. En el análisis bayesiano, esta creencia se conoce como probabilidad previa. Las probabilidades previas se basan en la experiencia previa, en este caso el porcentaje de GREEN y RED objetos y, a menudo, se utiliza para predecir los resultados antes de que realmente sucedan.

Por tanto, podemos escribir:

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

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

Dado que hay un total de 60 objetos, 40 de los cuales son GREEN y 20 RED, nuestras probabilidades previas de pertenencia a una clase son:

Probabilidad previa para GREEN: 40 / 60

Probabilidad previa para RED: 20 / 60

Habiendo formulado nuestra probabilidad previa, ahora estamos listos para clasificar un nuevo objeto (WHITE círculo en el diagrama de abajo). Dado que los objetos están bien agrupados, es razonable suponer que cuanto más GREEN (o RED) objetos en las proximidades 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 (a elegir 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 X dado GREEN es menor que la probabilidad de X dado RED, ya que el círculo abarca 1GREEN objeto y 3RED unos. Por lo tanto:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Aunque las probabilidades previas indican que X puede pertenecer a GREEN (dado que hay el doble de GREEN en comparación con RED) la probabilidad indica lo contrario; que la membresía de clase de X es RED (dado que hay mas RED objetos en las proximidades de X que GREEN). En el análisis bayesiano, la clasificación final se produce combinando ambas fuentes de información, es decir, la previa y la verosimilitud, para formar una probabilidad posterior usando la llamada regla de Bayes (nombrada en honor al Rev. Thomas Bayes 1702-1761).

ingrese la descripción de la imagen aquí

Finalmente, clasificamos X como RED dado que su pertenencia a la clase alcanza la mayor probabilidad posterior.

Bayes ingenuo:
Naive Bayes se encuentra bajo la supervisión del aprendizaje automático que solía hacer clasificaciones de conjuntos de datos. Se utiliza para predecir cosas basándose en su conocimiento previo y supuestos de independencia.

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

Es el algoritmo de clasificación el que toma la decisión sobre el conjunto de datos desconocido. Se basa en el Teorema de Bayes que describe la probabilidad de un evento en base a 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 funciona NB

Paso 1: Primero averiguamos la tabla de Probabilidad que muestra la probabilidad de sí o no en el siguiente diagrama. Paso 2: Encuentre 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 obtener más referencia, consulte este blog.

Consulte los ejemplos Naive-Bayes del repositorio de GitHub

Valoraciones y reseñas

Recuerda que tienes la capacidad de decir si topaste tu escollo a tiempo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *