Los clasificadores ingenuos de Bayes son una opción popular para los problemas de clasificación. Hay muchas razones para esto, que incluyen:
- "Zeitgeist": conciencia generalizada después del éxito de los filtros de spam hace aproximadamente diez años
- Fácil de escribir
- El modelo clasificador es rápido de construir
- El modelo se puede modificar con nuevos datos de entrenamiento sin tener que reconstruir el modelo.
Sin embargo, son 'ingenuos', es decir, suponen que las características son independientes, esto contrasta con otros clasificadores como los clasificadores de máxima entropía (que son lentos para calcular).
El supuesto de independencia generalmente no se puede suponer, y en muchos (¿la mayoría de los casos?), Incluido el ejemplo del filtro de spam, simplemente es incorrecto.
Entonces, ¿por qué el clasificador Naive Bayes todavía funciona muy bien en tales aplicaciones, incluso cuando las características no son independientes entre sí?
fuente
¡La mayoría de los problemas de Machine Learning son fáciles!
Ver por ejemplo en el blog de John Langford . Lo que realmente está diciendo es que ML facilita los problemas, y esto presenta un problema para los investigadores en términos de si deberían tratar de aplicar métodos a una amplia gama de problemas simples o atacar problemas más difíciles. Sin embargo, el subproducto es que, para muchos problemas, los datos son separables linealmente (o al menos casi), ¡en cuyo caso cualquier clasificador lineal funcionará bien! Sucede que los autores del artículo original del filtro de spam optaron por usar Naive Bayes, pero si hubieran usado un Perceptron, SVM, Análisis discriminante de Fisher, Regresión logística, AdaBoost, o casi cualquier otra cosa, probablemente habría funcionado también.
El hecho de que sea relativamente fácil codificar el algoritmo ayuda. Por ejemplo, para codificar el SVM, debe tener un QP Solver o codificar el algoritmo SMO, que no es una tarea trivial. Por supuesto, podría descargar libsvm, pero en los primeros días esa opción no estaba disponible. Sin embargo, hay muchos otros algoritmos simples (incluido el Perceptron mencionado anteriormente) que son tan fáciles de codificar (y permiten actualizaciones incrementales como la pregunta menciona).
Por supuesto, para problemas no lineales difíciles, se necesitan métodos que puedan tratar con no lineales. Pero incluso esto puede ser una tarea relativamente simple cuando se emplean métodos Kernel . La pregunta a menudo se convierte en "¿Cómo diseño una función de núcleo efectiva para mis datos" en lugar de "¿Qué clasificador debo usar".
fuente
Después de haber usado los clasificadores bayesianos ingenuos ampliamente en las herramientas de clasificación de segmentación, mi experiencia es consistente con los trabajos publicados que muestran que NBC es comparable en precisión a discriminante lineal y CART / CHAID cuando todas las variables predictoras están disponibles.
(Por precisión, tanto la "tasa de aciertos" al predecir la solución correcta como la más probable, así como la calibración, lo que significa, por ejemplo, una estimación del 75% de membresía es correcta en el 70% -80% de los casos).
Mis dos centavos es que NBC funciona muy bien porque:
Y ahí es cuando se observan todas las variables. Lo que hace que NBC realmente se separe del paquete es que se degrada con gracia cuando faltan o no se observan una o más variables predictoras. CART / CHAID y el análisis discriminante lineal se detienen en ese caso.
fuente