Auto-WEKA 2.0: Automatic model selection and hyperparameter optimization in WEKA

WEKA is a widely used, open-source machine learning platform. Due to its intuitive interface, it is particularly popular with novice users. However, such users often find it hard to identify the best approach for their particular dataset among the many available. We describe the new version of Auto-WEKA, a system designed to help such users by automatically searching through the joint space of WEKA’s learning algorithms and their respective hyperparameter settings to maximize performance, using a state-of-the-art Bayesian optimization method. Our new package is tightly integrated with WEKA, making it just as accessible to end users as any other learning algorithm. Keywords: Hyperparameter Optimization, Model Selection, Feature Selection

Auto-WEKA 2.0: Automatic model selection and hyperparameter optimization in WEKA

Minerando grandes bases de dados no WEKA

Um dos maiores problemas quando lidamos com o Weka é a irritante limitação do Java Heap Siza de 2gb, e sendo expansível de acordo com o método descrito aqui até o volume de memória físico da plataforma de ensaios. 

No entanto, nesse excelente comunicado dos desenvolvedores do Weka eles informam que como solução para economia de recursos é sempre preferível usar linha de comando; e que há atualmente bibliotecas que estão trabalhando com subamostragem para tornar mais escalável o uso do Weka para mineração de bases de dados com um alto volume de registros.

Minerando grandes bases de dados no WEKA

Pedindo ajuda sobre o Weka

Como alguns sabem o Weka é uma GUI de código aberto e ao contrário de algumas empresas que ostentam títulos de líderes de mercado (cof, cof, cof) tem uma comunidade ativa em volta da aplicação.

Há duas maneiras de pedir ajuda:

1) Cadastrando-se na lista e enviando a solicitação em e-mail em inglês (sim, o inglês é o novo latim como eu coloquei aqui em 2012) que é algo extremamente rápido.

ou

2) Buscando nos arquivos da lista. Aqui é a melhor chance de achar algo para sanar uma dúvida. E o melhor de tudo: Dá para fazer download de tudo de graça!!!

Agora acabaram-se as desculpas para ficar travado naquele probleminha com a LMT ou com o Naive Bayes.

Pedindo ajuda sobre o Weka

Não terceirize a Normalização/Padronização dos Dados

Na literatura de mineração de dados muitos autores afirmam que o pré-processamento é uma fase que ocupa 80% do tempo e que os algoritmos são as grandes estrelas com as suas inúmeras formas de descoberta de padrões, regras e associações; e que por isso detêm os 20% mais importantes no que diz respeito à mineração de dados.

Baseado em experiências empíricas acredito que o pré-processamento ocupa 90% do tempo, e que também é responsável por 95% do resultado; dentro da perspectiva da mineração de dados no qual:

Resultado = Custo Computacional  + Consistência dos Resultados + Reprodutibilidade

Onde o custo computacional é definido como:

 Custo Computacional = Custo Espacial + Custo Temporal

Dito isso, vejo que em fóruns e até mesmo palestras que devido ao grau de dificuldade de trabalhar com os dados, ocorre a famosa terceirização da normalização/padronização dos dados. Isso se dá na forma em que os algoritmos/soluções de análise de dados pegam todos os dados e simplesmente ‘fazem a mágica acontecer’ (acreditem, eu vi um ‘Sales Engineer’  de uma das top 3  ferramentas de Business Intelligence (pela Gartner) falar isso).

No entanto, em alguns pré-experimentos com MARS (Multivariate Adaptive Regression Splines) no Statistica 10 e MLPRegression no Weka observei que muitos valores das variáveis de resposta (i.e. valores para realizar o teste e/ou checagem matemática do algoritmo) estavam com números que não faziam sentido algum, e pior: não davam a reprodutibilidade necessária para exercer um simples hindcast (não confundam com backtesting).

Vejamos dois casos práticos a respeito disso.

Neste primeiro caso vejam o resultado do RBF Regressor no Weka que está abaixo:

=== Run information === 
Scheme:       weka.classifiers.functions.RBFClassifier -N 2 -R 0.01 -L 1.0E-6 -C 1 -G -A -P 1 -E 1 -S 1 
 Relation:     WekaExcel-weka.filters.unsupervised.attribute.Remove-R8-weka.filters.unsupervised.attribute.Remove-R1,
