Dismistificando Deep Reinforcement Learning

Um dos tópicos mais quentes em Data Science é a utilização de Deep Learning para problemas ligados à computação visual.

No entanto, nesse post do Nervana uma abordagem que mescla Deep Learning e Reinforcement Learning (Aprendizado por Reforço) é usada para jogar um determinado título no Atari.

Provavelmente esse é o melhor post sobre o assunto, tanto pela a abordagem, quanto pelo grau de profundidade pelo qual o autor trata o assunto.

A ideia geral é que não adianta colocar uma Deep Neural Network para o aprendizado, sendo que em termos combinatórios o espaço de busca é muito grande (1067970  estados pra ser mais preciso).

Dessa forma a abordagem consistiu em combinar Aprendizado por Reforço para formulação da estrutura de recompensa e punição (tanto no curto prazo quanto para ações no longo prazo), cadeia de Markov para modelagem do ambiente/sequências e repetições, e uma abordagem que os autores chamam de Q-Learning.

Q-Learning é explicado pelo autor como:

In Q-learning we define a function Q(s, a) representing the maximum discounted future reward when we perform action a in state s, and continue optimally from that point on.

Screen Shot 2015-12-21 at 11.09.47 AM

The way to think about Q(s, a) is that it is “the best possible score at the end of the game after performing action a in state s“. It is called Q-function, because it represents the “quality” of a certain action in a given state.

Enfim, esse artigo vale a pena para quem quem trabalha com modelagem de problemas não só da computação visual, como também quem trabalha com problemas estruturados.

Anúncios
Dismistificando Deep Reinforcement Learning

O que é ideal no modelo: Acurácia ou Explicabilidade?

Esse post provocador do Inference vem em uma boa hora dado que está um hype bem alto a respeito de Deep Learning, e há muitas dúvidas a respeito do seu poder preditivo, este que muitas vezes flertam com o overfitting mas esse não é o motivo desse post.

O ponto principal que eu gostaria de ressaltar é que de acordo com o autor, em um dos workshops do NIPS sobre Aprendizado Black Box e Inferência, em que o principal ponto dos conferencistas foi que o trade-off entre acurácia e explicabilidade não somente é falso, como a explicabilidade não faz parte da propriedade do modelo.

Para quem não sabe o que é esse trade-off, os autores exemplificam no paper:

  • accurate but black-box: The best classification accuracy is typically achieved by black-box models such as Gaussian processes, neural networks or random forests, or complicated ensembles of all of these. Just look at the kaggle leaderboards. These are called black-box and are often criticised because their inner workings are really hard to understand. They don’t, in general, provide a clear explanation of the reasons they made a certain prediction, they just spit out a probability.
  • white-box but weak: On the other end of the spectrum, models whose predictions are easy to understand and communicate are usually very impoverished in their predictive capacity (linear regression, a single decision tree) or are inflexible and computationally cumbersome (explicit graphical models).

Em outras palavras, os autores argumentam que, o fator de explicabilidade de um modelo é muito mais uma confabulaçcão a posteriori do que funcionou ou não, do que algo que deveria ser uma propriedade do modelo.

Como diria Nassim Taleb em Fooled By Randomness, a mente humana é uma máquina de realizar previsões e contar histórias… A posteriori

Isso é, fazer divagações em relação ao funcionamento de um determinado modelo de acordo com propriedades do mesmo, não faz sentido, na ótica dos autores.

No entanto, o ponto que eu acho que não foi tocado é de que com o crescimento dos modelos cada vez mais black-box como o do Netflix e afins, o principal fator do aprendizado de máquina (Machine Learning) é que de uma maneira ou de outra não conseguimos colocar o aspecto de cognição para ajustar ou mesmo saber o que está dando certo ou errado com o modelo em termos paramétricos e principalmente estruturais.

Não é preciso ir muito longe para ver que esse é um ponto pertinente, basta ver a indústria financeira, em que centenas de bilhões de dólares residem em modelos que muitas vezes os operadores não sabem nem o que está acontecendo.

Os eventos como o Flash Crash de 2010, o fátidico episódio da Knight Capital que perdeu USD 440 milhões em 30 minutos, e do London Whale que custou mais de USD 2 bilhões devido a erros nas estratégias de alguns derivativos mostram que ainda o poder de discernimento e análise do agente humano ainda é necessário para o refinamento do modelo, este que vai muito além da combinação paramétrica; mas que chega a aspectos estruturais do modelo como o todo.

A discussão é boa e ainda não vai parar por aqui.

Link para artigo original: TURNER, Ryan. A Model Explanation System

