Globalcode – Open4education
Trilha machine learning - Python x
R: mas e o Weka?
Dr. Mauro Pichiliani
mauro@pichiliani.com.br
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
Globalcode – Open4education
Agenda
Machine learning e ferramentas
O Weka
Demo
R x Python x Weka
Case: Predição de dificuldade
Conclusão
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
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
Globalcode – Open4education
O Weka – interesse
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
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
Globalcode – Open4education
O Weka – Demo
Classificação do ‘iris dataset’ utilizando o algoritmo J48 (árvore de
decisão)
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
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
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
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”
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
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
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)
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
Globalcode – Open4education
Perguntas?
Dr. Mauro Pichiliani
mauro@pichiliani.com.br
@pichiliani @databasecast

Python x R: mas e o Weka?

  • 1.
    Globalcode – Open4education Trilhamachine learning - Python x R: mas e o Weka? Dr. Mauro Pichiliani mauro@pichiliani.com.br
  • 2.
    Globalcode – Open4education Quemsou 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
  • 3.
    Globalcode – Open4education Agenda Machinelearning e ferramentas O Weka Demo R x Python x Weka Case: Predição de dificuldade Conclusão
  • 4.
    Globalcode – Open4education Machinelearning 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 OWeka 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
  • 6.
  • 7.
    Globalcode – Open4education OWeka – 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 OWeka – 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 OWeka – Demo Classificação do ‘iris dataset’ utilizando o algoritmo J48 (árvore de decisão)
  • 10.
    Globalcode – Open4education OWeka – 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 OWeka – 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 Rx 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 Aprendizadode 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 Existemdiversas 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
  • 18.
    Globalcode – Open4education Perguntas? Dr.Mauro Pichiliani mauro@pichiliani.com.br @pichiliani @databasecast