6-weka.filters.unsupervised.attribute.Remove-R5 
 Instances:    671 
 Attributes:   5 
               Var1 
               Var2 
               Var3 
               Var4 
               Paid 
 Test mode:    evaluate on training data 
 
 === Classifier model (full training set) === 
 
 Output weights for different classes: 
 -0.658867061591664 0.7268781531574563 
 
 Unit center: 
 1.103191478913074 0.3187908580844808 1.339867551710916 -2.348360195617461 
 
 Output weights for different classes: 
 7.294836535867017 -7.294947917203681 
 
 Unit center: 
 0.001306958680758934 -0.001914844611731498 6.641791379162694E-4 1.0009616503748857 
 
 Scale: 
 0.7556789838127707 
 
 Attribute weights: 
 1.2177544598559824 1.0557440195728327 1.6425390340750194 3.7580013072113965 
 
 Bias weights for different classes: 
 -1.1716428958295801 1.171406635309079 
 
 Time taken to build model: 0.33 seconds

 

Até aí nada demais, basta ver qual é o teste dos coeficientes regressores e substituir os coeficientes para posteriormente realizar o cálculo, certo?

Até aí perfeito, mas tem um pequeno problema: todas as variáveis do modelo são nominais e o classificador já fez a normalização os dados. Ou seja, neste exato momento você transformou o modelo em black box, mesmo com todos os coeficientes expostos. Ou seja, a transparência do modelo foi trocada pelo fato da não normalização dos dados.

Neste segundo exemplo vamos ver o resultado de uma RBFNetwork no Weka.

=== Classifier model (full training set) ===
 Radial basis function network
(Linear regression applied to K-means clusters as basis functions):
 Linear Regression Model
 Dummy_Paid =
      -0.2146 * pCluster_0_0 +
      0.2148 * pCluster_0_1 +
      0.612

Neste caso, estou ainda com as mesmas variáveis nominais.

Uma das propriedades da RBFNetwork no Weka, é que a grosso modo o algoritmo permite a escolha do número de clusters e porteriormente implementa uma função de base radial (i.e. realiza a atribuição de valores partindo do distanciamento de um centro) para realizar a classificação.

Abaixo a descrição do algoritmo:

NAME
weka.classifiers.functions.RBFNetwork
SYNOPSIS
Class that implements a normalized Gaussian radial basisbasis function network.
It uses the k-means clustering algorithm to provide the basis functions and learns either a logistic regression (discrete class problems)
or linear regression (numeric class problems) on top of that. Symmetric multivariate Gaussians are fit to the data from each cluster. 
If the class is nominal it uses the given number of clusters per class. It standardizes all numeric attributes to zero mean and unit variance.

OPTIONS
debug -- If set to true, classifier may output additional info to the console.
ridge -- Set the Ridge value for the logistic or linear regression.
maxIts -- Maximum number of iterations for the logistic regression to perform. Only applied to discrete class problems.
clusteringSeed -- The random seed to pass on to K-means.
minStdDev -- Sets the minimum standard deviation for the clusters.
numClusters -- The number of clusters for K-Means to generate.

A frase mais importante é “It standardizes all numeric attributes to zero mean and unit variance.”

Isso é, o algoritmo realiza a padronização (a re-escala) de todos os atributos numéricos dentro de um range numérico que supõe que os dados estejam em uma distribuição normal padrão que tem média zero e que a unidade variação tem como base a variância.

Sabendo isto, rodei o meu experimento com os seguintes parâmetros.

 RBFNetwork

Nesta imagem, como tinha controle do pré-processamento dos dados propositalmente coloquei a variável de decisão como a geradora dos centroides dos dois clusters. Após isso fiz uma pergunta ao Eibe Frank que é um dos desenvolvedores do Weka sobre o testes dos coeficientes do Output e obtive a seguinte resposta:

pCluster_0_0 and pCluster_0_1 are cluster membership probabilities. RBFNetwork internally uses clusters build using SimpleKMeans. They are not output, so you can’t manually reproduce the classifications generated by RBFNetwork

