¿Cómo predecir el resultado con solo casos positivos como entrenamiento?

21

En aras de la simplicidad, digamos que estoy trabajando en el ejemplo clásico de correos electrónicos no deseados / no deseados.

Tengo un conjunto de 20000 correos electrónicos. De estos, sé que 2000 son spam, pero no tengo ningún ejemplo de correos electrónicos que no sean spam. Me gustaría predecir si los 18000 restantes son spam o no. Idealmente, el resultado que estoy buscando es una probabilidad (o un valor p) de que el correo electrónico sea spam.

¿Qué algoritmo (s) puedo usar para hacer una predicción sensata en esta situación?

En este momento, estoy pensando en un método basado en la distancia que me diga cuán similar es mi correo electrónico a un correo no deseado conocido. ¿Que opciones tengo?

En términos más generales, ¿puedo usar un método de aprendizaje supervisado o necesito necesariamente tener casos negativos en mi conjunto de capacitación para hacerlo? ¿Estoy limitado a enfoques de aprendizaje no supervisados? ¿Qué pasa con los métodos semi-supervisados?

enricoferrero
fuente
1
Cualquier algoritmo de aprendizaje que use predecirá que todos los correos sean spam. Debe tener ejemplos de las dos categorías para cualquier aprendizaje sensato.
JohnRos
OK, eso descartaría un enfoque clásico de aprendizaje supervisado. ¿Pero hay un algoritmo que devuelva algún tipo de métrica de similitud? Por ejemplo: este correo electrónico es muy similar a un correo no deseado, este otro no lo es.
enricoferrero
66
@JohnRos no es cierto, aprender de datos positivos y no etiquetados es un gran tema en el aprendizaje semi-supervisado y no se parece en nada a lo que usted describe.
Marc Claesen
55
@MarcClaesen: No estaba familiarizado con esta (muy buena) línea de investigación. Veo que esa magia está en el supuesto de que los datos no etiquetados son una mezcla de spam y no spam, lo que hace que el problema sea solucionable.
JohnRos
2
@JohnRos exactamente, y estoy de acuerdo con el factor de frescura. Lo que me parece realmente genial es el hecho de que recientemente hemos podido mostrar cómo calcular las métricas de rendimiento tradicionales basadas en tablas de contingencia (por ejemplo, precisión, precisión, recuperación, ...) sin negativos conocidos .
Marc Claesen

Respuestas:

19

Esto se llama aprendizaje a partir de datos positivos y no etiquetados, o aprendizaje PU para abreviar, y es un nicho activo de aprendizaje semi-supervisado.

Brevemente, es importante usar los datos sin etiquetar en el proceso de aprendizaje, ya que produce modelos significativamente mejorados sobre los llamados clasificadores de clase única que se entrenan exclusivamente en los positivos conocidos. Los datos no etiquetados se pueden incorporar de varias maneras, siendo los enfoques predominantes los siguientes:

  • de alguna manera inferir un conjunto de posibles negativos de los datos no etiquetados y luego entrenar un modelo supervisado para distinguir los positivos conocidos de estos negativos inferidos.
  • tratar el conjunto sin etiquetar como negativo y de alguna manera explicar el ruido de la etiqueta que se sabe que está presente.

Soy activo en este campo, y en lugar de resumirlo aquí para usted, le recomiendo leer dos de mis documentos y las referencias allí para obtener una visión general del dominio:

  • Una técnica de vanguardia para aprender modelos a partir de datos positivos y sin etiquetar (publicación formal disponible aquí ): http://arxiv.org/abs/1402.3144
  • Una técnica para calcular métricas de rendimiento de uso común sin negativos conocidos (en revisión, este es el primero de su tipo): http://arxiv.org/abs/1504.06837
Marc Claesen
fuente
1
¡Excelente! Muchas gracias por las referencias. El RESVM y el SVM en bolsas parecen funcionar de manera similar en un entorno de aprendizaje de PU. ¿Puede recomendar implementaciones (preferiblemente en R) de cualquiera de los algoritmos? Ninguno de los dos parece estar incluido en caret, desafortunadamente.
enricoferrero
1
@enricoferrero Sí, funcionan de manera similar a menos que haya falsos positivos (conocidos), en cuyo caso RESVM supera significativamente el SVM de ensacado (diseñé RESVM para ese propósito, ya que la aplicación en la que trabajo tiene falsos positivos). No creo que haya implementaciones de R disponibles, pero puede implementarlas con bastante facilidad envolviendo una implementación de SVM como kernlabo e1071. Tenga en cuenta que SVG y RESVM de ensacado tienen varios hiperparámetros que debe optimizar, para lo cual le recomiendo la biblioteca Optunity (tiene una interfaz R).
Marc Claesen
1
@enricoferrero Tengo una implementación de línea de comandos de RESVM disponible en github.com/claesenm/resvm , aunque ese código no está bien pulido. Ese repositorio específico está escrito en Python y se usa como un controlador para el paquete EnsembleSVM .
Marc Claesen
Parece que otra buena opción para un algoritmo SVM en bolsas podría ser usar el paquete mlr en R con un contenedor de bolsas alrededor de un alumno de SVM .
enricoferrero
7

Supongo que no hay tantos casos de spam en sus 18000 casos. Para utilizar un enfoque de aprendizaje supervisado para esto, debe tener más de 1 categoría / clase en sus datos. Como sabe que 2000 casos son spam, puede etiquetar los 18000 casos restantes como 'categoría desconocida' y capacitar a cualquier modelo de aprendizaje supervisado para predecir si un caso está en la categoría spam o desconocida. Luego verifique la precisión de su modelo de muestra para ver qué tan bien funciona el modelo para distinguir entre las 2 categorías. Si funciona bien, entonces mi suposición de pocos casos de spam en la categoría 'desconocido' está garantizada. Si no funciona bien, tendrá que usar un alumno sin supervisión (como kmeans, etc.) para agrupar e identificar grupos homogéneos separados en sus datos. Luego, identifique qué clústeres contienen la mayoría de los 2000 correos electrónicos no deseados, y cuáles no, y etiquetarlos como spam y no spam respectivamente. A continuación, puede continuar con el modelado utilizando un alumno supervisado como lo describí anteriormente.

FelixNelson
fuente
2

De lo que habla el OP es de una tarea de clasificación de una clase, que es muy difícil.

Hay muchos documentos sobre esta tarea en diferentes campos de investigación. También escribí un esquema de verificación de autoría intrínseca eficiente basado en el aprendizaje conjunto . Es muy fácil adaptarlo para clasificar spam / no spam, en lugar de autores. Pruébalo y avísame si necesitas más detalles ...

Excepción no controlada
fuente
Recibo un error 404 al seguir su enlace.
enricoferrero
Hubo un error tipográfico. Lo siento, debería funcionar ahora ;-)
Excepción no