• Michel

Validação de Modelos em Machine Learning

É indispensável validar a estabilidade do seu modelo de aprendizado de máquina. Você simplesmente não pode ajustar o modelo aos seus dados de treinamento e esperar que funcione com precisão para os dados reais que nunca foram vistos antes. Você precisa de algum tipo de garantia de que seu modelo tenha captado a maioria dos padrões dos dados, e não esteja captando muito ruído ou, em outras palavras, bias e variância devem ser baixos (vide artigo Underfitting e Overfitting).



Cross-validation (Validação cruzada) é uma técnica para avaliar a capacidade de generalização de um modelo, a partir de um conjunto de dados. É fundamental em problemas onde o objetivo da modelagem é a predição. Busca-se estimar o quão preciso é um modelo na prática, ou seja, o seu desempenho em um novo conjunto de dados.

Idealmente, o modelo deve ser avaliado em amostras que não foram usadas para construir ou ajustar o modelo, de modo que forneçam um senso imparcial de eficácia do modelo. Quando uma grande quantidade de dados está à mão, um conjunto de amostras pode ser reservado para avaliar o modelo final - este é o set de teste - que não deve ser tocado até esta avaliação final. O set de treinamento é usado para criar o modelo, enquanto o set de validação é usado para ajustar o desempenho.

A validação pode ser usada para comparar os desempenhos de diferentes procedimentos de modelagem preditiva. Por exemplo, suponha que estamos interessados ​​no reconhecimento ótico de caracteres e usamos SVM e KNN para prever o caractere verdadeiro a partir de uma imagem de um caractere manuscrito. Usando a validação cruzada, podemos comparar objetivamente esses dois métodos em termos de suas respectivas frações de caracteres classificados incorretamente. Se simplesmente comparássemos os métodos com base em suas taxas de erro dentro da amostra, o método KNN provavelmente teria um desempenho melhor no set de treinamento, já que é mais flexível e, portanto, mais propenso a overfitting em comparação com o método SVM.


Método Holdout

Uma forma simples de validar um modelo envolve separar uma parte dos dados de treinamento e usá-los para obter previsões do modelo treinado sobre o restante dos dados. A estimativa de erro, em seguida, informa como nosso modelo está se saindo em dados não vistos ou no conjunto de validação. Este é um tipo simples de técnica de validação cruzada, também conhecida como método holdout. O problema com este método é que não é certo que o set de validação separado (holdhout) seja representativo do total da base de dados.


K-fold Cross-validation (Validação Cruzada em k partes)

Dividimos o conjunto total de dados em três subconjuntos mutuamente exclusivos, um para treinamento (estimação dos parâmetros), um para validação (ajuste de parâmetros) e outro para teste. O conjunto de dados pode ser separado em quantidades iguais ou não. Por exemplo, 2/3 dos dados para treinamento e o 1/6 para validação e 1/6 para teste.



Na validação são usados apenas os sets de treinamento e validação. Como dissemos, o set de teste deve permanecer intocado e servirá apenas para a avaliação final.


Neste método os dados são divididos em k subconjuntos. Em seguida, o método holdout é repetido k vezes, de tal forma que, a cada vez, um dos k subconjuntos é usado como set de validação e os outros subconjuntos k-1 são colocados juntos para formar um set de treinamento. A estimativa de erro é calculada com base em todas as k tentativas para obter a eficácia total do nosso modelo.

Cada observação integra o set de validação exatamente uma vez e integra o set de treinamento k-1 vezes. Isso reduz significativamente o bias (viés), já que estamos usando a maioria dos dados para treinamento e também reduz significativamente a variância, pois a maioria dos dados também está sendo usada no set de validação. Como regra geral e evidência empírica, K = 5 ou 10 são boas opções, mas nada é fixo e pode-se usar qualquer valor.



Cross-validaton Leave-P-Out (LpO)

Esta abordagem deixa de fora p observações ao fazer o cross-validation. Ou seja, havendo n observações, haverá n – p amostras para treinamento e p observações são usadas pela validação. O método é exaustivo por treinar e validar o modelo para todas as combinações possíveis de p, mas para p moderadamente grande, ele pode se tornar computacionalmente inviável.

LpO requer treinamento e validação do modelo em C(n, p) combinações, onde n é o número de observações. Por exemplo, com n = 100 e p = 30, C (100, 30) ~ 3 x 10^25.


Leave one out cross validation (LoO)

Um caso particular desse método é quando p = 1. Isso é conhecido Leave one out cross validation (LoO). Este método é geralmente preferido em relação ao anterior porque não sofre do cálculo intensivo, pois o número de combinações possíveis é igual ao número de pontos de dados na amostra original ou n. Neste caso C(n, 1) = n.


Stratified K-Fold Cross Validation (Validação cross validation extratificada)

Em alguns casos, pode haver um grande desequilíbrio na variável ​​de resposta (target) . Por exemplo, em uma amostra de pessoas para avaliar incidência de febre amarela, pode haver várias vezes mais amostras negativas do que amostras positivas. Para tais problemas, uma pequena variação na técnica de validação cruzada K-Fold é feita, de tal forma que cada parte amostral (fold) contém aproximadamente a mesma porcentagem de amostras de cada classe, ou em caso de problemas de regressão o valor médio da resposta deve ser aproximadamente igual em todas os folds .

Boostrap

Enquanto que cross-validation usa a técnica de amostragem sem reposição, ou seja, mesmas observações não são incluídas em uma amostra, no bootstrap a amostragem é feita com reposição. A idéia básica de bootstrap é que a inferência sobre uma população a partir de dados amostrais, pode ser modelada pela reamostragem dos dados.



No bootstrap as amostras provavelmente não são idênticas à nossa amostra inicial. Algumas observações podem estar duplicadas. Po exemplo se começarmos com a amostra 2, 4, 5, 6, 6, todas as seguintes amostras de bootstrap são possíveis:


2, 5, 5, 6, 6

4, 5, 6, 6, 6

2, 2, 4, 5, 5

2, 2, 2, 4, 6

2, 2, 2, 2, 2

4,6, 6, 6, 6

...

O nome “bootstrapping” vem da frase “levantar-se pelos cadarços de seus sapatos”. Isso se refere a algo que é impossível, porém a justificação é provada matematicamente. Embora não pareça que você pode melhorar a estimativa de uma estatística populacional reutilizando a mesma amostra repetidas vezes, o bootstrap pode, de fato, fazer isso.

Cross-validation é uma técnica muito útil para avaliar a eficácia do modelo, especialmente nos casos em que você precisa reduzir o overfitting. Também é útil na determinação dos parâmetros do modelo, no sentido de que parâmetros resultarão em menor erro de teste.

Os programas de ML como R e Python oferecem muitas opções para esta técnica.


Bibliografia

Livros

Hastie, Friedman, and Tibshirani, The Elements of Statistical Learning, 2001

Bishop, Pattern Recognition and Machine Learning, 2006

Tan, Steinbach, and Kumar, Introduction to Data Mining, Addison-Wesley, 2005

Machine Learning in Action Peter Harrington

Cursos

Machine Learning Coursera - Andrew Ng

Learning From Data - Yaser Abu-Mostafa

3 Dimensões

Inteligência Artificial nas Empresas

Al. das Papoulas, 147 - Santana de Parnaíba - Alphaville, SP 06539-180 - (11) 4153 6004  - (11) 9 9795 9765

michel@3dimensoes.com.br