Weka em aplicações java

5,117 views
4,913 views

Published on

Mini curso apresentado no I Workshop de Mineração de Dados - UFAM 2012

Published in: Education
2 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
5,117
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
160
Comments
2
Likes
5
Embeds 0
No embeds

No notes for slide

Weka em aplicações java

  1. 1. Mineração de dados com o WEKA 3.7.6 Márcio Palheta Ludimila Gonçalves Workshop de Mineração de Dados Julho de 2012 1
  2. 2. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 2
  3. 3. Ambiente de desenvolvimento• Sistema Operacional: Linux - Ubuntu• JAVA SDK 1.7: – http://www.oracle.com/technetwork/java/javase/ downloads/index.html• WEKA 3.7.6: – http://www.cs.waikato.ac.nz/ml/weka/index_dow nloading.html• Eclipse JUNO: http://eclipse.org/downloads/ 3
  4. 4. Arquivos baixados 4
  5. 5. Instalação do JDK 7• Por questões de licença, o JDK 7 não faz parte do repositório oficial do Ubuntu 11.10• Baixe e descompacte a versão do JDK, de acordo com a versão do seu S.O.• Para este treinamento, vamos criar uma pasta padrão para armazenar nossos software: – /usr/lib/java• Vamos mover a pasta descompactada 5
  6. 6. Instalação do JDK 7• Para este exemplo, baixamos o arquivo: – Jdk-7u5-linux-x64.tar.gz• Executamos o seguinte script: 6
  7. 7. Definindo a versão correta do JAVA• Versão do JAVA no terminal: – $ java -version• Temos problemas, caso apareça algo como: – "java version 1.6" ou "Command not found"• O Ubuntu trabalha com links para aplicações• Os links genéricos podem ficar no diretório: – /usr/bin 7
  8. 8. Definição de links no Ubuntu• Verifique se já existe um link java criado: – $ cd /usr/bin – $ ls -lath java• Resultado da execução: – lrwxrwxrwx 1 root root 25 2012-07-11 10:18 java - > /XXX/YYY/bin/java – sendo XXX e YYY o local onde a versão incorreta do Java está instalada 8
  9. 9. Definição de links no Ubuntu• Vamos apagar o link errado: – $ sudo rm java• E criar o link para a versão correta: – $ sudo ln -s /usr/lib/java/jdk1.7.0_05/bin/java java• Depois disso, vamos testar novamente a versão do java: – $ cd – $ java -version 9
  10. 10. Definição de links no Ubuntu 10
  11. 11. Instalação do Eclipse• Baixamos os arquivo: eclipse-...-x86_64.tar.gz• Descompacte, mova para a pasta padrão e• Crie um link e teste o eclipse: 11
  12. 12. Definição do workspace• Selecione uma pasta para trabalhar: 12
  13. 13. Tela de boas vindas 13
  14. 14. Instalação do WEKA• Baixe a versão adequada ao seu S.O.• Descompacte na pasta padrão• Execute o arquivo weka.jar 14
  15. 15. Variáveis de ambiente• Verifique se a variável $JAVA_HOME foi definida – echo $JAVA_HOME• Para definição, edite o arquivo /etc/environment – sudo gedit /etc/environment• Inclua: – PATH="/usr/lib/java/jdk1.7.0_05/bin:(outros...)" – JAVA_HOME="/usr/lib/java/jdk1.7.0_05/bin/java" – CLASSPATH="/usr/lib/java/weka-3-7-6/weka.jar 15
  16. 16. Definição das variáveis de ambiente• Edição do arquivo /etc/environment 16
  17. 17. Teste das variáveis de ambiente• Encerre a sessão atual e realize novo login• Teste as variáveis de ambiente com echo: 17
  18. 18. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 18
  19. 19. Problemas de Classificação• Um classificador ou modelo de classificação verifica a que classe pertence uma determinada instância da base de dados• Estuda a relação entre os valores dos atributos da instância para determinar a classe;• Tipos de atributo: – Classe: indica a classe de uma instância; – Preditivos: estudados para a descoberta da relação com o atributo classe 19
  20. 20. Classificação por Árvore de Decisão 20
  21. 21. Árvore de decisão• Indica se uma pessoa é rica ou não, com base em seus atributos preditivos:• Nó interno: – Teste do atributo• Nó folha: – Classe encontrada 21
  22. 22. Montando a árvore• Usamos a Árvore de Decisão para: – Previsão: um cliente será um bom pagador? – Descrição: informações interessantes das relações• Regras de classificação – (Escolaridade == “Graduação”) Þ (Rico == “Não”) – (Escolaridade == “Doutorado”) Þ (Rico == “Sim”) – (Escolaridade == “Mestrado”) & (Idade = “>30”) • Þ (Rico = “Sim”) – (Escolaridade = “Mestrado”) & (Idade = “<=30”) • Þ (Rico = “Não”) 22
  23. 23. Classificação na prática – Jogar golfe? 23
  24. 24. Arquivos .arff• Arquivos de texto usados como base pelo WEKA• @relation: primeira linha que indica relação ou tarefa de estudo• @attribute: nome e tipo de cada atributo – Nominal: lista de itens separados por “,”.Ex {true,false} – Numérico: nome seguido da palavra-chave real; – O último representa a classe - classificação• @data: cada linha representa uma instância, com valores separados por “,”, na ordem dos atributos 24
  25. 25. Arquivos .arff comuns• O weka disponibiliza alguns arquivos com dados para teste da aplicação• Os arquivos ficam na pasta .../weka/data/• Neste curso, a pasta data está em: – /usr/lib/java/weka-3-7-6/data• O arquivo .../data/weather.arff – Previsão de jogar ou não jogar golfe – Usa informações meteorológicas básicas 25
  26. 26. .../weka/data/weather.arff 26
  27. 27. Árvore de decisão com weather.arff• O Algoritmo J4.8 executa a árvore de decisão• Execução definindo o classpath (-cp): – $ java -cp /usr/lib/java/weka-3-4-4/weka.jar weka.classifiers.trees.J48 -t /usr/lib/java/weka-3-4-4/data/weather.arff• Execução usando a variável de ambiente: – $ java weka.classifiers.trees.J48 -t /usr/lib/java/weka-3-4-4/data/weather.arff 27
  28. 28. Resultado do processamento• Arquivo resultado do J4.8 > j48.txt 28
  29. 29. Resultado do treinamento 29
  30. 30. Validação cruzada 30
  31. 31. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 31
  32. 32. Classificação usando K-Means• K-Means é um algoritmo usado para classificação, baseado na descoberta de grupos de instâncias com características semelhantes;• K - representa o número de classes que o algoritmo deve encontrar;• Um objeto pode ser visto como um vetor de suas N características, em um espaço N-dimensional 32
  33. 33. Passos do algoritmo• Definição do número de classes: K• Comparação da distância entre cada instância;• Uso da distância euclidiana;• Depois de calcular a distância entre objetos, são calculados os centroides de cada classe;• A cada iteração, o valor do centroide é refinado, até que ocorra a convergência; 33
  34. 34. Classificação usando K-Means• O K-means é algoritmo não supervisionado 34
  35. 35. Movendo os centroides 35
  36. 36. K-means na prática• O arquivo .../data/iris.arff – Classificação em {setosa, versicolor, virginica} – Usa informações como o tamanho das pétalas 36
  37. 37. Arquivo iris.arff atualizado• Iris-noclass.arff modificado: sem classes 37
  38. 38. Execução do K-Means• Execução usando a variável de ambiente: – $ java weka.clusterers.SimpleKMeans -t /usr/lib/java/weka-3-4-4/data/iris-noclass.arff -N 3 > /usr/lib/java/weka-3-4-4/data/resp-kmeans.txt 38
  39. 39. Resultado do processamento 39
  40. 40. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 40
  41. 41. Regras de associação 41
  42. 42. Regras de associação – compras.arff• Vamos criar o arquivo compras.arff• Indica se um produto foi comprado: – sim ou não• O arquivo possui valores discretos ou nominais; 42
  43. 43. Buscando regras de associação• Apriori – algoritmo que encontra conjuntos de itens frequentes, chamados itemsets;• Dada uma regra de associação onde A Þ B – Suporte: representa a porcentagem de transações da base de dados que contêm os itens de A e B, indicando a relevância da regra; – Confiança: representa, dentre as transações que possuem os itens de A, a porcentagem de transações que possuem também os itens de B, indicando a validade da regra 43
  44. 44. Execução do algoritmo• Execução do algoritmo Apriori, na linha de comando:• $ java weka.associations.Apriori -t compras.arff > resp-apriori.txt 44
  45. 45. Resultado do processamento• Arquivo resp-apriori.txt gerado: valores padrões 45
  46. 46. resp-apriori.txt (continuação)• Lista de regras encontradas: default == 10 46
  47. 47. Exercício Apriori• Execute novamente o algoritmo, realizando as seguintes alterações:• Altere o valor do suporte mínimo: – Argumento – M• Altere o número de regras listadas: – Argumento – N• Liste os itemsets gerados: – Argumento – I 47
  48. 48. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 48
  49. 49. Discretizando dados contínuos• Às vezes, não poderemos executar o algoritmo Apriori diretamente em um conjunto de dados• Dados numéricos dados discretos ou nominais• O Weka possui ferramenta para discretização• Rotina para trocar a categoria numérica por uma nominal, correspondente ao intervalo: – weka.filters.unsupervised.attribute.Discretize. 49
  50. 50. Discretizando dados contínuos• Vamos discretizar o arquivo de dados das iris.arff, que tem quatro atributos numéricos.• cada atributo terá cinco valores nominais ou discretos possíveis. – $ java weka.filters.unsupervised.attribute.Discretize –R 1,2,3,4 -R : índices dos atributos que serão discretizados -B : indica quanto valores discretos teremos –B 5 -i: Arquivo de origem –i iris.arff -o: Arquivo discretizado a ser gerado –o iris-discretizado.arff 50
  51. 51. Resultado do processamento• Amostra do arquivo discretizado gerado:• Iris-discretizado.arff 51
  52. 52. Execução do Apriori• Execução do algoritmo Apriori:• $ java weka.associations.Apriori -t iris-discretizado.arff > resp-apriori-discretizado.txt 52
  53. 53. Resultado do processamento 53
  54. 54. Resultado do processamento• Lista de regras encontradas 54
  55. 55. Agenda• Ambiente de desenvolvimento• WEKA na linha de comando• Árvore de decisão – J4.8• Classificação de dados – K-Means• Regras de associação – Apriori• Discretização de dados• WEKA na IDE Eclipse JUNO 55
  56. 56. Eclipse e a perspectiva Java 56
  57. 57. Criação de um projeto JAVA – Ctrl+N 57
  58. 58. Projeto de Mineração de Dados 58
  59. 59. Projeto de Mineração de Dados• Estrutura do projeto JAVA: 59
  60. 60. Cópia dos arquivos .arff e weka.jar • Depois da cópia, inclua a API do weka no path: • Botão direito em weka.jar • Selecione as opções: – Build path – Add to build path • Vamos criar classes para Leitura e Escrita em ARFF 60
  61. 61. Criação da classe LeitorArff 61
  62. 62. LeitorArff.java (continuação)• Código para mostrar os valores de cada instância: 62
  63. 63. Resultado da execução 63
  64. 64. Bibliografia• Data Mining - practical machine learning tools and techniques, Ian H. Witten, Eibe Frank, Mark A. Hall• Data Mining - practical machine learning tools and techniques with JAVA implementations, Ian H. Witten, Eibe Frank 64
  65. 65. Apostilas• WEKA na Munheca: – http://www.ambientelivre.com.br/downloads/doc_de tails/81-weka-na-munheca.html• An Introduction to the WEKA Data Mining System: http://www.cs.ccsu.edu/~markov/weka- tutorial.pdf• DEVMEDIA:http://www.devmedia.com.br/extrac ao-de-arvores-de-decisao-com-a-ferramenta-de- data-mining-weka/3388 65
  66. 66. Mineração de dados com o WEKA 3.7.6 Márcio Palheta Workshop de Mineração de Dados Julho de 2012 66

×