TDC2016SP - Python x R: mas e o Weka?

18
Globalcode – Open4education Trilha machine learning - Python x R: mas e o Weka? Dr. Mauro Pichiliani [email protected]

Transcript of TDC2016SP - Python x R: mas e o Weka?

Page 1: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Trilha machine learning - Python x R: mas e o Weka?

Dr. Mauro [email protected]

Page 2: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Quem sou eu

Mestre e doutor em computação pelo ITA

Escritor da SQL Magazine, .NET e Java Magazine

Colaborador do iMasters há 15 anos

Autor do livro “Conversando sobre banco de dados”

Co-produtor do DatabaseCast

Consultor independente e autor de cursos on-line

Page 3: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Agenda

Machine learning e ferramentas

O Weka

Demo

R x Python x Weka

Case: Predição de dificuldade

Conclusão

Page 4: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Machine learning e ferramentas

Mercado atual possui MUITAS ferramentas!Críticas:

Precisamos de tantas?E quanto a conhecer melhor o problema?Criar próprio algoritmo ou combinar técnicas?Soluções na núvem “salvam o dia”?

Kaggle e a realidade:Talvez 5-10% do que um cientista de dados usa?Denúncias de fraudes em rankings!

http://bit.ly/1syNk5n

Page 5: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O WekaColeção de algoritmos de machine learning para tarefas de mineração de dados

Projeto acadêmico desde 1993: univ. de Waikato (NZ). Versão atual: 3.8 (http://bit.ly/29xLbld)

Pode ser utilizado para Big Data. Foco em:Ensino e aprendizado de machine learning e data miningPré-processamento de textoClassificaçãoRegressãoClustertingRegras de associaçãoVisualização de dados

Pode ser utilizado stand-alone (GUI) ou chamado em código JavaEmbutido na suíte da PentahoMuita documentação e forte comunidade de desenvolvedores

Page 6: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – interesse

Page 7: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – Divisão da interface

Explorer: uso geral (pré-processamento, clusterizaç!ao, classificação, visualização)

Experimenter: controle de treinamento (divisão dos conjunto testes/treinamento, cross-valitation, etc)

KnowledgeFlow: Tarefas de ETL como fluxos de dados

Workbench: GUI antiga

Simple CLI: linha de comandos ao estilo R

Page 8: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – Dados

Weka suporta vários formatos de dados: Texto, URL, Database (JDBC) e geração automática

Formato de dados comum: arquivo ARFF (http://weka.wikispaces.com/ARFF)

Definição com palavras chaves prefixadas com @. Exemplos: @RELATION, @ATTRIBUTE e @DATA

Exemplos:Dados de tamanho de elementos de flores (famoso ‘iris dataset’) – iris.arffDados de animais de um zoológico (classificação de tipo) – zoo.arffDiversos outros na pasta \data

Page 9: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – Demo

Classificação do ‘iris dataset’ utilizando o algoritmo J48 (árvore de decisão)

Page 10: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – Chamada em Java

Documentação: http://weka.wikispaces.com/Programmatic+UseNota: Não esqueça do arquivo weka.jar!

Exemplo de classificação:1) Leia dados do arquivo ARFF (ou de outra fonte de dados)2) Crie instância da classe Instances para guardar dados3) Instancia o algoritmo utilizando alguma classe Classifier4) Chame buildClassifier() do modelo5) Obtenha os resultados na classe Evaluation

Demo: Acurácia de modelos com algoritmos J48, PART, DecisionTable e DecisionDump para classificação simples de jogo de tênis

Arquivos: weather.txt e WekaTest.java

Page 11: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

O Weka – Em produçãoFoco do Weka é no ensino/aprendizado aprofundadoMais de 70 projetos ativos baseados no Weka: http://weka.wikispaces.com/Related+Projects

Weka com Spark? distributedWekaSparkWeka com Python? python-weka-wrapperWeka com Matlab? Matlab Weka InterfaceWeka em R? RWeka - an R interface to Weka.Grid computing: Grid Weka

Pentaho possui repositório com + 170 pacotes para Weka: http://bit.ly/29xZxSpWeka: muito bom para customizar algoritmo e não apenas para ficar utilizando algo pronto

Page 12: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

R x Python x WekaR: muito utilizado por quem já conhecia MatLab (estatísticos e engenheiros)Python: facilidade de aprendizado na linguagemWeka: UI complicada e dificuldade na programação

Mercado adotando cada vez mais Python e R. Ex: SQL Server 2016 e ecosistema HadoopSoluções na núvem abstraem vários detalhesOutras abordagens: Scala, Lua e outras linguagens funcionais

Page 13: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Aprendizado de WekaÓtimos canais do Youtube:

https://www.youtube.com/user/WekaMOOChttps://www.youtube.com/user/rushdishams/videos

MOOC - Cursos da universidade de Waikato:https://weka.waikato.ac.nz/explorer

Kaggle: Data Analysis in Weka:https://www.kaggle.com/wiki/Start

Livro “Data Mining: Practical Machine Learning Tools and Techniques”

Page 14: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Case: Predição de dificuldade

Objetivo: prever barreiras de programadores durante a codificação

Carter, C., Dewan P., Pichiliani, M. “Towards Incremental Separation of Surmountable and Insurmountable Programming Difficulties”http://dl.acm.org/citation.cfm?id=2677294&CFID=641140328&CFTOKEN=84606346

Contexto:Detectar tipo de barreira (intransponível ou não) de programadores JavaInstrumentação do IDE: captura eventos do Eclipse com plug-inDependendo da barreira, pode-se oferecer ajudaAplicações em educação (MOOCs) e projetos de software na indústria

Page 15: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Case: DesignSem dataset treinado: foi necessário elaborar experimento com participantes para gerar amostra classificada

Design: features são ações de programação:ContentAssist (intellisense)Inserção, remoção e alteração de textoRun, Compile, SaveNavegação na UIDebug, break point

Features separadas por intervalos. Critérios:SaveLargura da LCS (Longest Common Subsequence)

Uso do Weka por facilitar integração com plug-in no Eclipse

Page 16: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Case: Resultados

Diversos algoritmos testados. Melhores resultados com K-NN (k=25)

Abordagens anteriores com margem de ~50% de predição

Resultados obtidos: ~96% de predição (não intransponíveis) e 63% (intransponíveis)

Resultados aplicados em tese de doutorado e aprimorados com classificação de programador fazendo progresso ou “emperrado” (stuck)

Resultados combinados com outras métricas do programador (body tracking)

Page 17: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

ConclusãoExistem diversas opções para colocar em prática projetos de MLWeka é ferramenta víável para aprender machine learning

Não é usado somente no mundo acadêmico!

Weka é forte para quem quer entender funcionamento interno de MLE para criar/customizar seus próprios algoritmos!

Difícil para iniciantes em programação. UX ruim....Conhecimentos específicos em Java são muito úteisPossibilidades para escalar e integar em sistemas/aplicações (desktop)Opinião: R e Python vão continuar sendo tecnologias de destaque no mundo de machine learning

Page 18: TDC2016SP - Python x R: mas e o Weka?

Globalcode – Open4education

Perguntas?

Dr. Mauro [email protected]@pichiliani @databasecast