Exercícios 9

Aula 9

1) Cross-validation

Para esse exercício, usaremos uma base de dados das candidaturas à Câmara dos Deputados em 2014 que contém, entre outros, variáveis como o sexo, a raça, a escolaridade e o status de reeleição das candidaturas, bem como uma dummy (resultado) que indica se a candidatura foi (\(1\)) ou não (\(0\)) eleita (Machado, Campos, e Recch 2020).

link <- "https://raw.githubusercontent.com/FLS-6497/datasets/main/aula9/camara_2014.csv"
dados <- readr::read_csv2(link) %>%
  mutate_if(is.character, as.factor)
import pandas as pd

link = 'https://raw.githubusercontent.com/FLS-6497/datasets/main/aula9/camara_2014.csv'
dados = pd.read_csv(link, sep=';', decimal=",")

a) Básico

Crie uma pipeline para estandardizar variáveis numéricas (ou transformar variáveis categóricas em dummies) com algum modelo de classificação da sua escolha e o valide usando K-fold com \(K = 5\) e, depois, com \(K = 10\).

b) LOO

Sorteie apenas algumas observações do banco completo (50, por exemplo) e, em vez de usar K-fold, desta vez use LOO como estratégia de validação (no mlr3, a função chama-se loo; no sklearn, LeaveOneOut).1

  • 1 No R talvez seja necessário usar como métrica de validação a classif.ce.

  • c) Mantendo balanço

    Na base de dados, há muito menos candidaturas eleitas do que não-eleitas. Para evitar que amostras de treino e de teste percam esse balanço original, use K-fold estratificado (no mlr3, basta declarar stratum = variavel na task; no sklearn, use StratifiedKFold).

    d) Repetindo o processo

    Finalmente, use repeated k-fold para minimizar a variação decorrente do sorteio no particionamento das amostras (no mlr3, com repeated_cv; no sklearn, com RepeatedKFold ou com RepeatedStratifiedKFold).

    Workflow de validação

    Para este exercício, precisaremos separar a nossa amostra de uma forma mais próxima daquela usada em projetos reais: treino, teste e validação. Para tanto:

    a) Holdout

    Faça um holdout inicial da base, separando 90% dela para treino e teste e 10% para validação.

    b) Cross-validation

    Com os 90% restanted da base, treine e valide um modelo usando alguma estratégia de cross-validation. Ao final, quando encontrar o melhor modelo, treine ele em todos os 90% das observações e o valide na base de validação com 10% de observações.

    Usando mais dados

    Neste exercício, vamos voltar à base de dados climático de São Bernardo do Campo e, com o que aprendemos nas últimas aulas, vamos tentar melhorar nosso desempenho na tarefa de predizer temperatura máxima diária. Carregue a base com:

    link <- "https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv"
    dados <- readr::read_csv(link)
    import pandas as pd
    
    link = 'https://raw.githubusercontent.com/jacobwright32/Web_Scraper_AI_Core_Project/bb4865ae568e23ab8fadb6ea58cf117df2164ef3/web%20scraping/Cleaned%20Data/Brazil_Sao%20Bernardo%20Do%20Campo_Cleaned.csv'
    dados = pd.read_csv(link)

    a) Novo workflow

    Monte um workflow para melhorar o desempenho na tarefa de predizer maximum_temprature. Em particular, considere o seguinte:

    • Pré-processar variáveis contínuas (minmax ou estandardização);
    • Reduzir dimensionalidade (PCA ou kernelpca);
    • Considerar combinações não-lineares (criando polinômios ou usando MARS)
    • Usar ensemble, inclusive com stacking
    • Usar uma estratégia de validação que deixe mais dados para treino (K-fold com um \(K=10\) ou \(K=20\))
    • Considerar a estrutura temporal dos dados (é possível criar uma variável lag de maximum_temprature, o transformar o problema em um de série temporal e usar walk-forward validation)

    Referências

    Machado, Carlos Augusto, Luiz Augusto Campos, e Filipe Recch. 2020. "Race and Competitiveness in Brazilian Elections: Evaluating the Chances of Black and Brown Candidates through Quantile Regression Analysis of Brazil’s 2014 Congressional Elections". Brazilian Political Science Review 13.