Mahout - Agrupación

La agrupación es el procedimiento para organizar elementos o elementos de una colección determinada en grupos en función de la similitud entre los elementos. Por ejemplo, las aplicaciones relacionadas con la publicación de noticias en línea agrupan sus artículos de noticias mediante clustering.

Aplicaciones de la agrupación en clústeres

  • La agrupación en clústeres se utiliza ampliamente en muchas aplicaciones, como la investigación de mercado, el reconocimiento de patrones, el análisis de datos y el procesamiento de imágenes.

  • La agrupación en clústeres puede ayudar a los especialistas en marketing a descubrir grupos distintos en su base de clientes. Y pueden caracterizar sus grupos de clientes en función de los patrones de compra.

  • En el campo de la biología, se puede utilizar para derivar taxonomías de plantas y animales, categorizar genes con una funcionalidad similar y obtener información sobre las estructuras inherentes a las poblaciones.

  • La agrupación ayuda a identificar áreas de uso similar de la tierra en una base de datos de observación de la tierra.

  • La agrupación en clústeres también ayuda a clasificar documentos en la web para el descubrimiento de información.

  • La agrupación en clústeres se utiliza en aplicaciones de detección de valores atípicos, como la detección de fraudes con tarjetas de crédito.

  • Como función de minería de datos, Cluster Analysis sirve como una herramienta para obtener información sobre la distribución de datos para observar las características de cada clúster.

Con Mahout, podemos agrupar un conjunto de datos determinado. Los pasos necesarios son los siguientes:

  • Algorithm Debe seleccionar un algoritmo de agrupamiento adecuado para agrupar los elementos de un clúster.

  • Similarity and Dissimilarity Debe tener una regla para verificar la similitud entre los elementos recién encontrados y los elementos de los grupos.

  • Stopping Condition Se requiere una condición de detención para definir el punto en el que no se requiere agrupamiento.

Procedimiento de agrupación

Para agrupar los datos proporcionados, necesita:

  • Inicie el servidor Hadoop. Cree los directorios necesarios para almacenar archivos en Hadoop File System. (Cree directorios para el archivo de entrada, el archivo de secuencia y la salida agrupada en caso de canopy).

  • Copie el archivo de entrada al sistema de archivos Hadoop desde el sistema de archivos Unix.

  • Prepare el archivo de secuencia a partir de los datos de entrada.

  • Ejecute cualquiera de los algoritmos de agrupación disponibles.

  • Obtenga los datos agrupados.

Iniciando Hadoop

Mahout funciona con Hadoop, por lo tanto, asegúrese de que el servidor Hadoop esté en funcionamiento.

$ cd HADOOP_HOME/bin
$ start-all.sh

Preparación de directorios de archivos de entrada

Cree directorios en el sistema de archivos de Hadoop para almacenar el archivo de entrada, los archivos de secuencia y los datos agrupados con el siguiente comando:

$ hadoop fs -p mkdir /mahout_data
$ hadoop fs -p mkdir /clustered_data
$ hadoop fs -p mkdir /mahout_seq

Puede verificar si el directorio se creó utilizando la interfaz web de hadoop en la siguiente URL: http://localhost:50070/

Le da la salida como se muestra a continuación:

Copiar archivo de entrada a HDFS

Ahora, copie el archivo de datos de entrada del sistema de archivos de Linux al directorio mahout_data en el sistema de archivos de Hadoop como se muestra a continuación. Suponga que su archivo de entrada es mydata.txt y está en el directorio / home / Hadoop / data /.

$ hadoop fs -put /home/Hadoop/data/mydata.txt /mahout_data/

Preparar el archivo de secuencia

Mahout le proporciona una utilidad para convertir el archivo de entrada dado a un formato de archivo de secuencia. Esta utilidad requiere dos parámetros.

  • El directorio de archivos de entrada donde residen los datos originales.
  • El directorio de archivos de salida donde se almacenarán los datos agrupados.

A continuación se muestra el mensaje de ayuda de mahout seqdirectory utilidad.

Step 1:Busque el directorio de inicio de Mahout. Puede obtener ayuda de la utilidad como se muestra a continuación:

[[email protected] bin]$ ./mahout seqdirectory --help
Job-Specific Options:
--input (-i) input Path to job input directory.
--output (-o) output The directory pathname for output.
--overwrite (-ow) If present, overwrite the output directory

Genere el archivo de secuencia usando la utilidad usando la siguiente sintaxis:

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

Example

mahout seqdirectory
-i hdfs://localhost:9000/mahout_seq/
-o hdfs://localhost:9000/clustered_data/

Algoritmos de agrupación

Mahout admite dos algoritmos principales para la agrupación en clústeres, a saber:

  • Agrupación de dosel
  • Agrupación de K-medias

Agrupación de dosel

La agrupación en clústeres de dosel es una técnica sencilla y rápida utilizada por Mahout con fines de agrupación. Los objetos se tratarán como puntos en un espacio plano. Esta técnica se utiliza a menudo como un paso inicial en otras técnicas de agrupamiento, como el agrupamiento de k-medias. Puede ejecutar un trabajo de Canopy con la siguiente sintaxis:

mahout canopy -i <input vectors directory>
-o <output directory>
-t1 <threshold value 1>
-t2 <threshold value 2>

El trabajo Canopy requiere un directorio de archivos de entrada con el archivo de secuencia y un directorio de salida donde se almacenarán los datos agrupados.

Example

mahout canopy -i hdfs://localhost:9000/mahout_seq/mydata.seq
-o hdfs://localhost:9000/clustered_data
-t1 20
-t2 30

Obtendrá los datos agrupados generados en el directorio de salida dado.

Agrupación de K-means

La agrupación en clústeres de K-medias es un algoritmo de agrupación importante. El algoritmo de agrupación de k en k-medias representa el número de agrupaciones en las que se dividirán los datos. Por ejemplo, el valor k especificado para este algoritmo se selecciona como 3, el algoritmo dividirá los datos en 3 grupos.

Cada objeto se representará como un vector en el espacio. Inicialmente, el algoritmo elegirá k puntos al azar y se tratarán como centros, todos los objetos más cercanos a cada centro se agrupan. Existen varios algoritmos para la medida de distancia y el usuario debe elegir el requerido.

Creating Vector Files

  • A diferencia del algoritmo Canopy, el algoritmo k-means requiere archivos vectoriales como entrada, por lo tanto, debe crear archivos vectoriales.

  • Para generar archivos vectoriales a partir del formato de archivo de secuencia, Mahout proporciona la seq2parse utilidad.

A continuación se presentan algunas de las opciones de seq2parseutilidad. Cree archivos vectoriales usando estas opciones.

$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.

Después de crear vectores, proceda con el algoritmo k-means. La sintaxis para ejecutar el trabajo de k-means es la siguiente:

mahout kmeans -i <input vectors directory>
-c  <input clusters directory>
-o  <output working directory>
-dm <Distance Measure technique>
-x  <maximum number of iterations>
-k  <number of initial clusters>

El trabajo de agrupación de K-means requiere un directorio de vectores de entrada, un directorio de agrupaciones de salida, una medida de distancia, el número máximo de iteraciones que se llevarán a cabo y un valor entero que represente la cantidad de agrupaciones en las que se dividirán los datos de entrada.