Clasificador Naive-Bayes para grupos desiguales


8

Estoy usando el ingenuo clasificador bayes para clasificar entre dos grupos de datos. Un grupo de datos es mucho más grande que el otro (más de 4 veces). Estoy usando la probabilidad previa de cada grupo en el clasificador.

El problema es que el resultado que obtengo tiene un 0% de índice positivo verdadero y un 0% de índice falso positivo. Obtuve los mismos resultados cuando configuré el anterior a 0.5 y 0.5.

¿Cómo puedo establecer mi umbral en algo mejor para poder obtener resultados más equilibrados?

Tuve un problema similar al usar el clasificador de regresión logística. Lo resolví restando el término anterior del sesgo.

Cuando uso Fisher Linear Discriminant en estos datos, obtengo buenos resultados con el umbral establecido en el medio.

Supongo que hay una solución común a este problema, simplemente no pude encontrarlo.

ACTUALIZACIÓN: Acabo de notar que el clasificador está sobreajustado. El rendimiento en el conjunto de entrenamiento es perfecto (100% correcto).

Si uso grupos iguales, entonces el clasificador comienza a clasificar también para el grupo "pequeño", pero el rendimiento es bastante malo (peor que FLD o LR).

ACTUALIZACIÓN2: Creo que el problema era que estaba usando una matriz de covarianza completa. Correr con una matriz de covarianza diagonal me dio resultados más "equilibrados".


0% verdadero positivo y 0% falso positivo? Debe poner todo en el otro grupo, entonces ... intente establecer su prioridad en 80% para el grupo "positivo". Pero en primer lugar, compruebe que no están haciendo un error en alguna parte en el código ...
jbowman

¿Quizás el prior es demasiado grande / pequeño? (¿algunos problemas con la aritmética de punto flotante?)
Dov

Respuestas:


7

Asignar todos los patrones a la clase negativa ciertamente no es un "resultado extraño". Podría ser que el clasificador óptimo de Bayes siempre clasifique todos los patrones como pertenecientes a la clase mayoritaria, en cuyo caso su clasificador está haciendo exactamente lo que debería hacer. Si la densidad de los patrones que pertenecen a la clase positiva nunca excede la densidad de los patrones que pertenecen a la clase negativa, entonces la clase negativa es más probable independientemente de los valores de los atributos.

Lo que hay que hacer en tales circunstancias es considerar la importancia relativa de los errores falsos positivos y falsos negativos, es raro en la práctica que los costos de los dos tipos diferentes de error sean los mismos. Por lo tanto, determine la pérdida por errores falsos positivos y falsos negativos y tómelos en cuenta al establecer la probabilidad de umbral (los diferentes costos de clasificación errónea equivalen a cambiar las probabilidades anteriores, por lo que es fácil de implementar para Bayes ingenuos). Recomendaría ajustar los anteriores para minimizar la estimación de validación cruzada de la pérdida (incorporando sus costos desiguales de clasificación errónea).

Si sus costos de clasificación errónea son iguales, y su capacitación establece representaciones previas representativas de las condiciones operativas, suponiendo que su implementación sea correcta, es posible que ya tenga el mejor clasificador NB.


revisa mi actualización por favor. Mi clasificador está sobreajustado. de cualquier manera, si uso grupos iguales, entonces el clasificador comienza a comportarse mejor, pero sigue siendo de bajo rendimiento ... cambiar el umbral (anteriores) no afecta el rendimiento en absoluto cuando un grupo es mucho más grande. gracias
Ran

1
@Ran No puedo deshacerme de la sensación de que falta algo aquí. ¿Puede informar el AUC de cada clasificador? 2. ¿Cuántas instancias positivas / negativas tienes por clase? 3. ¿Cómo validaste el clasificador? cual-k-fold-cv? loo? 3. Tenga en cuenta que la naturaleza de NB es crear probabilidades extremas p (clase | x) cerca de 0 o 1, por lo que uno tiene que encontrar el mejor umbral de decisión, es decir, t para que p (clase = 1 | x)> t => clase 1, si no clase 0. Encontrar dicho umbral de decisión es equivalente a ajustar los anteriores.
steffen

@Ran cambiar los anteriores tiene que afectar el rendimiento;). Si los pequeños cambios no ayudan, pruebe algunos extremos.
steffen

2
@Ran, es difícil determinar cuál es el problema sin tener información adicional sobre el tamaño del conjunto de entrenamiento, la naturaleza de los atributos, etc. Sin embargo, una cosa que viene a la mente es que NB tiene un problema si las probabilidades condicionales son siempre cero , como si eso sucediera, la salida será cero independientemente de los valores de cualquier otro atributo. ¿Las probabilidades para la clase minoritaria son siempre exactamente cero? Si ese es el caso, ese puede ser el problema, en cuyo caso usar la corrección de Laplace para estimar las probabilidades condicionales podría ayudar.
Dikran Marsupial

0

Amplíe el grupo de datos más pequeño para que se ajuste al grupo grande por cálculo. Estirará los datos del grupo más pequeño, pero permitirá un cálculo más igualitario.

Si aún obtiene resultados extraños como lo hace actualmente, verifique toda su implementación desde el principio para buscar un error (probablemente simple).


¿Qué quieres decir con "Ampliar los datos más pequeños ... por cálculo"? ¿Puedes explicar más?
Dov

clasificar todo como perteneciente a la clase negativa no es un resultado extraño, a veces eso es lo correcto porque la densidad de los patrones negativos siempre excede la densidad de los patrones positivos en todas partes.
Dikran Marsupial
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.