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

Anúncios
Não terceirize a Normalização/Padronização dos Dados

O Erro sobre o Erro

Nassim Taleb sintetizou muito bem o erro sobre o erro e o porque de que devemos não levar tão a sério medidas de erro, principalmente na representação de modelos que mimetizam parte de uma realidade limitada.

An error rate can be measured. The measurement, in turn, will have an error rate. The measurement of the error rate will have an error rate. The measurement of the error rate will have an error rate. We can use the same argument by replacing “measurement” by “estimation” (say estimating the future value of an economic variable, the rainfall in Brazil, or the risk of a nuclear accident). What is called a regress argument by philosophers can be used to put some scrutiny on quantitative methods or risk and probability. The mere existence of such regress argument will lead to two different regimes, both leading to the necessity to raise the values of small probabilities, and one of them to the necessity to use power law distributions.

O Erro sobre o Erro

Big Data – Contexto = Ruim

Este artigo do Roger Pang exemplifica essa mistura explosiva.

Abaixo os três principais problemas elencados no artigo:

  • Big Data are often “Wrong” Data. The students used the sensors measure something, but it didn’t give them everything they needed. Part of this is that the sensors were cheap, and budget was likely a big constraint here. But Big Data are often big because they are cheap. But of course, they still couldn’t tell that the elevator was broken.
  • A failure of interrogation. With all the data the students collected with their multitude of sensors, they were unable to answer the question “What else could explain what I’m observing?”
  • A strong desire to tell a story. Upon looking at the data, they seemed to “make sense” or to at least match a preconceived notion of that they should look like. This is related to #2 above, which is that you have to challenge what you see. It’s very easy and tempting to let the data tell an interesting story rather than the right story.
Big Data – Contexto = Ruim

New Journal – International Journal of Business Analytics and Intelligence

O lançamento do International Journal of Business Analytics and Intelligence vem a trazer para os analistas de dados, mais uma revista científica para os analistas de dados. Dentro da proposta da revista, o foco será indexar trabalhos relativos a análise de dados, Business Intelligence e ao que tudo indica pode ser um ótimo repositório de dados relativo à Mineração de Dados. Segue abaixo a apresentação da revista:

Journal includes key research areas (Not limited to) such as big data processing and analytics, business intelligence, visual analytics, descriptive analytics, predictive analytics, business analytics and optimization, actuarial modeling, social network analytics, data mining tools, web analytics, text analytics, marketing research, modeling, workforce analytics, business intelligence, data management, decision management, BI architecture, retail analytics, graph entropy, decision trees, analytics applications.

 

New Journal – International Journal of Business Analytics and Intelligence

Porque Não-Espionar os Dados

Neste post do Análise Real (lido no dia, mas só revisado hoje) há uma interessante discussão relativa a ‘fitagem’ de modelos e relacionamento e consistência dos resultados. O melhor trecho sem dúvida é a seguinte passagem:

“[…]Qualquer um que seja péssimo em tiro ao alvo pode “melhorar” seu resultado. Basta permitir que se atire antes e em seguida o alvo seja desenhado da maneira que lhe parecer mais favorável.  Perceba que a “evidência” resultante concordará com a hipótese que você quer provar. Entretanto, ela não é nem um pouco severa, pois, mesmo se você não fosse um bom atirador, você poderia ter obtido o mesmo resultado. Sendo incapaz de discriminar entre um caso e outro, na verdade este “teste” – em sua forma bruta – não poderia se considerado evidência genuína de sua habilidade.

Na analogia, os tiros são os “dados” e o desenho o “modelo” ou “hipótese”. Se você fizer seu modelo, ou formular sua hipótese, utilizando as peculiaridades dos dados – e não levar em conta este fato na sua inferência – você pode estar simplesmente desenhando um alvo ao redor dos tiros.
[…]”

Vale a pena a leitura, e as referências.

Porque Não-Espionar os Dados

Overfitting e a Expansão Contínua do Modelo

Nesse post do Statistical Modeling, Causal Inference apresenta o conceito de Expansão Contínua; na qual para evitar o Overfitting do modelo ao invés de  realizar escolhas pela média do Cross-Validation, o autor prefere escolher um modelo dentro de uma determinada metodologia e realizar refinamentos sucessivos. É interessante esse conceito, e mostra que o minerador de dados deve ter métodos de se chegar a um resultado bom, mesmo que o modelo inicialmente não seja o ideal e realize a sua expansão de forma iterativa e incremental (como nas metodologias ágeis) seja com a seleção e inserção de novos atributos, ou novas formas de validação.

Overfitting e a Expansão Contínua do Modelo

Data analysis recipes: Fitting a model to data

