Mahout - Clustering

Clustering é o procedimento para organizar elementos ou itens de uma determinada coleção em grupos com base na similaridade entre os itens. Por exemplo, os aplicativos relacionados à publicação de notícias online agrupam seus artigos de notícias usando clustering.

Aplicações de Clustering

  • O clustering é amplamente utilizado em muitas aplicações, como pesquisa de mercado, reconhecimento de padrões, análise de dados e processamento de imagens.

  • O agrupamento pode ajudar os profissionais de marketing a descobrir grupos distintos em sua base de clientes. E eles podem caracterizar seus grupos de clientes com base nos padrões de compra.

  • No campo da biologia, pode ser usado para derivar taxonomias de plantas e animais, categorizar genes com funcionalidade semelhante e obter informações sobre as estruturas inerentes às populações.

  • O agrupamento ajuda na identificação de áreas de uso da terra semelhantes em um banco de dados de observação da Terra.

  • O clustering também ajuda a classificar documentos na web para descoberta de informações.

  • O clustering é usado em aplicativos de detecção de outliers, como detecção de fraude de cartão de crédito.

  • Como uma função de mineração de dados, a Análise de Cluster serve como uma ferramenta para obter uma visão sobre a distribuição de dados para observar as características de cada cluster.

Usando o Mahout, podemos agrupar um determinado conjunto de dados. As etapas necessárias são as seguintes:

  • Algorithm Você precisa selecionar um algoritmo de clustering adequado para agrupar os elementos de um cluster.

  • Similarity and Dissimilarity Você precisa ter uma regra em vigor para verificar a similaridade entre os elementos recém-encontrados e os elementos nos grupos.

  • Stopping Condition Uma condição de parada é necessária para definir o ponto onde nenhum clustering é necessário.

Procedimento de Clustering

Para agrupar os dados fornecidos, você precisa -

  • Inicie o servidor Hadoop. Crie os diretórios necessários para armazenar arquivos no Hadoop File System. (Crie diretórios para arquivo de entrada, arquivo de sequência e saída em cluster no caso de dossel).

  • Copie o arquivo de entrada para o sistema de arquivos Hadoop do sistema de arquivos Unix.

  • Prepare o arquivo de sequência a partir dos dados de entrada.

  • Execute qualquer um dos algoritmos de clustering disponíveis.

  • Obtenha os dados agrupados.

Iniciando Hadoop

O Mahout funciona com o Hadoop, portanto, certifique-se de que o servidor Hadoop esteja instalado e funcionando.

$ cd HADOOP_HOME/bin
$ start-all.sh

Preparando diretórios de arquivos de entrada

Crie diretórios no sistema de arquivos Hadoop para armazenar o arquivo de entrada, arquivos de sequência e dados em cluster usando o seguinte comando:

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

Você pode verificar se o diretório é criado usando a interface da web hadoop no seguinte URL - http://localhost:50070/

Ele fornece a saída conforme mostrado abaixo:

Copiando arquivo de entrada para HDFS

Agora, copie o arquivo de dados de entrada do sistema de arquivos Linux para o diretório mahout_data no Hadoop File System, conforme mostrado abaixo. Suponha que seu arquivo de entrada seja mydata.txt e esteja no diretório / home / Hadoop / data /.

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

Preparando o Arquivo de Sequência

O Mahout fornece um utilitário para converter o arquivo de entrada fornecido em um formato de arquivo de sequência. Este utilitário requer dois parâmetros.

  • O diretório do arquivo de entrada onde residem os dados originais.
  • O diretório do arquivo de saída onde os dados agrupados devem ser armazenados.

A seguir está o prompt de ajuda do mahout seqdirectory Utilitário.

Step 1:Navegue até o diretório inicial do Mahout. Você pode obter ajuda do utilitário conforme mostrado abaixo:

[[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

Gere o arquivo de sequência usando o utilitário usando a seguinte sintaxe:

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 clustering

Mahout suporta dois algoritmos principais para clustering, a saber:

  • Agrupamento de canopy
  • Agrupamento K-means

Clustering Canopy

O clustering Canopy é uma técnica simples e rápida usada pelo Mahout para fins de clustering. Os objetos serão tratados como pontos em um espaço simples. Essa técnica é frequentemente usada como uma etapa inicial em outras técnicas de agrupamento, como agrupamento k-means. Você pode executar um trabalho Canopy usando a seguinte sintaxe:

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

O trabalho do Canopy requer um diretório de arquivo de entrada com o arquivo de sequência e um diretório de saída onde os dados agrupados devem ser armazenados.

Example

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

Você obterá os dados agrupados gerados no diretório de saída fornecido.

Clustering K-means

O agrupamento K-means é um algoritmo de agrupamento importante. O algoritmo de agrupamento k em k-means representa o número de clusters em que os dados devem ser divididos. Por exemplo, o valor k especificado para este algoritmo é selecionado como 3, o algoritmo irá dividir os dados em 3 clusters.

Cada objeto será representado como vetor no espaço. Inicialmente k pontos serão escolhidos pelo algoritmo de forma aleatória e tratados como centros, todos os objetos mais próximos de cada centro são agrupados. Existem vários algoritmos para medida de distância e o usuário deve escolher o desejado.

Creating Vector Files

  • Ao contrário do algoritmo Canopy, o algoritmo k-means requer arquivos vetoriais como entrada, portanto, você deve criar arquivos vetoriais.

  • Para gerar arquivos vetoriais a partir do formato de arquivo de sequência, o Mahout fornece o seq2parse Utilitário.

Abaixo estão algumas das opções de seq2parseUtilitário. Crie arquivos vetoriais usando essas opções.

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

Após criar os vetores, prossiga com o algoritmo k-means. A sintaxe para executar o trabalho k-means é a seguinte:

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>

O trabalho de cluster K-means requer um diretório de vetores de entrada, diretório de clusters de saída, medida de distância, número máximo de iterações a serem realizadas e um valor inteiro que representa o número de clusters em que os dados de entrada devem ser divididos.