Mineração de Dados com Weka e Java

O Weka é uma biblioteca mantida pelo grupo de aprendizagem de máquina da Universidade de Waikato na Nova Zelândia. Ela foi desenvolvida em Java e possui uma coleção de algoritmos que podem ser utilizados tanto comercialmente quanto em ambiente acadêmico. O nome da ferramenta tem o mesmo nome de uma ave típica da Nova Zelândia, que você pode ver na figura acima! 🙂 Neste artigo veremos um pouco sobre os principais recursos dessa biblioteca, para que você consiga visualizar oportunidades e implementar alguns desses recursos em seu próprio software!

Estão presentes ferramentas para pré-processamento e visualização dos dados, classificação, regressão, agrupamento e regras de associação. Com relação ao pré-processamento, é possível aplicar algoritmos de limpeza de dados para remover ruídos ou valores faltantes ou inconsistentes em uma base de dados. Essa funcionalidade é particularmente interessante devido ao fato de que a maioria das bases de dados comerciais apresentam algum tipo de “problema” que precisa ser corrigido antes que sejam feitas análises. Um exemplo prático bastante comum são campos do tipo varchar, no qual os usuários podem escrever livremente e que é comum que inconsistências ocorram. Supondo-se que exista um campo de texto para preencher o bairro, os usuários podem preencher o bairro “Centro” de várias maneiras, como por exemplo: “cto”, “ctr”, “cento” ou “cent”. Dessa forma, é necessário tratar esses campos para que todos eles sigam um mesmo padrão! Outra necessidade do pré-processamento diz respeito à fazer a distribuição de frequência em campos numéricos. Supondo-se que na tabela também exista um campo idade e este encontra-se no formato numérico, é necessário dividir os valores em faixas como “17-18” e “18-25”, por exemplo. Isso é preciso porque as idades podem representar uma grande variabilidade de valores, o que pode prejudicar o desempenho dos algoritmos de aprendizagem de máquina.

Com relação à classificação, regressão, agrupamento e regras de associação; é possível aplicar essas quatro técnicas em bases de dados comerciais! Para revisar: a classificação e a regressão são métodos preditivos e servem para prever comportamentos futuros com base em dados históricos. O agrupamento visa encontrar grupos de dados similares, sendo muito utilizado para segmentação de mercado. Por fim, a associação, como o próprio nome sugere, tem o objetivo de descobrir dados associados e o exemplo clássico é encontrar produtos que são vendidos em conjunto para maximizar as vendas. Eu escrevi um ebook sobre essas e mais três técnicas, e você pode baixá-lo no seguinte link: https://iaexpert.academy/ebook-aprendizagem-maquina/.

O Weka realiza a leitura de bases de dados de duas fontes: arquivos com a extensão ARFF e também por meio de conexão direta com bancos de dados, sendo que essa última opção é a mais interessante por permitir que os dados sejam manipulados em tempo real. São disponibilizados arquivos de configuração para o Access, SQL Server, Oracle, PostgreSQL e HSQLDB (com JDBC), bem como acesso via ODBC para os outros SGDBs. Essa forma de conexão tem a vantagem de que consultas em SQL podem ser executadas dentro do próprio Weka, o que possibilita uma grande economia de tempo! Na figura abaixo você pode visualizar uma imagem que mostra uma consulta SQL sendo executada na janela do Weka.

Abaixo você pode visualizar um exemplo de arquivo ARFF. Note que para construir uma base de dados nesse formato é necessário definir algumas “tags” com o caractere arroba (@), sendo que o arquivo é formado por três partes: o nome da relação (@relation), a lista de atributos com seus respectivos valores (@attribute) e por fim a seção com os dados (@data). Este exemplo mostra uma base de dados composta de seis registros para prever se uma pessoa irá ou não jogar tênis baseado nas condições climáticas.

@relation jogar_tenis

@attribute tempo {ensolarado, nublado, chuvoso}
@attribute temperatura {quente, moderada, agradavel}
@attribute humidade {alta, normal}
@attribute vento {forte, fraco}
@attribute jogar {sim, nao}

@data
ensolarado, quente, alta, fraco, nao
ensolarado, quente, alta, forte, nao
nublado, quente, alta, fraco, sim
chuvoso, moderada, alta, fraco, sim
ensolarado, moderada, normal, forte, sim
chuvoso, moderada, alta, forte, nao

O Weka pode ser utilizado de duas maneiras: por meio de sua própria interface ou então via código em uma aplicação Java. Em geral, a interface é utilizada somente para realizar testes e análises sobre o desempenho dos algoritmos, e posteriormente a isso é que são construídos os aplicativos “reais” que serão comercializados. Desta forma, você pode construir sistemas inteligentes na linguagem Java, seja web, mobile ou até mesmo desktop, bastando que o arquivo JAR do Weka seja adicionado ao projeto! Eu falo mais sobre as oportunidades de negócio para desenvolvedores no ebook “7 técnicas de inteligência artificial para profissionais de TI ganharem mais dinheiro”, que você pode baixar no link https://iaexpert.academy/ebook-aprendizagem-maquina/.

Como o Weka é OpenSource sob a GNU General Public Licence, você tem acesso a todos os códigos-fonte de todos os algoritmos! Desta forma, você tem liberdade para estudá-los, melhorá-los e até mesmo criar o seu próprio algoritmo inteligente! A comunidade que trabalha com o Weka é muito grande no mundo todo, e talvez ela seja uma das principais ferramentas para mineração de dados atualmente. Por isso, existe também um gerenciador de pacotes que você pode baixar novos algoritmos e funcionalidades gratuitamente!

Além disso, a ferramenta também disponibiliza uma interface chamada Knowledge Flow, conforme pode ser observado na figura abaixo. Esse recurso permite que o desenvolvedor selecione os componentes do Weka por meio de uma paleta e os conecte para formar um fluxo para processar e analisar os dados! Outro recurso interessante é o de experimentos, que possibilita o usuário a criar, rodar, modificar e analisar os experimentos de uma maneira mais rápida e fácil do que executá-los manualmente.

Apesar de possuir muitos recursos, o Weka não disponibiliza artifícios para trabalhar com detecção de desvios, descoberta de padrões sequenciais e sumarização. Para finalizar, se você é desenvolver Java tem uma grande oportunidade para incrementar seu software com recursos de inteligência artificial de forma muito fácil e rápida! Eu também gravei uma vídeo aula que mostra um pouco sobre a ferramenta, e você pode conferir abaixo. Além disso, eu tenho gravado vários vídeos sobre o Weka, e acessando este link você pode conferir a playlist completa no Youtube https://www.youtube.com/watch?v=0v6PiOpsJi8&list=PLZ3V9XyVA528aLMcP0qaOD0itjzsRA7Ny.