Para quem deseja um overview sobre fitting de modelos e entender um pouco sobre questões como variância, esse artigo de David Hogg, Jo Bovy, Dustin Lang é uma leitura bem interessante.

Abstract

We go through the many considerations involved in fitting a model to data, using as an example the fit of a straight line to a set of points in a two-dimensional plane. Standard weighted least-squares fitting is only appropriate when there is a dimension along which the data points have negligible uncertainties, and another along which all the uncertainties can be described by Gaussians of known variance; these conditions are rarely met in practice. We consider cases of general, heterogeneous, and arbitrarily covariant two-dimensional uncertainties, and situations in  which there are bad data (large outliers), unknown uncertainties, and unknown but expected intrinsic scatter in the linear relationship being fit.

Above all we emphasize the importance of having a “generative model” for the data, even an approximate one. Once there is a generative model, the subsequent fitting is non-arbitrary because the model permits direct computation of the likelihood of the parameters or the posterior probability distribution. Construction of a posterior probability distribution is indispensible if there are “nuisance parameters” to marginalize away.

 Data analysis recipes – Fitting a Model to Data

 

Data analysis recipes: Fitting a model to data

A mineração de dados como nova ferramenta para as eleições americanas

A matéria da Dawn mostra que grande parte da porcentagem de votos do próximo Presidente dos Estados Unidos da América terá na mineração de dados uma forma de 1) angariar recursos de campanha, 2) realizar prospecções de potenciais doadores, 3) mobilizar nichos de usuários na rede em prol da militância sobre um determinado candidato, e 4) alinhamento de discurso sobre em qual o candidato irá adotar em determinada região do país.

 Esse domínio eleitoral, está se estabelecendo a passos largos e essa eleição nos EUA será algo como o batismo de fogo, onde; na mesma forma em que as mídias sociais foram na eleição do Presidente Obama a 4 anos; no qual o paradigma mudou nesse meio tempo no qual se antes a necessidade era saber onde os eleitores se mobilizavam, hoje a necessidade é saber o que esses eleitores pensam e realizar o micro-targeting de acordo com os seus pensamentos e comportamentos na esfera digital. Essas informações são de grande importância em relação a campanha; pois, dependendo do potencial de eleitores pode-se angariar mais recursos de patrocinadores, ou mesmo para elaboração de campanhas do tipo corpo a corpo na qual o candidado pode tanto fortalecer a sua base eleitoral nos lugares em que tem vantagem, ou mesmo fazer prospecção de novos votos em bases na qual não é tão forte eleitoralmente.

 O candidato Mitt Romney já investiu cerca de 60% a mais que Barack Hussein Obama e as pesquisas apontam hoje um empate técnico entre os dois, mesmo com o segundo candidato ter o apoio da máquina estatal a seu favor; o que mostra esse método até então tem uma eficácia bastante significativa.

A mineração de dados como nova ferramenta para as eleições americanas

Previsão de Dados Esportivos – Espanha será campeã da Euro, segundo Economistas

O trabalho de Achim Zeileis, Christoph Leitner, e Kurt Hornik apresenta uma simulação de cenários para previsão da equipe que será campeã da Euro 2012, no qual os economistas afirmaram que será a Espanha.

O método do trabalho é interessante, porém o que não me agradou foi o conjunto de dados que foram tendências de bolsas de apostas; porém, isso não tira o foco do artigo que está bem escrito e pode servir de referências para trabalhos similares como avaliação de stats individuais para predição de times campeões.  

Previsão de Dados Esportivos – Espanha será campeã da Euro, segundo Economistas

Como as empresas aprendem os seus segredos?

Esse especial do New York Times escrito por Charles Duhigg  (Autor do livro The Power of Habit: Why We Do What We Do in Life and Business) tem como foco um tema bastante recorrente em relação a modelagem, e entendimento de domínio de Mineração de Dados que é o estudo de hábitos do consumidor.

Em geral o artigo trata do fato das empresas em especial de varejo buscarem mais dados dos consumidores e realizarem a construção de Personas (Profiles de clientes com determinadas características em comum) para realizar um marketing mais segmentado no qual com uma gama de recursos minimizada obter o máximo de retorno no ato de atingir os consumidores em potencial dos produtos. O caso mais emblemático tratado no artigo é o fato de um varejista realizar um trabalho de construção de personas tão apurado que através dos produtos adquiridos eles conseguem saber se a consumidora está grávida.

Veja essa construção de Persona feita pelo artigo:

A fictional Target shopper named Jenny Ward, 23, lives in Atlanta and in March she bought cocoa-butter lotion, a purse large enough to double as a diaper bag, zinc and magnesium supplements and a bright blue rug. There’s a very high chance that she’s pregnant, and her delivery date is sometime in late August, and Target connects those dots.

