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

2011 Data Miner Survey – Relatório sobre práticas em Mineração de Dados

No ano de 2011 foi realizada uma pesquisa pela Rexer Analytics sobre as principais práticas de mineração de dados, bem como as tendências. De forma geral pelos highlights dá para se perceber que apesar da evolução das técnicas muito do que está em ‘produção’ hoje tem a ver com o básico: Árvore de Decisão, Análise de Cluster e Regressão.

Isso mostra que deve haver um trabalho de base forte para consolidação da mineração de dados no cenário nacional; em especial, na área acadêmica na qual há a apresentação de conceitos avançados sendo que na prática há pouco sendo feito.

 Alguns dos pontos principais elencados pela pesquisa:

 FIELDS & GOALS:  Data miners work in a diverse set of fields.  CRM / Marketing has been the #1 field in each of the past five years.  Fittingly, “improving the understanding of customers”, “retaining customers” and other CRM goals continue to be the goals identified by the most data miners.

 ALGORITHMS:  Decision trees, regression, and cluster analysis continue to form a triad of core algorithms for most data miners.  However, a wide variety of algorithms are being used.   A third of data miners currently use text mining and another third plan to in the future.  Text mining is most often used to analyze customer surveys and blogs/social media.

TOOLS:  R continued its rise this year and is now being used by close to half of all data miners (47%).  R users report preferring it for being free, open source, and having a wide variety of algorithms.  Many people also cited R’s flexibility and the strength of the user community.  In the 2011 survey we asked R users to tell us more about their use of R.  Read the R user comments about why these use R (pros), the cons of using R, why they select their R interface, and how they use R in conjuction with other tools.  STATISTICA is selected as the primary data mining tool by the most data miners (17%).  Data miners report using an average of 4 software tools overall.  STATISTICA, KNIME, Rapid Miner and Salford Systems received the strongest satisfaction ratings in 2011.

TECHNOLOGY:  Data Mining most often occurs on a desktop or laptop computer, and  requently the data is stored locally.  Model scoring typically happens using the same software used to develop models.

VISUALIZATION:  Data miners frequently use data visualization techniques.  More than four in five use them to explain results to others.  MS Office is the most often used tool  for data visualization.  Extensive use of data visualization is less prevalent in the Asia-Pacific region than other parts of the world.

ANALYTIC CAPABILITY & SUCCESS:  Only 12% of corporate respondents rate their company as having very high analytic sophistication.  However, companies with better analytic capabilities are outperforming their peers.  Respondents report analyzing analytic success via Return on Investment (ROI), and analyzing the predictive validity or accuracy of their models.  Challenges to measuring analytic success include client or user cooperation and data availability / quality.  

FUTURE:  Data miners are optimistic about continued growth in data mining adoption and the positive impact data mining will have.  As in previous years, data miners see growth in the number of projects they will be conducting.  And growth in data mining adoption is the number one “future trend” identified.  Participants pointed out that care must be taken to protect privacy when conducting data mining.  Data miners also shared many examples of the positive impact they feel data mining can have to benefit society.  Health / medical advances was the area of positive impact identified by the most data miners. 

2011 Data Miner Survey – Relatório sobre práticas em Mineração de Dados

Mineração de Dados com Software Livre

Com o crescimento no estudo da disciplina de mineração de dados no meio acadêmico, bem como a sua validação e aplicação prática no meio corporativo; surgiu a necessidade da construção de novas ferramentas e suítes, com finalidade exclusiva para mineração de dados, desde o pré-processamento de dados até a visualização.

No mercado há diversas ferramentas proprietárias de excelente qualidade como o SPSS Clementine, SAS, Microsoft Analysis Services, STATISTICA, entre outros.

Entretanto, as ferramentas Open Source vem apresentando muitos recursos e funcionalidades, as quais muitas vezes superam e muito os seus concorrentes pagos com maior flexibilidade devido a possibilidade total de customização em alguns casos, robustez de soluções e bibliotecas, e claro o preço de implementação.

O objetivo desse post é fazer uma pequena explanação sobre cada um dos mais populares softwares de mineração de dados Open Source, e realizar alguns poucos comentários sobre algumas de suas características.