Cheers,
Eibe

Ou seja, se não tivesse inserido (ou mesmo a percepção do que o algoritmo fazia) a minha variável de decisão, jamais saberia como o algoritmo chegou ao resultado.

Neste caso o pré-processamento foi feito de uma maneira reprodutível, ou no mínimo rastreável o que ajudou na compreensão do modelo, e de quebra me permitiu ganhar um midset para trabalhar com problemas de função de base radial e clustering. Mais um item no cinto de utilidades do batman minerador de dados.

O grande aprendizado é que quem tem o controle do pré-processamento tem o controle do modelo, seja na velocidade de execução do algoritmo, como também exerce influência nos resultados do modelo. Então, não terceirize a normalização de dados.

 FONTES

http://stn.spotfire.com/spotfire_client_help/norm/norm_scale_between_0_and_1.htm

http://stats.stackexchange.com/questions/70801/how-to-normalize-data-to-0-1-range

Não terceirize a Normalização/Padronização dos Dados

Pesquisa da Rexer Analytics sobre Ferramentas de Mineração de Dados

Todos os anos a Rexer Analytics realiza a maior pesquisa sobre mineração de dados que é a Data Miner Survey.

O objetivo principal é analisar quem são, e  principalmente qual o direcionamento dos praticantes de mineração de dados ao redor do mundo.

Tive o grato prazer de receber o convite para participar dessa pesquisa, e apenas a titulo de informação, segue abaixo o resultado relativo às ferramentas de mineração de dados disponíveis no mercado e a sua penetração em diferentes domínios.

RexerAnalytics2012

Pesquisa da Rexer Analytics sobre Ferramentas de Mineração de Dados

Bases de Dados ARFF em BioInformática

Para quem deseja realizar estudos com dados relativos as atividades de BioInformática, esse repositório do BioInformatics Research possuí uma das mais completas bases de dados sobre o assunto.

Há bases de estudos sobre casos de câncer, mapeamento genético e uma gama de assuntos que sempre estão com os papers que deram origem aos estudos.

Bases de Dados ARFF em BioInformática

Análise PCA com R

Este post do Systemtic Investor mostra como. É importante ressaltar, que como o WEKA ainda não tem uma engine de visualização tão robusta como o R; essa pode ser uma ótima abordagem antes mesmo de se realizar qualquer tipo de análise exploratória de dados em uma base de dados no WEKA.

Análise PCA com R

Resenha: Data Mining Methods and Models

Esse é o segundo livro da série sobre mineração de dados do Daniel Larose, no qual diferentemente do primeiro livro; ele começa a entrar de fato nas técnicas de mineração de dados.

Nesta obra, Daniel Larose explica algumas técnicas de mineração de dados através da sua técnica de redação: abordagens com passagens passo a passo, texto claro, estudos de caso didáticos, exemplos e exercícios.

O livro tem como principal característica uma abordagem mais estatística dentro do segmento da mineração de dados, o que significa que o livro é baseado no principio de descrever as técnicas e após isso colocar o que foi apresentado em prática com as validações necessárias; o que torna o livro extremamente válido para quem deseja entrar nos porquês de cada técnica.

O livro aborda técnicas como redução da dimensionalidade (com uma ótima explicação sobre PCA), modelagem em regressão, estimação nayve bayes, algoritmos genéticos, e um estudo de caso sobre email marketing no qual ele utiliza o CRISP-DM.

O livro é um verdadeiro manual, how-to sobre mineração de dados e tem como software de suporte o WEKA, no qual os capítulos do livro são baseados; o que pode ajudar muito quem pretende iniciar os estudos em mineração de dados e não tem uma ferramenta especifica para tal.

Para quem utiliza o WEKA como ferramenta de mineração de dados o livro conta com exemplos bem elaborados e com exercícios que podem ser transcritos para qualquer curso de mineração de dados; desde o básico até o avançado.

 Pontos Positivos: Exemplos práticos bem relevantes de mineração de dados com o WEKA, abordagem estatística muito didática, abordagem dos assuntos totalmente white-box.

 Pontos Negativos: Para quem deseja uma abordagem mais teórica o livro pode não ser a melhor escolha, e também para quem não tem intimidade com uma abordagem de mineração de dados mais estatística pode sentir um pouco mais de dificuldade na fixação de conceitos.