Vale a pena a leitura.

Como as empresas aprendem os seus segredos?

Modelo de Domínio + Habilidades em Tratamento de Dados = Data Miner

Este post de Brendan Tierney apresenta uma pequena introdução sobre os skills necessários para ser um Data Miner (Minerador de Dados). Em tempos em que o termo Data Scientist (Cientista de Dados) está cada vez mais popular, Brendan expõe de maneira bem categórica as habilidades envolvidas para esse novo segmento de trabalho, e mostra que grande parte das vezes um PhD em estatística não vale o trabalho de um Data Miner, devido ao fato que as habilidades envolvidas são muito amplas como delimitação de domínio e tratamento de dados.

Modelo de Domínio + Habilidades em Tratamento de Dados = Data Miner

Mineração de Dados Hospitalares

Uma aplicação de mineração de dados sobre dados médicos é um domínio de aplicação que pode auxiliar na análise sobre dados médicos e melhorar questões relacionadas à administração hospitalar bem como auxiliar em campos relacionados ao estudo de casos clínicos através de uma base histórica de dados.

Em geral esse tipo de Projeto de Mineração de Dados pode se dar na aquisição de dados não estruturados sobre diagnósticos, dados históricos de pacientes, reconhecimento de padrões de moléstias, e até mesmo aferição dos tipos de doenças mais graves e a sua duração. A questão de privacidade é fundamental para esse tipo de domínio, já que dependendo do tipo de legislação médica, pode haver restrições em relação à aquisição dessas informações.

Mineração de Dados Hospitalares

A inquestionável necessidade de especialistas de domínio

O artigo do  provavelmente é um dos melhores artigos sobre a questão da Mineração de Dados e a sua aplicação prática; e a suas implicações seja no aspecto técnico, quando no aspecto conceitual.

O motivo do post saiu através de uma análise do debate promovido pela O’Reilly, no qual ‘levantaram a bola’ sobre a necessidade de especialistas de domínio em projetos de mineração de dados. Hoje há diversas competições de mineração de dados, ferramentas, técnicas disponíveis; porém, ainda faltam analistas que consigam mapear o domínio em mineração de dados e conduzir um projeto desde o Business Understanding até o Deployment final.

Um trecho interessante sobre a análise black-box está descrita abaixo:

There’s a limit to the value you can derive from correct but inexplicable results. (Whatever else one may say about the Target case, it looks like they made sure they understood the results.) It takes a subject matter expert to make the leap from correct results to understood results. In an email, Pete Warden said:

“My biggest worry is that we’re making important decisions based on black-box algorithms that may have hidden and problematic biases. If we’re deciding who to give a mortgage based on machine learning, and the system consistently turns down black people, how do we even notice it, let alone fix it, unless we understand what the rules are? A real-world case is trading systems. If you have a mass of tangled and inexplicable logic driving trades, how do you assign blame when something like the Flash Crashhappens?

“For decades, we’ve had computer systems we don’t understand making decisions for us, but at least when something went wrong we could go in afterward and figure out what the causes were. More and more, we’re going to be left shrugging our shoulders when someone asks us for an explanation.”

Veja que não é um raciocínio espúrio, mas sim uma preocupação real e que deve ser olhada com bastante atenção, e é por isso que muitas das vezes há de se bater na tecla sobre combater a análise black-box que muitos vendedores de software e pacotes estatísticos oferecem.

Quando se fala de avaliação, e o impacto econômico (só para ficar nesses aspecto particular) veja um caso bem interessante de associação em bases de dados reais:

Another realistic scenario: Target recently used purchase histories to target pregnant women with ads for baby-related products, with surprising success. I won’t rehash that story. From that starting point, you can go a lot further. Pregnancies frequently lead to new car purchases. New car purchases lead to new insurance premiums, and I expect data will show that women with babies are safer drivers. At each step, you’re compounding data with more data. It would certainly be nice to know you understood what was happening at each step of the way before offering a teenage driver a low insurance premium just because she thought a large black handbag (that happened to be appropriate for storing diapers) looked cool.

Enfim, vale a pena assistir o vídeo pois há algumas considerações bem interessantes e pertinentes.

A inquestionável necessidade de especialistas de domínio

Crime Analyst Blog

Esse blog do Scott Dickson apresenta diversos posts (pequenos por sinal) sobre as especificidades do trabalho de analista criminal. O blog tem diversos artigos sobre esse tipo de assunto, e para quem desejar trabalhar com Mineração de Dados aplicando esse tipo de domínio. 

Crime Analyst Blog