2. 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
4. 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
5. Globalcode – Open4education
O Weka
Coleçã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 mining
Pré-processamento de texto
Classificação
Regressão
Clusterting
Regras de associação
Visualização de dados
Pode ser utilizado stand-alone (GUI) ou chamado em código Java
Embutido na suíte da Pentaho
7. 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
8. 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.arff
Dados de animais de um zoológico (classificação de tipo) – zoo.arff
Diversos outros na pasta data
9. Globalcode – Open4education
O Weka – Demo
Classificação do ‘iris dataset’ utilizando o algoritmo J48 (árvore de
decisão)
10. Globalcode – Open4education
O Weka – Chamada em Java
Documentação: http://weka.wikispaces.com/Programmatic+Use
Nota: 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 dados
3) Instancia o algoritmo utilizando alguma classe Classifier
4) Chame buildClassifier() do modelo
5) 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
11. Globalcode – Open4education
O Weka – Em produção
Foco do Weka é no ensino/aprendizado aprofundado
Mais de 70 projetos ativos baseados no Weka:
http://weka.wikispaces.com/Related+Projects
Weka com Spark? distributedWekaSpark
Weka com Python? python-weka-wrapper
Weka com Matlab? Matlab Weka Interface
Weka em R? RWeka - an R interface to Weka.
Grid computing: Grid Weka
Pentaho possui repositório com + 170 pacotes para Weka:
http://bit.ly/29xZxSp
Weka: muito bom para customizar algoritmo e não apenas para ficar
utilizando algo pronto
12. Globalcode – Open4education
R x Python x Weka
R: muito utilizado por quem já conhecia MatLab (estatísticos e
engenheiros)
Python: facilidade de aprendizado na linguagem
Weka: UI complicada e dificuldade na programação
Mercado adotando cada vez mais Python e R. Ex: SQL Server 2016 e
ecosistema Hadoop
Soluções na núvem abstraem vários detalhes
Outras abordagens: Scala, Lua e outras linguagens funcionais
13. Globalcode – Open4education
Aprendizado de Weka
Ótimos canais do Youtube:
https://www.youtube.com/user/WekaMOOC
https://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”
14. 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
Java
Instrumentação do IDE: captura eventos do Eclipse com plug-in
Dependendo da barreira, pode-se oferecer ajuda
Aplicações em educação (MOOCs) e projetos de software na
indústria
15. Globalcode – Open4education
Case: Design
Sem 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 texto
Run, Compile, Save
Navegação na UI
Debug, break point
Features separadas por intervalos. Critérios:
Save
Largura da LCS (Longest Common Subsequence)
Uso do Weka por facilitar integração com plug-in no Eclipse
16. 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)
17. Globalcode – Open4education
Conclusão
Existem diversas opções para colocar em prática projetos de ML
Weka é ferramenta víável para aprender machine learning
Não é usado somente no mundo acadêmico!
Weka é forte para quem quer entender funcionamento interno
de ML
E para criar/customizar seus próprios algoritmos!
Difícil para iniciantes em programação. UX ruim....
Conhecimentos específicos em Java são muito úteis
Possibilidades 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