machine learning java ce conference 2012 - fortaleza ce
DESCRIPTION
Apresentação feita no JavaCE Conference 2012 - Fortaleza / CETRANSCRIPT
Machine learning, kidiabéisso!
JavaCE Community Conference 2012!
" " " " " " " " " " "!" " " " " " " " " " "@lucabastos!
Quem sou eu
Luca Bastos, conhecido apenas na família e pelo gerente do banco como Luiz Arnaldo de Gusmão Bastos.
Luca Bastos, conhecido apenas na família e pelo gerente do banco como Luiz Arnaldo de Gusmão Bastos.
Dev do tempo da Carochinha.
Luca Bastos, conhecido apenas na família e pelo gerente do banco como Luiz Arnaldo de Gusmão Bastos.
Dev do tempo da Carochinha.
Eterno aprendiz. Fazer com paixão, aprender e compartilhar sempre.
Minha receita de vida que sigo aplicando na Concrete Solutions em SP.
Se tiver uma chance, vem trabalhar com a gente.
Garanto que a Concrete Solutions é um lugar legal de trabalhar.
Machine Learning, kidiabéisso
Machine Learning, kidiabéisso
Machine Learning, definições
ML estuda como construir sistemas
que automaticamente melhorem com a experiência
ML estuda como construir sistemas
que automaticamente melhorem com a experiência
e quais são as leis fundamentais que governam os processos de aprendizado.
ML estuda como construir sistemas
que automaticamente melhorem com a experiência
e quais são as leis fundamentais que governam os processos de aprendizado.
Tom Mitchel, CMU
Com dados extraídos do universo se tentam construir modelos.
Com dados extraídos do universo se tentam construir modelos.
Outra definição!
Conjunto de ferramentas e métodos
Conjunto de ferramentas e métodos
que visa perceber padrões e extrair visões
Conjunto de ferramentas e métodos
que visa perceber padrões e extrair visões
a partir de registros de observações e dados de exemplos ou experiências passadas.
Ciência que faz computadores agirem sem ser explicitamente programados!
Ciência que faz computadores agirem sem ser explicitamente programados!
O que usamos:
O que usamos:
Algoritmos"
O que usamos:
Algoritmos"
+ computação on-demand
O que usamos:
Algoritmos"
+ computação on-demand
+ dados que estão em toda a parte
O que usamos:
Algoritmos"
+ computação on-demand
+ dados que estão em toda a parte
17 horas - Fernando Meyer: Big data analytics – Por que o dado por si só não significa nada.
Supervised learning!
A máquina aprende a partir de dados onde a gente específica uma variável alvo.
Supervised learning!
A máquina aprende a partir de dados onde a gente específica uma variável alvo.
A gente sabe o que está procurando.
Supervised learning!
A máquina aprende a partir de dados onde a gente específica uma variável alvo.
A gente sabe o que está procurando.
Usamos a estrutura dos nossos dados para obter as respostas.
Unsupervised learning!
Não sabemos o que procurar e perguntamos a máquina o que os dados tem em comum.
Unsupervised learning!
Não sabemos o que procurar e perguntamos a máquina o que os dados tem em comum.
Queremos descobrir estrutura em nossos dados.
Algoritmos!
“I would rather have today’s algorithms on yesterday’s computers than vice versa”
Prof. Philippe Toint
Quais tipos de problemas podemos resolver?!
Agrupar coisas relacionadas - clustering
Agrupar coisas relacionadas - clustering
Agrupar coisas relacionadas - clustering
Agrupar coisas relacionadas - clustering
Exemplo de clustering:
Linkedin, Skills & Expertise:"
http://www.linkedin.com/skills/skill/Machine_Learning?trk=skills-hp-search
Clustering: Linkedin, Skills & Expertise
Previsões
Podem se dividir de acordo com o tipo de tarefa que faz:
Previsões
Podem se dividir de acordo com o tipo de tarefa que faz:
Classificação – prevê resultados qualitativos discretos do tipo S/N, morre/sobrevive
Regressão – prevê resultados quantitativos
Classificação
Classificação consiste em rotular um input baseado em dados previamente vistos
Classificação consiste em rotular um input baseado em dados previamente vistos
Filtro anti spam
Identificação de linguagem
Detecção de rosto (você conhece o rosto)
Classificação consiste em rotular um input baseado em dados previamente vistos
Filtro anti spam
Identificação de linguagem
Detecção de rosto (você conhece o rosto)
Classificação: Identificação de linguagem
Classificação: detectar padrões em imagens
Classificação: separar cães de gatos
Recomendações
Recomendações
Recomendações
Detecção de anomalias
Detecção de anomalias
Detecção de anomalias
Reconhecer padrão de intrusão
Resolver ambiguidades
Fraudes financeiras
Extrair regras a partir de associações
Extrair regras a partir de associações
luiz você seu CS oferta jantar mês eu ! ?
email! 1.27 1.28 0.44 0.90 0.07 0.43 0.11 0.42 0.18 0.29
Exemplo: regra anti-spam
De um monte de mensagens, colocamos na tabela abaixo as frequências relativas das palavras mais comuns e as marcas de pontuação do que é spam ou não:
luiz você seu CS oferta jantar mês eu ! ?
email! 1.27 1.28 0.44 0.90 0.07 0.43 0.11 0.42 0.18 0.29
Exemplo: regra anti-spam
De um monte de mensagens, colocamos na tabela abaixo as frequências relativas das palavras mais comuns e as marcas de pontuação do que é spam ou não:
Por pura observação a gente poderia criar uma regra como:
Se (“luiz” < 0.60) e (“você” > 1.50) então é spam
Em quais áreas se costuma usar?!
Web mining
Web mining"
Decisões que envolvem julgamento
Web mining"
Decisões que envolvem julgamento
Examinar imagens (screening)
Web mining"
Decisões que envolvem julgamento
Examinar imagens (screening)
Previsões
Web mining"
Decisões que envolvem julgamento
Examinar imagens (screening)
Previsões
Diagnósticos
Web mining"
Decisões que envolvem julgamento
Examinar imagens (screening)
Previsões
Diagnósticos"
Análises de marketing e de vendas
Qual conhecimento é mais desejável?!
Já disseram que "
Data Mining = estatística + marketing
Qual a diferença entre Data Mining e Machine Learning?
DM foca na extração de conhecimento compreensível (padrões estruturais que capturam de uma maneira explicita o conhecimento).
https://sites.google.com/site/gladyscjaprendizagem/program/data-mining-machine-learning
ML centra-se mais nos métodos computacionais que fazem possível que computadores aprendam e melhorem o seu desempenho com a experiência.
https://sites.google.com/site/gladyscjaprendizagem/program/data-mining-machine-learning
Não há como fugir de estatística em ML!
Machine Learning ≅
Machine Learning ≅
interseção de matemática e estatística com engenharia de software e ciência da computação
Vamos falar de probabilidade
Probabilidade
= Número de vezes que um determinado evento pode ocorrer em relação ao total de ocorrências
Probabilidade
= Número de vezes que um determinado evento pode ocorrer em relação ao total de ocorrências
P(A) é a probabilidade de que A seja verdadeiro
0 ≤ P(A) ≤ 1
Probabilidade de ocorrer um evento A em um espaço S
P(A) = número de casos possíveis
= número de casos favoráveis n(A) n(S)
Qual a chance de sairem 2 números seis ao lançar um par de dados?
Qual a chance de sairem 2 números seis ao lançar um par de dados?
Resposta = ⅙ × ⅙ !
Naïve Bayes
P(Ai | E) = P(Ai) . P(E|Ai)
Σ P(Aj).P(E|AJ)
Ver: h#p://blog.concretesolu3ons.com.br/2012/02/naive-‐bayes-‐resposta-‐do-‐tes3nho-‐4/
J=1
k
Weka!
Machine learning com Java
Weka
Waikato Environment for Knowledge Analysis
Weka
Waikato Environment for Knowledge Analysis
Criado por pesquisadores da Universidade de Waikato na Nova Zelândia
Weka
Waikato Environment for Knowledge Analysis
Criado por pesquisadores da Universidade de Waikato na Nova Zelândia
Também é nome de uma ave nativa da NZL
É uma coleção de algoritmos de machine learning no estado da arte úteis para tarefas de data mining e mais diversas ferramentas de pré-processamento de dados.
É uma coleção de algoritmos de machine learning no estado da arte úteis para tarefas de data mining e mais diversas ferramentas de pré-processamento de dados.
Eles podem ser aplicados diretamente a um conjunto de dados ou chamados via código Java
Principais facilidades:
49 ferramentas de pré-processamento de dados
76 algoritmos de classificação e regressão
8 algoritmos de clustering
3 algoritmos para achar regras de associação
Principais facilidades – parte 2:
10 algoritmos para seleção de atributos
3 graphical user interfaces
- Explorer – exploratory data analysis - Experimenter – experimental environment - KnowledgeFlow – configurável para
streamed data processing
Interface de linha de comando
O Weka foi feito em Java e é distribuído como open source sob licença GPL2.0 para v.3.6
O Weka foi feito em Java e é distribuído como open source sob licença GPL3.0 Weka > 3.7.5
Download a partir de:
http://www.cs.waikato.ac.nz/ml/weka/
Quem usa OSX, na hora de instalar o .dmg, além de copiar weka-3-6-6.app para Aplicativos,
Quem usa OSX, na hora de instalar o .dmg, além de copiar weka-3-6-6.app para Aplicativos,
precisa copiar para algum lugar a seu gosto, o diretório que contém os docs, isto é, weka-3-6-6 (versão que estou usando)
As classes são organizadas como pacotes que podem ser importados por uma aplicação Java normal (GPL).
O tamanho máximo da heap padrão do Java é insuficiente para executar ou usar o Weka. Aumente usando o flag -Xmx2048M. "
O flag -server usa -Xmx2048M e é o default no OSX. Mas o Weka vem com –Xmx256M. No OSX use o Xcode para editar o Info.plist e alterar Java/VMOptions.
Veja mais sobre configurações do Java em: http://www.arquiteturajava.com.br/livro/principios-de-garbage-collection.pdf
http://java.dzone.com/articles/how-tame-java-gc-pauses
Os recursos de pré-processamento, os algoritmos de ML e as saídas gráficas podem ser usados através de uma interface gráfica de usuário (GUI) chamada de Weka workbench.
O workbench pode ser usado de 4 modos:
Explorer
Interface gráfica que dá acesso a todas as facilidades usando seleção via menu e preenchimento de formulários.
Explorer
Interface gráfica que dá acesso a todas as facilidades usando seleção via menu e preenchimento de formulários.
Fácil de usar mas carrega TODOS os dados na memória. Casos pequenos e médios.
Explorer
Interface gráfica que dá acesso a todas as facilidades usando seleção via menu e preenchimento de formulários.
Fácil de usar mas carrega TODOS os dados na memória. Casos pequenos e médios.
Faz pré-processamento de dados, executa os algoritmos, mostra saídas e gráficos.
Explorer
Explorer – pré processamento
Dados importados com vários formatos: arff, csv, c4.5, binário
Dados lidos de uma URL ou de um banco de dados relacional via JDBC
Filtros (ferramentas de pré-processamento): discretização, normalização, resampling, seleção, combinação e transformação de atributos,…
Arquivo .arff
Explorer com testinho5.arff lido
Classificação
Escolha do método de classificação
Método de classificação – decision tree J48
Decision tree J48 - processada
Escolha de saída gráfica
Saída gráfica da decision tree J48
Experimenter
Experimentar e avaliar algoritmos de ML. Saber qual o mais adequado.
Experimenter
Experimentar e avaliar algoritmos de ML. Saber qual o mais adequado.
Comparar técnicas de aprendizado. Vai além do Explorer porque permite automatizar rodando com diferentes parâmetros.
Experimenter
Experimentar e avaliar algoritmos de ML. Saber qual o mais adequado.
Comparar técnicas de aprendizado. Vai além do Explorer porque permite automatizar rodando com diferentes parâmetros.
Distribuir cargas por várias JVMs via RMI.
Experimenter
KnowledgeFlow
Projetar configurações para streamed data processing.
KnowledgeFlow
Projetar configurações para streamed data processing.
Arrastar caixas representando algoritmos e data sources unindo-os para carregar e processar de forma incremental.
KnowledgeFlow
Projetar configurações para streamed data processing.
Arrastar caixas representando algoritmos e data sources unindo-os para carregar e processar de forma incremental.
Os algoritmos incrementais do Weka contornam a questão do Explorer não conseguir tratar problemas grandes.
KnowledgeFlow
Simple CLI
Uma interface simples que permite digitar comandos.
Simple CLI
Uma interface simples que permite digitar comandos.
De forma alternativa, se pode usar a CLI do sistema operacional para classes do weka.jar (segundo o README, precisa adicionar $WEKAINSTALL/weka.jar no seu CLASSPATH).
Simple CLI
Referências:!
Programming Collective Intelligence de Toby Segaran
Data Mining – Practical Machine Learning Tools and Techniques, Witten, Frank & Hall
Revista Mundo Java número 24 Jul/Ago 2007"Artigo:
Mineração de Dados em Java: Weka de Rafael Santos
IBM developerWorks:
Data mining with WEKA, Part 1: Introduction and regression
Data mining with WEKA, Part 2: Classification and clustering
Data mining with WEKA, Part 3: Nearest Neighbor and server-side library
Introdução a mineração de dados utilizando o Weka – Marcelo Damasceno - V CONNEPI, Maceió 2010
Uma Abordagem para Classificação Online de Tráfego TCP, InfoBrasil, Fortaleza, Março 2012
Naive Bayes com estimação de densidade de kernel para Classificação de Tráfego Internet, InfoBrasil, Fortaleza, Março 2012
@lucabastos
Um dos maiores eventos de TI do hemisfério sul!
3 a 7 de setembro !no Hotel Maksoud Plaza em SP!
Espero vocês lá!