Mahout - Clasificación

¿Qué es la clasificación?

La clasificación es una técnica de aprendizaje automático que utiliza datos conocidos para determinar cómo se deben clasificar los nuevos datos en un conjunto de categorías existentes. Por ejemplo,

  • La aplicación iTunes usa la clasificación para preparar listas de reproducción.

  • Los proveedores de servicios de correo como Yahoo! y Gmail utilizan esta técnica para decidir si un correo nuevo debe clasificarse como spam. El algoritmo de categorización se entrena a sí mismo analizando los hábitos de los usuarios de marcar ciertos correos electrónicos como spam. En base a eso, el clasificador decide si un correo futuro debe depositarse en su bandeja de entrada o en la carpeta de spam.

Cómo funciona la clasificación

Al clasificar un conjunto de datos dado, el sistema de clasificación realiza las siguientes acciones:

  • Inicialmente, se prepara un nuevo modelo de datos utilizando cualquiera de los algoritmos de aprendizaje.
  • Luego, se prueba el modelo de datos preparado.
  • A partir de entonces, este modelo de datos se utiliza para evaluar los nuevos datos y determinar su clase.

Aplicaciones de clasificación

  • Credit card fraud detection- El mecanismo de clasificación se utiliza para predecir fraudes con tarjetas de crédito. Utilizando información histórica de fraudes anteriores, el clasificador puede predecir qué transacciones futuras pueden convertirse en fraudes.

  • Spam e-mails - Dependiendo de las características de los correos no deseados anteriores, el clasificador determina si un correo electrónico recién encontrado debe enviarse a la carpeta de correo no deseado.

Clasificador ingenuo de Bayes

Mahout utiliza el algoritmo clasificador Naive Bayes. Utiliza dos implementaciones:

  • Clasificación distribuida de Naive Bayes
  • Clasificación complementaria de Naive Bayes

Naive Bayes es una técnica simple para construir clasificadores. No es un algoritmo único para entrenar tales clasificadores, sino una familia de algoritmos. Un clasificador de Bayes construye modelos para clasificar instancias de problemas. Estas clasificaciones se realizan utilizando los datos disponibles.

Una ventaja de Bayes ingenuo es que solo requiere una pequeña cantidad de datos de entrenamiento para estimar los parámetros necesarios para la clasificación.

Para algunos tipos de modelos de probabilidad, los clasificadores de Bayes ingenuos se pueden entrenar de manera muy eficiente en un entorno de aprendizaje supervisado.

A pesar de sus supuestos simplificados, los clasificadores de Bayes ingenuos han funcionado bastante bien en muchas situaciones complejas del mundo real.

Procedimiento de clasificación

Se deben seguir los siguientes pasos para implementar la Clasificación:

  • Generar datos de ejemplo
  • Crea archivos de secuencia a partir de datos
  • Convertir archivos de secuencia en vectores
  • Entrena los vectores
  • Prueba los vectores

Paso 1: generar datos de ejemplo

Genere o descargue los datos a clasificar. Por ejemplo, puede obtener el20 newsgroups datos de ejemplo del siguiente enlace: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Cree un directorio para almacenar datos de entrada. Descargue el ejemplo como se muestra a continuación.

$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz

Paso 2: crear archivos de secuencia

Cree un archivo de secuencia a partir del ejemplo usando seqdirectoryutilidad. La sintaxis para generar la secuencia se da a continuación:

mahout seqdirectory -i <input file path> -o <output directory>

Paso 3: convertir archivos de secuencia en vectores

Cree archivos vectoriales a partir de archivos de secuencia usando seq2parseutilidad. Las opciones deseq2parse utilidad se dan a continuación:

$MAHOUT_HOME/bin/mahout seq2sparse
--analyzerName (-a) analyzerName  The class name of the analyzer
--chunkSize (-chunk) chunkSize    The chunkSize in MegaBytes.
--output (-o) output              The directory pathname for o/p
--input (-i) input                Path to job input directory.

Paso 4: entrenar los vectores

Entrene los vectores generados usando el trainnbutilidad. Las opciones a utilizartrainnb utilidad se dan a continuación:

mahout trainnb
 -i ${PATH_TO_TFIDF_VECTORS}
 -el
 -o ${PATH_TO_MODEL}/model
 -li ${PATH_TO_MODEL}/labelindex
 -ow
 -c

Paso 5: prueba los vectores

Pruebe los vectores usando testnbutilidad. Las opciones a utilizartestnb utilidad se dan a continuación:

mahout testnb
 -i ${PATH_TO_TFIDF_TEST_VECTORS}
 -m ${PATH_TO_MODEL}/model
 -l ${PATH_TO_MODEL}/labelindex
 -ow
 -o ${PATH_TO_OUTPUT}
 -c
 -seq