Mahout - Classificação
O que é classificação?
Classificação é uma técnica de aprendizado de máquina que usa dados conhecidos para determinar como os novos dados devem ser classificados em um conjunto de categorias existentes. Por exemplo,
O aplicativo iTunes usa classificação para preparar listas de reprodução.
Provedores de serviços de correio, como Yahoo! e o Gmail usa essa técnica para decidir se um novo e-mail deve ser classificado como spam. O algoritmo de categorização se treina analisando os hábitos do usuário de marcar determinados e-mails como spam. Com base nisso, o classificador decide se uma futura correspondência deve ser depositada em sua caixa de entrada ou na pasta de spams.
Como funciona a classificação
Ao classificar um determinado conjunto de dados, o sistema classificador executa as seguintes ações:
- Inicialmente, um novo modelo de dados é preparado usando qualquer um dos algoritmos de aprendizagem.
- Em seguida, o modelo de dados preparado é testado.
- Depois disso, esse modelo de dados é usado para avaliar os novos dados e determinar sua classe.
Aplicações de Classificação
Credit card fraud detection- O mecanismo de classificação é usado para prever fraudes de cartão de crédito. Usando informações históricas de fraudes anteriores, o classificador pode prever quais transações futuras podem se transformar em fraudes.
Spam e-mails - Dependendo das características dos e-mails de spam anteriores, o classificador determina se um e-mail recém-encontrado deve ser enviado para a pasta de spam.
Classificador Naive Bayes
Mahout usa o algoritmo classificador Naive Bayes. Ele usa duas implementações:
- Classificação distribuída de Naive Bayes
- Classificação complementar Naive Bayes
Naive Bayes é uma técnica simples para construir classificadores. Não é um único algoritmo para treinar esses classificadores, mas uma família de algoritmos. Um classificador Bayes constrói modelos para classificar as instâncias do problema. Essas classificações são feitas com base nos dados disponíveis.
Uma vantagem do Bayes ingênuo é que ele requer apenas uma pequena quantidade de dados de treinamento para estimar os parâmetros necessários para a classificação.
Para alguns tipos de modelos de probabilidade, os classificadores Bayes ingênuos podem ser treinados de forma muito eficiente em um ambiente de aprendizado supervisionado.
Apesar de suas suposições simplificadas demais, os classificadores Bayes ingênuos funcionaram muito bem em muitas situações complexas do mundo real.
Procedimento de Classificação
As seguintes etapas devem ser seguidas para implementar a Classificação:
- Gere dados de exemplo
- Crie arquivos de sequência a partir de dados
- Converter arquivos de sequência em vetores
- Treine os vetores
- Teste os vetores
Etapa 1: gerar dados de exemplo
Gere ou baixe os dados a serem classificados. Por exemplo, você pode obter o20 newsgroups dados de exemplo do seguinte link: http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
Crie um diretório para armazenar dados de entrada. Baixe o exemplo conforme mostrado abaixo.
$ mkdir classification_example
$ cd classification_example
$tar xzvf 20news-bydate.tar.gz
wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
Etapa 2: criar arquivos de sequência
Crie um arquivo de sequência a partir do exemplo usando seqdirectoryUtilitário. A sintaxe para gerar a sequência é fornecida a seguir:
mahout seqdirectory -i <input file path> -o <output directory>
Etapa 3: converter arquivos de sequência em vetores
Crie arquivos vetoriais a partir de arquivos de sequência usando seq2parseUtilitário. As opções deseq2parse utilitários são fornecidos abaixo:
$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.
Etapa 4: treinar os vetores
Treine os vetores gerados usando o trainnbUtilitário. As opções para usartrainnb utilitários são fornecidos abaixo:
mahout trainnb
-i ${PATH_TO_TFIDF_VECTORS}
-el
-o ${PATH_TO_MODEL}/model
-li ${PATH_TO_MODEL}/labelindex
-ow
-c
Etapa 5: teste os vetores
Teste os vetores usando testnbUtilitário. As opções para usartestnb utilitários são fornecidos abaixo:
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