Rhttp://www.r-project.org/ – O Projeto R (ou somente “R”) é software de estatística que contém diversos packages (pacotes com diversas funções estatísticas, matemáticas, e econométricas) e vem em um ritmo de crescimento muito grande, em especial nos últimos 3 anos. Tem uma variedade muito grande de recursos estatístico-computacionais e tem como vantagem a sua difusão, e por ter uma linguagem de programação que tem uma curva de aprendizado média; o que permite que estatísticos, economistas, médicos, e cientistas da computação façam interações sob um mesmo código; além de possuír uma bibliografia invejável em termos de livros e materiais disponíveis na web. A desvantagem é que não há infromações sobre as operações de background e como o software utiliza os recursos de máquina disponíveis, como o funcionamento em relação a termos computacionais e até mesmo formas de customização para rodar em ambientes com alto poder computacional; além de ter uma interface de integração e pré-processamento de dados pobre em recursos de transformação.

Algumas leituras
R for SAS and SPSS Users (Statistics and Computing) – Robert A. Muenchen

The Art of R Programming: A Tour of Statistical Software Design – Norman Matloff

Customer and Business Analytics: Applied Data Mining for Business Decision Making Using R (Chapman & Hall/CRC The R Series) – Daniel S. Putler, Robert E. Krider

RapidMiner – http://sourceforge.net/projects/rapidminer/ – O RapidMiner é uma suíte de mineração de dados que vem se consolidando a algum tempo, e antes do R se tornar o software Open Source mais popular em análise de dados era o software de mineração de dados mais popular. O RapidMiner tem como principais diferenciais a parte de pré-processamento de dados, a baixa curva de aprendizado para início dos trabalhos em mineração de dados, além de produzir gráficos de ótima qualidade. O RapidMiner tem como desvantagem o “travamento” de diversos recursos que são liberados somente com a versão paga, não ter uma comunidade tão ativa, e pouca documentação (livros) dirigidos para o seu uso prático.

Bibliografia

Data Analysis with Open Source Tools – Philipp K. Janert

WEKAhttp://www.cs.waikato.ac.nz/ml/weka/ – O WEKA é uma suíte de mineração de dados desenvolvida pela Universidade de Waikato na Nova Zelândia; e tem como principal diferencial ser uma ferramenta de uso muito simples; o que não significa que seja de menor qualidade em relação as demais ferramentas Open Source. O WEKA é praticamente a ferramenta inicial para quem inicia os estudos em mineração de dados, e sem sombra de dúvidas é a ferramenta que tem a menor curva de aprendizado, chegando as vezes até passar a impressão que a mineração de dados é algo trivial; além de contar com um ótimo livro do FRANK, e WITTEN que é um material muito precioso para trabalhar de forma prática com a ferramenta. A principal desvantagem do WEKA é a difícil implementação de novas bibliotecas, o quase que obrigatório conhecimento avançado em java para implementação de algoritmos, ter algumas limitações sérias em relação à geração de gráficos, e a péssima conexão/integração com bancos relacionais.

Algumas leituras

Data Mining: Practical Machine Learning Tools and Techniques, Third Edition (The Morgan Kaufmann Series in Data Management Systems) – Ian H. Witten , Eibe Frank , Mark A. Hall

Data Mining Methods and Models – Daniel T. Larose

Discovering Knowledge in Data: An Introduction to Data Mining – Daniel T. Larose

Rattlehttp://rattle.togaware.com/ – O Rattle é uma nova suíte de mineração de dados que tem como característica principal incorporar a robustez das blibliotecas e soluções de mineração de dados do R; e conta com uma interface gráfica muito agradável com uma usabilidade excelente. Tem uma comunidade que vem crescendo muito forte, e conta com visuais gráficos que são muito melhores do que por exemplo os gráficos do Analysis Services da Microsoft. Ainda conta com uma literatura escassa, porém; nada que impeça a sua implementação, e tem um grave problema de ser designed para rodar em ambientes linux; o que pode ser fator impeditivo para utilização corporativa.

Bibliografia

Data Mining with Rattle and R: The Art of Excavating Data for Knowledge Discovery (Use R!) – Graham Williams

Diante desse leque de opções, cabe ao responsável técnico escolher a ferramenta que melhor se adapta as necessidades e principalmente que resolva melhor o seu problema, seja no desenvolvimento de pesquisas acadêmicas, ou em aplicações corporativas.

Mineração de Dados com Software Livre