Apache Mahout

mahout

Mahout – Aprendizado de Máquina na Era do Big Data

“Big Data está finalmente fazendo a transição de aulas de ciência da computação e aprendizado de máquina para diversos cenários do mundo real nas empresas, governo, ciência, política, medicina, clima, e análises pessoais”

O que é mahout?

#  É uma biblioteca de Aprendizado de Máquina escalável
#  É uma biblioteca Java
#  É executado em uma plataforma Hadoop
#  Criado em 2008 como parte do projeto Lucene
#  Se tornou um projeto Apache em 2010

O que é aprendizado de máquina?

Dada uma experiência anterior, um treinamento ou base de dados, permitir que um algorítimo seja capaz de responder apropriadamente à novas situações de dados

#  Fundamentos de aprendizado máquina
#  História do Mahout
#  Características do Apache Mahout
#  Mahout – Classificação

Algoritmos de Aprendizado de Máquina
Características de algoritmos de aprendizado de máquina:

#  Uso intensivo de recursos (CPU, memória e Hard Disk)
#  São aplicados ( Na maioria das vezes ) em um grande volume de dados
# Requisitos:
>> Distribuição dos dados
>> Distribuição de tarefas

Características de Analytics:

slide10

Descrição Analytics Big Data Analytics
Custo de armazenamento Alto Baixo
Análises Off Line Tempo Real
Velocidade de carregamento de dados Baixa Alta
Tempo de carregamento dos dados Longo 50 a 60% mais rápido
Variedade dos dados Estruturados Não Estruturados
Custo com suporte Gigabyte, Terabyte Petabyte, Exabyte
Tempo de administração Longo 60% mais rápido

Escalabilidade horizontal – Necessidade de executar algoritmos Aprendizado de Máquina em larga escala

eh

Bibliotecas de Aprendizado de MÁQUINA

Comparação entre bibliotecas de aprendizado de máquina

Biblioteca Licença Linguagem Escalável
Matlab Comercial C Não
Pacotes R Open Source R Não
Weka Open Source Java Não
Scikit-learn Open Source Python Não
Mahout Open Source Java SIM

Mahout Definição & CARATERÍSTICAS

Quando usar Mahout?

#  Quantidade de dados muito grande para uma única máquina
#  Dados já estão no Hadoop
#  Dificuldade em paralelizar algoritmo de aprendizado de máquina
#  Necessidade de baixa latência e alta vazão de dados

Atualmente Mahout fornece suporte os seguintes tipos de algoritmos:

#  Recomendação: Mahout oferece uma API para o desenvolvimento de recomendações baseadas no usuário e baseada no item.

#  Classificação: Decide o quanto um item pertence a uma categoria em particular. Mahout oferece um vasto conjunto de APIs para conseguir um modelo classificador.

#  Agrupamento (Clustering): Técnica que tenta agrupar itens com base em algum tipo de semelhança. Aqui, encontramos os diferentes conjuntos de itens com base em certas propriedades, e não sabemos o nome do cluster em antecedência.
A principal diferença entre o agrupamento e classificação é que em classificação já se o nome da classe final.

#  Redução Dimensional: Processo de redução do número de variáveis aleatórias sob consideração em um modelo. Isso faz com que dados fiquem mais fáceis de usar e o modelo se torne mais rápido.
Mahout fornece alguns algoritmos para a redução dimensional, tal como o Singular
Value Decomposition

#  Modelagem de tópicos: usada para capturar a ideia abstrata de um documento. Um modelo de tópico é um modelo que associa distribuição de probabilidade com cada documento sobre tópicos.
Levando em conta o tema de um documento, espera-se que palavras específicas apareçam com mais ou menos frequência.

Exemplo:

“Futebol” e “time” aparecerá mais em um documento sobre Esportes.

Os algoritmos do Mahout podem ser categorizados em dois grupos:

Algoritmos sequenciais: esses algoritmos são executados sequencialmente (não brinca 😮 )  e não usam o processamento paralelo do Hadoop.

Exemplos:

#  Filtragem colaborativa baseada no usuário,
#  Regressão logística,
#  Hidden Markov Model,
#  Multi-layer perceptron,
#  Singular value decomposition.

Algoritmos paralelos: esses algoritmos podem suportar petabytes de dados usando a função Map do Hadoop e, consequentemente, utilizando processamento paralelo.

Exemplos:

#  Random Forest,
#  Naïve Bayes,
#  Clustering.
#  K-means,

Classificação

Em aprendizado de máquina, a classificação é a automatização do processo de tomada de decisão que aprende a partir de exemplos do passado e emula as decisões automaticamente. A emulação das decisões automaticamente é um conceito central na análise preditiva

Uma consulta médica pode ser um exemplo da vida real sobre classificação.

O médico faz algumas perguntas, e com base em suas respostas, ele é capaz de identificar se você tem uma determinada doença ou não. A classificação é a categorização de respostas possíveis, e na aprendizagem de máquina, busca-se automatizar este processo.

Um problema relacionado a esta área é descobrir a probabilidade de um indivíduo pertencer a uma determinada classe.

A classificação é uma técnica de aprendizado supervisionado. Com ​ base em dados históricos, um agente aprende e adquire a capacidade para prever o desconhecido

“Entre os clientes da operadora Xis, quais aceitarão ou podem ter uma tendência a aceitar a oferta realizada pelo concorrente?”

Aprendizado supervisionado

“Os algoritmos presentes nessa categoria deduzem uma função a partir dos dados de treinamento, que consistem em pares de exemplos de entradas e saídas.

As saídas podem conter um rótulo utilizado para a classificação ou ser um valor contínuo. Dessa forma, o objetivo dos algoritmos desse tipo de aprendizado de máquina é predizer uma saída para qualquer entrada válida, após um treinamento suficiente.” (Mitchel, 1997)