Paper Turner NIPS 2015

O que é ideal no modelo: Acurácia ou Explicabilidade?

Comparação entre R e Python utilizando Florestas Aleatórias e Classificação

Neste post do blog do Yhat tem o código, os dados e os resultados.

Pessoalmente gosto muito da abordagem dos autores em comparação de classificadores usando as métricas de Acurácia, Erro Quadrático Médio e  para regressão e tempo de treinamento.

Para projetos curtos de avaliação de uma série de classificadores essas medidas são suficientes para dar uma linha de base. Essas medidas podem auxiliar na escolha de quais modelos estão com melhor convergência e podem indicar um melhor tratamento dos dados em termos de quais variáveis são pertinentes ao modelo escolhido.

 

 

Comparação entre R e Python utilizando Florestas Aleatórias e Classificação

Uplift Modeling

Lendo o Predictive Analytics em meados de Maio (que será resenhado aqui no MD) resgatei um dos tópicos mais interessantes quando se fala de aderência de modelos preditivos que é o uplift modeling.

 O Lift pode-se dizer que é a medida (ou índice) da eficácia do modelo em relação os resultados obtidos através do modelo, e se o modelo não fosse aplicado.

Esse conceito é importado da medicina baseada em evidências no qual é conhecido como ensaio clínico randomizado, que tem como principal característica a separação dos grupos de experimento para verificar a eficácia de uma abordagem clínica/medicamentosa.

 Você utiliza essa métrica de aderência de modelo preditivo da seguinte forma:

 1) Criam-se dois grupos, um de (i) tratamento (onde o modelo será aplicado) e (ii) outro de controle (onde o modelo não será aplicado) sempre levando em consideração a randomização das amostras;

2) Aplica diretamente a técnica de classificação ou modelagem preditiva no grupo de tratamento;

3) Realiza o follow-up dos dois grupos anotando os efeitos primários (indicações mais severas após a intervenção), e comportamentos semelhantes e/ou efeitos secundários; e

4) De acordo com o response rate (%) do uplift modeling  você consegue uma análise mais fiel em relação aos impactos da intervenção e se você tiver ‘saco metodológico’ você consegue observar o decay do modelo, ou mesmo realizar ajustes.

Uplift Modeling

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

Tire o viés das decisões estratégicas

O artigo trás a melhor forma de argumentação que é a utilização dos exemplos médicos. Esses exemplos são excelentes para determinar a gravidade de um determinado assunto. Mas deixando a retórica de lado, o artigo toca em um ponto importante que em determinados assuntos o viés emocional deve ficar de fora das decisões estratégicas. Este conceito pode ser transposto para a mineração de dados, no qual muitas vezes os analistas ficam ‘apegados’ ao seu modelo, aos dados, ao algoritmo; e muito desse viés acaba colocando um véu na realidade dos dados.

Tire o viés das decisões estratégicas

Passos para a criação de um projeto de Modelagem Preditiva

Neste post da Salford Systems tem um guia com nove fases:

1) Entendimento do negócio (especificação e um objetivo)

2) Inventário de dados e entendimento

3) Avaliação de dados para adequação nas técnicas

4) Projeto Piloto

5) Preparação (e exploração) dos dados

6) Modelagem (construção de modelos preditivos)

7) Avaliação, Interpretação, Entendimento

8) Projeto Completo

9) Implantação

Passos para a criação de um projeto de Modelagem Preditiva

Amostragem: Precisamos mesmo de 3 divisões amostrais (treinamento, validação e teste)?

Neste artigo do Dan Steinberg ele responde de forma clara:

“The short answer to this question is “no” we do not think that the 3-way partition is mandatory for SPM core models such as CART and TreeNet.”

Confesso que fiquei assustado com a resposta, mas abaixo no próprio artigo ele coloca a justificativa:

“The question we address here is whether this is really enough when the process of model development is lengthy and may involve the building of dozens, hundreds, or even thousands of models. If each model is evaluated on the second data partition one might argue that we are in fact learning from it. The learning may be limited and indirect, but the cumulative effect of intensive model development and evaluation blunts the independence of the second partition data.”

Uma das lutas mais ingratas de quem está trabalhando em um modelo de dados é o fantasma do Overfitting em qualquer modelo de descrição/predição.

O ponto principal do autor é que nem sempre em cenários nos quais os dados são escassos a utilização de amostras ‘holdout‘, isto é, fora do conjunto de dados (treinamento e teste) é necessária.

