Machine learning java ce conference 2012 - fortaleza ce

Post on 14-Dec-2014

2.233 views 1 download

description

Apresentação feita no JavaCE Conference 2012 - Fortaleza / CE

Transcript of Machine learning java ce conference 2012 - fortaleza ce

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á!