Resenha: Data Mining Methods and Models

Resolvendo Problemas de Memória no WEKA

Um dos problemas mais comuns para quem realiza a instalação NNF (Next > Next > Finish) do WEKA é que posteriormente ao realizar o trabalho em algumas bases de dados mais volumosas (algo em torno de 40K linhas ou mais) pode haver problemas de memória heap (que é a responsável pela leitura e carga dos dados; ocorrendo erros como os abaixo:

Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

A solução para esse tipo de erro é realizar uma maior alocação de memória para as Heaps da seguinte forma:

1) Vá para o prompt do Windows indo no menu Iniciar > Executar > cmd

2) Após entrar no prompt de comando vá até o caminho no qual está instalado a pasta principal do WEKA (no exemplo o WEKA está instalado em C:\Program Files\Weka-3-7)

3) Após entrar no caminho acima no seu prompt do windows, execute o seguinte comando: java -Xmx2g -jar weka.jar; no qual está indicando que há uma alocação de 2 Gb de memória para a aplicação. No caso a quantidade de memória alocada vai depender obrigatóriamente de memória disponível. Para alocar somente 256Mb basta executar o comando java -Xmx256m -jar weka.jar.

Para quem quiser rodar diretamente esse script faz todo o trabalho de forma automática.

Para utilizar o script basta apenas trocar a extensão de .xls para .bat.

RunWeka

Resolvendo Problemas de Memória no WEKA

Análise de Concordância – Métrica de Kappa

Para quem utiliza o WEKA no momento em que vemos a tela relacionada ao desempenho dos classificadores já se deparou com uma métrica bem interessante, e que quase ninguém conhece que é a Kappa Statistics (Estatística de Kappa).

Segundo a definição da Faculdade de Medicina do Porto:

A Estatística K é uma medida de concordância usada em escalas nominais que nos fornece uma ideia do quanto as observações se afastam daquelas esperadas, fruto do acaso, indicando-nos assim o quão legítimas as interpretações são.

Em linhas gerais a Estatística de Kappa é uma métrica que avalia o nível de concordância de uma tarefa classificação, na qual através de diferentes técnicas faz-se uma métrica na qual irá considerar somente as concordâncias entre os classificadores, o que indica que aqueles dados classificados tem uma dada coesão.

Em uma aula no Aprenda Virtual do Prof. Grimaldo do BI Vatapá, uma das mais importantes lições em relação as tarefas de classificação é que tão importante quando o número de instâncias corretamente classificadas é a estatística de Kappa a qual indica o quão concordante (e também coeso) aquele dado está classificado dentro da tarefa de classificação.

Uma escala é fornecida á título de parâmetro para indicar se os dados estão concordantes dentro das tarefas de classificação.

Em linhas gerais a Estatística de Kappa é uma métrica que avalia o nível de concordância de uma tarefa classificação, na qual através de diferentes técnicas faz-se uma métrica na qual irá considerar somente as concordâncias entre os classificadores, o que indica que aqueles dados classificados tem uma dada coesão.

Fontes:

 

 

 

 

Análise de Concordância – Métrica de Kappa

Estudo Comparativo entre SVM em Bases de Dados com Alta Dimensionalidade

Estudo Comparativo entre SVM em Bases de Dados com Alta Dimensionalidade

Rattle – Uma nova ferramenta de Mineração de Dados

Uma ferramenta que poucos conhecem, mas que vem fazendo um grande barulho na comunidade de mineração de dados é o Rattle.

O Rattle é biblioteca do R que faz a geração de uma interface gráfica para mineração de dados e utiliza a engine e os visualizadores do R como suporte.

Em uma rápida exploração sobre a ferramenta o que eu tenho a dizer que a ferramenta vem para bater de frente com diversas suítes de mineração de dados (inclusive o WEKA) pelos seguintes motivos:

Rattle – Uma nova ferramenta de Mineração de Dados