Bias vs. Variância (Parte 2)

Recapitulando…

No primeiro post, mostramos a definição de bias e variância e como esses tipos de erro se relacionam com o ajuste do modelo aos dados. Abaixo segue um resumo mais visual:bias_variance

Cada ponto representa o mesmo modelo treinado com dados diferentes. Sendo assim, temos:

– ↓bias e ↓variância: predições próximas do real e entre si.
– ↓bias e ↑variância: predições próximas do real, mas destoantes entre si.
– ↑bias e ↓variância: predições longe do real, mas próximas entre si.
– ↑bias e ↑variância: predições longe do real e destoantes entre si

Agora que entendemos os conceitos de bias e variância, como vamos calculá-los para o nosso modelo se só temos um único conjunto de dados?

Estimando o Bias e a Variância

Uma maneira de estimar o bias e a variância é aplicando uma técnica conhecida como validação cruzada (em inglês, cross validation), que consiste em dividir o conjunto de treinamento em 2 subconjuntos: um no qual o modelo será treinado e outro no qual o modelo será validado.

Um dos métodos mais conhecidos e utilizados é o K-fold, que é o que utilizaremos aqui (para conhecer melhor outros métodos de validação cruzada, sugiro este artigo). Neste método, o conjunto de treinamento é dividido em K subconjuntos, sendo que K-1 são usados para o treinamento e 1 conjunto é usado para validação. O processo é repetido K vezes, variando os subconjuntos de maneira que em cada iteração, um conjunto seja utilizado como validação.

cross_validation

Desta forma, tudo o que precisamos fazer é seguir os seguintes passos:

  • Fixar os parâmetros do modelo
  • Aplicar N vezes uma validação cruzada K-fold (N*K iterações).
  • Guardar predições em cada iteração para cada instância do conjunto de dados.
  • Calcular bias e variância a partir do valor e das predições armazenadas de cada observação.

Mais detalhado, em pseudo-código:

-- T = conjunto de treinamento
-- N = número de predições para cada obsevação x em T obtidas para estimar o bias e a variância

Repetir N vezes:
    Dividir T em k subconjuntos aleatoriamente: T1, T2, ... Tk
    Para i = 1,k:
        Separar o subconjunto Ti
        Treinar o modelo com os subconjuntos restantes
        Gerar e guardar predições p para cada x ∈ Ti

Para cada x em T:
    Tirar a média u das N predições y'
    Calcular |u - y|, onde y é o valor real para x
    Para cada uma das N predições:
        Calcular (u - y')²
    Calcular v como a média de todos os valores de (u - y')² calculados

-- Calculando o bias do modelo
Calcular o bias como a média de todos os valores de |u - y|

-- Calculando a variância
Calcular a variância como a média de todos os valores de v

Ao fim do processo, cada instância terá sido utilizada N*(K-1) vezes no treinamento do modelo e N vezes para a validação do mesmo. Sendo assim, teremos N predições para cada observação e com elas poderemos calcular o bias e a variância utilizando as formulações matemáticas introduzidas no primeiro post da série:

bias_variance

(1) Bias e (2) variância de uma modelo h(x) que aproxima a função f(x)

Para a estimativa, consideraremos y = f(x), ou seja, desprezaremos o ruído. Assim, o bias é calculado como a média da diferença da média das predições menos o valor real para cada observação no conjunto de dados.

Considerações importantes:

  • Essa não é a única maneira de estimar o bias e a variância (este artigo compara os procedimentos mais utilizados).
  • Em geral, o processo é realizado com N = 10 e K = 10, mas não é uma regra.
  • Por treinar o mesmo modelo várias vezes (N*K), decompor o erro é computacionalmente caro.

No terceiro post da série iremos ver que medidas podemos tomar para controlar o bias e a variância.

Bias vs. Variância (Parte 1)

Bias vs. Variância (Parte 3)

Anúncios

Tags:,

Trackbacks / Pingbacks

  1. Bias vs. Variância (Parte 1) | Eric Couto - 19 de julho de 2013
  2. Bias vs. Variância (Parte 3) | Eric Couto - 21 de janeiro de 2014

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: