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 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. Como estamos tratando de clasificar , cada resultado se llama class
ay 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:
- Si es largo
- Si es dulce y
- 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.