Comprender Bayes ingenuos

47

De StatSoft, Inc. (2013), Electronic Statistics Textbook , "Naive Bayes Classifier" :

ingrese la descripción de la imagen aquí

Para demostrar el concepto de Clasificación Naïve Bayes, considere el ejemplo que se muestra en la ilustración de arriba. Como se indicó, los objetos se pueden clasificar como VERDES o ROJOS. Mi 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 que salen actualmente.

Dado que hay el doble de objetos VERDES que ROJOS, es razonable creer que un nuevo caso (que aún no se ha observado) tiene el doble de probabilidades de tener una membresía VERDE en lugar de ROJO. En el análisis bayesiano, esta creencia se conoce como la probabilidad previa. Las probabilidades previas se basan en la experiencia previa, en este caso el porcentaje de objetos VERDES y ROJOS, y a menudo se utilizan para predecir resultados antes de que sucedan realmente.

Por lo tanto, podemos escribir:

ingrese la descripción de la imagen aquí

Dado que hay un total de 60 objetos, 40 de los cuales son VERDES y 20 ROJOS, nuestras probabilidades anteriores de pertenencia a la clase son:

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Habiendo formulado nuestra probabilidad anterior, ahora estamos listos para clasificar un nuevo objeto (círculo BLANCO). Como los objetos están bien agrupados, es razonable suponer que cuantos más objetos VERDES (o ROJOS) 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. De esto calculamos la probabilidad:

ingrese la descripción de la imagen aquí

De la ilustración anterior, está claro que la probabilidad de X dado VERDE es menor que la probabilidad de X dado ROJO, ya que el círculo abarca 1 objeto VERDE y 3 ROJOS. Así:

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Aunque las probabilidades anteriores indican que X puede pertenecer a VERDE (dado que hay el doble de VERDE en comparación con ROJO), la probabilidad indica lo contrario; que la membresía de clase de X es ROJA (dado que hay más objetos ROJOS cerca de X que VERDE) 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 ROJO ya que su membresía de clase logra la mayor probabilidad posterior.

Aquí es donde entra en juego la dificultad de mi comprensión matemática.

ingrese la descripción de la imagen aquí

p (Cj | x1, x2, x ..., xd) es la probabilidad posterior de pertenencia a la clase, es decir, la probabilidad de que X pertenezca a Cj, pero ¿por qué escribirlo así?

Cálculo de la probabilidad?

ingrese la descripción de la imagen aquí

¿Probabilidad posterior?

ingrese la descripción de la imagen aquí

Nunca tomé matemáticas, pero mi comprensión de los ingenuos bayes está bien, creo que solo cuando se trata de estos métodos descompuestos me confunde. ¿Alguien podría ayudar a visualizar estos métodos y cómo escribir las matemáticas de una manera comprensible?

G Gr
fuente
12
(+1) Admiro la forma realmente cuidadosa y clara en la que planteaste tu pregunta.
rolando2
2
@ rolando2: todas las cifras y casi todo el texto de esta pregunta proviene de statsoft.com/textbook/naive-bayes-classifier
Franck Dernoncourt
Edite esta publicación para atribuir claramente el material de otro lugar, según Cómo hacer referencia al material escrito por otros .
Scortchi - Restablece a Monica
La atribución adecuada de las cotizaciones directas siempre ha sido un requisito en los sitios de Stack Exchange. De todos modos, la omisión se rectifica fácilmente; Y lo he hecho. No es necesario eliminar su cuenta, por favor reconsidere.
Scortchi - Restablece a Monica

Respuestas:

50

Recorreré todo el proceso de Naive Bayes desde cero, ya que no me queda totalmente claro dónde te estás colgando.

P(class|feature1,feature2,...,featuren

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

P(class)

P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

Datos de ejemplo discretos.

Ejemplo: entrenamiento del clasificador

Para entrenar al clasificador, contamos varios subconjuntos de puntos y los usamos para calcular las probabilidades previas y condicionales.

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (en caso de que no sea obvio, se trata de todos los pares posibles de valor de característica y clase)

P(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

Esas diez probabilidades (las dos anteriores más las ocho condicionales) son nuestro modelo

Clasificando un nuevo ejemplo

feature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

2/302/10

Notas

P(feature=value|class)conectando la media y la varianza apropiadas para cada clase. Otras distribuciones pueden ser más apropiadas, dependiendo de los detalles de sus datos, pero un gaussiano sería un buen punto de partida.

No estoy muy familiarizado con el conjunto de datos DARPA, pero harías esencialmente lo mismo. Probablemente terminará calculando algo como P (ataque = VERDADERO | servicio = dedo), P (ataque = falso | servicio = dedo), P (ataque = VERDADERO | servicio = ftp), etc. y luego combínelos en el igual que en el ejemplo Como nota al margen, parte del truco aquí es encontrar buenas características. La IP de origen, por ejemplo, probablemente será muy escasa: es probable que solo tenga uno o dos ejemplos para una IP determinada. Podría hacerlo mucho mejor si geolocaliza la IP y utiliza "Source_in_same_building_as_dest (true / false)" o algo como una característica en su lugar.

Espero que eso ayude más. Si algo necesita aclaración, ¡me encantaría volver a intentarlo!

Matt Krause
fuente
3
Seguro. Si está de acuerdo con usted, voy a editar mi respuesta para que haya más espacio (y puedo hacer cosas LaTex).
Matt Krause el
1
Expandí las partes de entrenamiento y prueba y las convertí en su propia sección. Los primeros dos párrafos son iguales ...
Matt Krause
2
Matt, esto es mucho más claro que cualquier definición de libro de texto de Naive Bayes que encontré. Esta es probablemente la mejor respuesta a cualquier pregunta que haya visto hasta ahora en este sitio web.
Zhubarb
@Berkan, gracias; es muy amable de su parte (¡aunque también hay muchas otras excelentes respuestas!). Si tiene alguna sugerencia, ¡me encantaría tratar de abordarlas!
Matt Krause el
+ 1 y stackoverflow.com/questions/10059594/… donde hay una explicación similar
Drey
6

DP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj)P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
D(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)
Dilip Sarwate
fuente
1

La suposición principal detrás del ingenuo modelo bayes es que cada característica (x_i) es condicionalmente independiente de todas las demás características dadas a la clase. Esta suposición es lo que nos permite escribir la probabilidad como un producto simple (como ha demostrado).

Esto también es lo que ayuda al ingenuo modelo bayes a generalizarse bien en la práctica. Considere la fase de entrenamiento: si no hicimos esta suposición, el aprendizaje implicaría estimar una distribución compleja y de alta dimensión: p (x1, x2, ..., xn, c) en la que todas las características se distribuyen conjuntamente. En cambio, podemos entrenar estimando p (x1, c), p (x2, c), ..., p (xn, c), ya que al conocer el valor c, los valores de todas las otras características son irrelevantes (proporcionan sin información adicional sobre x_i).

No conozco una buena manera de visualizar esto (además de la notación de modelo gráfico estándar), pero para hacerlo más concreto, puede escribir un código para aprender un modelo Bayes ingenuo ( puede obtener algunos datos de ejemplo aquí ). Entrena y prueba. Ahora descarte el supuesto de independencia condicional y modifique el código. Entrena, prueba y compara con el modelo anterior.

Mella
fuente