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?
Respuestas:
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:
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:
fuente
kernlab
oe1071
. 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).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.
fuente
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 ...
fuente