Cadre de prédiction avec ensemble de validation

Modélisation avec des données dans le tidyverse

Albert Y. Kim

Assistant Professor of Statistical and Data Sciences

Approche par ensemble de validation

Utilisez deux ensembles de données indépendants pour :

  1. Entraîner/ajuster votre modèle
  2. Évaluer la capacité prédictive, c.-à-d. valider votre modèle
Modélisation avec des données dans le tidyverse

Division entraînement/test

Divisez au hasard les $n$ observations (blanc) en :

  1. Un ensemble d'entraînement (bleu) pour ajuster les modèles
  2. Un ensemble de test (orange) pour faire des prédictions

Modélisation avec des données dans le tidyverse

Division entraînement/test en R

library(dplyr)

# Randomly shuffle order of rows:
house_prices_shuffled <- house_prices %>% 
  sample_frac(size = 1, replace = FALSE)

# Split into train and test: train <- house_prices_shuffled %>% slice(1:10000) test <- house_prices_shuffled %>% slice(10001:21613)
Modélisation avec des données dans le tidyverse

Entraîner des modèles sur les données d'entraînement

train_model_price_1 <- lm(log10_price ~ log10_size + yr_built,
                          data = train)

get_regression_table(train_model_price_1)
# A tibble: 3 x 7
  term       estimate std_error statistic p_value lower_ci...
  <chr>         <dbl>     <dbl>     <dbl>   <dbl>    <dbl>...
1 intercept     5.34      0.111      48.3       0    5.13...
2 log10_size    0.923     0.009      97.5       0    0.905...
3 yr_built     -0.001     0         -23.0       0   -0.001...
Modélisation avec des données dans le tidyverse

Produire des prédictions sur les données de test

# Train model on train:
train_model_price_1 <- lm(log10_price ~ log10_size + yr_built,
                          data = train)

# Get predictions on test:
get_regression_points(train_model_price_1, newdata = test)
# A tibble: 11,613 x 6
      ID log10_price log10_size yr_built log10_price_hat...
   <int>       <dbl>      <dbl>    <dbl>           <dbl>...
 1     1        5.83       3.29     1951            5.71...
 2     2        5.88       3.40     1922            5.84...
 3     3        6.15       3.67     2002            5.99...
 4     4        5.62       3        1953            5.43...
...
# ... with 11,603 more rows
Modélisation avec des données dans le tidyverse

Évaluer les prédictions avec la RMSE

# Train model:
train_model_price_1 <- lm(log10_price ~ log10_size + yr_built,
                          data = train)

# Get predictions and compute RMSE:
get_regression_points(train_model_price_1, newdata = test) %>%
  mutate(sq_residuals = residual^2) %>%
  summarize(rmse = sqrt(mean(sq_residuals)))
# A tibble: 1 x 1
   rmse
  <dbl>
1 0.165
Modélisation avec des données dans le tidyverse

Comparer les RMSE

# Train model:
train_model_price_3 <- lm(log10_price ~ log10_size + condition,
                          data = train)

# Get predictions and compute RMSE:
get_regression_points(train_model_price_3, newdata = test) %>%
  mutate(sq_residuals = residual^2) %>%
  summarize(rmse = sqrt(mean(sq_residuals)))
# A tibble: 1 x 1
   rmse
  <dbl>
1 0.168
Modélisation avec des données dans le tidyverse

Passons à la pratique !

Modélisation avec des données dans le tidyverse

Preparing Video For Download...