No artigo tem os resultados de um teste em que houve a construção de um modelo com holdout e sem holdout, e tirando-se as diferenças entre as curvas ROC dos modelos chegou-se ao ótimo resultado de apenas de – 0.00216 em relação ao modelo sem holdout.

Questionamentos metodológicos, e principalmente em relação à possível (ou a ausência de) variância do dados, o ponto é importante e vale a pena ser refletido.

Como é de conhecimento geral, nem sempre na construção de modelos preditivos/descritivos tem-se acesso completo aos dados, e em muitas vezes o volume de dados é extremamente pequeno.

Uma das alternativas para esse tipo de problema é a aplicação do método de Cross-Validation (k=10) que gera resultados satisfatórios.

No entanto, como o autor coloca em questão, um modelo deve ser sempre refinado de forma iterativa e incremental; o que significa que nenhum modelo ‘nasce’ sujeito a erros, mesmo se não houver representatividade das instâncias de ‘validação’.

Neste outro post tem um artigo bem interessante sobre o tema também.

Amostragem: Precisamos mesmo de 3 divisões amostrais (treinamento, validação e teste)?

Teorema de que “Não há almoço grátis” na construção de modelos.

Um bom artigo do Eric Cai.

Porque sempre a representação de um modelo seguirá a fórmula abaixo:

Modelo = Realidade – Erro

Teorema de que “Não há almoço grátis” na construção de modelos.

Estratégia para a construção de modelos preditivos

Neste post do Mirko Krivanek é apresentada uma estratégia para a construção de modelos preditivos bem interessante. Leitura obrigatória para quem deseja conhecer um pouco mais sobre modelos orientados a realização de previsões.

Estratégia para a construção de modelos preditivos

6 erros em modelos preditivos

Neste post do Data Science Central postado pela Caitlin Garrett aponta seis erros básicos na modelagem preditiva. Em geral são boas análises baseadas no que é conhecido como “rule of thumb“, algo como melhores práticas.

Em geral modelos preditivos apresentam muitos obstáculos, e minimizar aspectos que possam a vir colocar em risco esses modelos é de fundamental importância para o sucesso desse tipo de modelagem.

6 erros em modelos preditivos

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

Comparações de Modelos

Deep Data Mining Blog neste post aborda um tema interessante que é a comparação e escolha de modelos de classificação. No post os autores realizam comparações sobre alguns métodos de classificação e tomam uma tabela de Lift para comparação de performance.

Os resultados são bem claros: Apesar do método de Gradient Boost Tree ser o mais perfomático a nível de acurácia, o método de seleção do modelo deve levar em conta também a complexidade de realizar o Walk-Through em ambientes de produção.

Comparações de Modelos

Mineração de Dados e Segurança Aeronáutica

Neste artigo do Venky Rao é utilizado um exemplo bem simples da aplicação de fases da metodologia CRISP-DM em uma modelagem de análise de segurança aeronáutica.

Ele utiliza a fase de entendimento de dados, preparação dos dados e modelagem e coloca no SPSS. Bom para quem deseja saber como funciona essa modelagem de maneira prática.

Mineração de Dados e Segurança Aeronáutica

FAQ sobre Aprendizado de Máquina, Data Mining e afins…

Este post do William Briggs mostra de maneira bem humorada a visão dele sobre Aprendizado de Máquina, Estatística, Análise de Risco, Data Mining e assuntos do tipo.

FAQ sobre Aprendizado de Máquina, Data Mining e afins…

3 formas de implementar um modelo preditvo

Neste post do Dean Abbott, ele coloca de uma maneira bem simples a sua forma de realizar a implementação de modelos preditivos que são: 1) certificar que o principal patrocinador do modelo tenha projetado a implementação do modelo desde o princípio do projeto, 2) certificar que o arquiteto de modelagem entenda o propósito do modelo, e por último 3) que os patrocinadores saibam que os modelos podem e o que não podem fazer.

3 formas de implementar um modelo preditvo

Dicas para construção de modelos vencedores

Os membros do Deep Data Mining Blog são conhecidos por participarem de diversas competições no Kaggle e de construirem modelos bem robustos para implementações em ambientes “reais”. E com esse background neste post e neste há uma série de dicas sobre como construir modelos vencedores.

Dicas para construção de modelos vencedores

Data Scientist do Kaggle afirma: Conhecimento de especialistas é inútil

É um tópico polêmico, pois sem os especialistas de domínio a abordagem Black-box reina, e esse é o pior dos mundos para quem toma decisões baseadas em dados.

Data Scientist do Kaggle afirma: Conhecimento de especialistas é inútil

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