No processo de Classificação, com o conjunto de dados obtido, tenta-se descobrir variáveis explanatórias que podemos reduzir a incerteza e categorizar alguma coisa.

Exemplo:

Um conjunto de dados sobre “pedidos de empréstimo do cliente”, busca-se construir um classificador para descobrir se um novo cliente é elegível para um empréstimo ou não.
Neste conjunto de dados, podemos ter os seguintes campos: Idade, Renda, Saldo da conta do cliente. O campo empréstimo concedido será a variável alvo.

Conjunto de dados de treinamento: a partir do conjunto de dados a ser utilizado, uma parte é utilizada para criar o conjunto de dados de treino. Este conjunto de dados é utilizado para construir o classificador. Todos os conjuntos de características são usados neste conjunto de dados.

Conjunto de dados de teste: o conjunto de dados que é deixado após o conjunto de dados de treinamento é usado para testar o modelo criado. Esse modelo é então utilizado para prever o valor da variável alvo.

Passos para a construção de um classificador

#  Coleta de dados históricos?
#  Limpeza dos dados
#  Definição de variáveis
#  Definição de variáveis explanatórias?
#  Seleção de um algoritmo?
#  Construção de um modelo
#  Execução com dados de teste
#  Avaliação do modelo
#  Ajuste de variáveis explanatórias
#  Executar novamente com a base de teste

Algoritmos de classificação suportados pelo Mahout

Regressão logística – Prever a probabilidade de algo ocorrer. Mahout oferece a regressão logística pelo algoritmo Stochastic Gradiente Descent.

Naïve Bayes – Algoritmo baseado no teorema de Bayes, muito popular para classificação de texto. Utiliza o conceito de probabilidade para classificar novos itens.

Hidden Markov Model (HMM) – Utilizado em diversas áreas como reconhecimento de fala, categorização de partes de um discurso, predição de genes, análise de série temporal, etc..

Random Forest – O algoritmo mais utilizado para classificação. Consiste em uma coleção de árvores preditoras, cada uma capaz de produzir uma resposta quando apresentada com um conjunto de variáveis explanatórias

Métodos para medir a qualidade predição :

Acurácia = classificados corretamente /total de exemplos
( Verdadeiros positivos + Verdadeiros Negativos) / (Positivos + Negativos )
Erro = 1-Acurácia

A matriz de confusão oferece uma medida efetiva do modelo de classificação, ao mostrar o número de classificações corretas versus as classificações preditas para cada classe, sobre um conjunto de exemplos T

Vamos supor que temos um classificador que classifica três frutas: morangos, cerejas e uvas. Supondo que temos uma amostra de 24 frutos: 7 morangos, 8 cerejas, e 9 uvas, a matriz de confusão resultante será como mostrado na tabela a seguir.

Neste modelo, a partir de 8 morangos, 3 foram classificados como cerejas. A partir das 8 cerejas, 2 foram classificados como morangos, e 1 foi classificado como uma uva. Das uvas, 1 é classificada como uma cereja.

A partir dessa matriz, vamos criar a tabela de confusão.

  Morangos Cerejas Uvas
Morangos 4 3 0
Cerejas 2 5 1
Uvas 0 1 8

O que se pode extrair da tabela confusão:

Precisão: proporção do número total de previsões que foram corretamente classificados. É calculado como (Verdadeiro Positivo + Verdadeiro Negativo) /
Positivo + Negativo. Considerando a = Verdadeiro Positivo, b = Verdadeiro Negativo, c = Positivo, d = Negativo. Precisão = (a + d) / (a ​ + b + c + d)

Valor preditivo positivo: proporção de casos positivos que foram corretamente classificados. É calculado como (Verdadeiro Positivo) / (Verdadeiro Positivo +
Falso Positivo). Portanto, precisão = a / (a ​ + b)

Valor preditivo negativo: proporção de casos negativos que foram classificadas corretamente. É calculado como Verdadeiro Negativo / (Verdadeiro Negativo +
Falso Negativo). Portanto, o valor preditivo negativo = d / (c + d)

Sensibilidade: proporção de casos reais positivos que foram corretamente identificados. Calculado como Verdadeiro positivo / (Verdadeiro Positivo + Falso
Negativo). Portanto, sensibilidade = a / (a ​ + c)

Especificidade: proporção dos casos reais negativos. Calculado como Verdadeiro Negativo / (Falso Positivo + Verdadeiro Negativo). Por isso, especificidade = d /(b+d)

Regressão logística

A regressão logística é um modelo utilizado para a previsão da probabilidade de ocorrência de um evento. Ele faz uso de várias variáveis de previsão que podem ser tanto numérica ou categóricas.

É utilizada para prever a resposta de um binário a partir de um preditor binário, usado para predizer o resultado de uma variável dependente categórica com base em uma ou mais variáveis de previsão (características).

Exemplos de aplicações:

#  Vendas: comprar ou não comprar
#  Marketing: aderir ou não aderir
#  Websites: click versus não-click
#  Cuidados da saúde: curar ou não curar
#  Game: vencer ou perder

Mahout implementa regressão logística com o algoritmo Stochastic Gradient Descent (SGD).

Este algoritmo é sequencial, porém permite rápido processamento, enquanto trabalha com grandes volumes de dados, o algoritmo SGD utiliza uma quantidade constante de memória independentemente do tamanho da entrada.

A implementação de regressão logística usando SGD no Mahout suporta os seguintes nomes de programas em linha de comando:

#  cat: Imprimir um arquivo ou recurso do modo que os modelos de regressão logística os vêem
#  runlogistic: Executar um modelo de regressão logística em relação aos dados de entrada
#  trainlogistic: treinar uma regressão logística, utilizando SGD

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s