НачатьНачать бесплатно

Относительная ошибка

В этом упражнении вы сравните относительную ошибку с абсолютной. В целях моделирования определим относительную ошибку следующим образом:

$$ rel = \frac{(y - pred)}{y} $$

то есть ошибка выражается относительно истинного значения. Общую относительную ошибку модели будем измерять с помощью корня из среднеквадратичной относительной ошибки:

$$ rmse_{rel} = \sqrt(\overline{rel^2}) $$

где \(\overline{rel^2}\) — среднее значение \(rel^2\).

Пример набора данных fdata уже загружен. Он содержит следующие столбцы:

  • y: истинное выходное значение, которое должна предсказать модель; представьте, что это сумма, которую покупатель потратит при посещении вашего магазина.
  • pred: предсказания модели для y.
  • label: категориальный признак: относится ли y к группе покупателей, совершающих small (небольшие) или large (крупные) покупки.

Ваша задача — определить, какая модель работает «лучше»: та, что предсказывает small, или та, что предсказывает large.

Это упражнение является частью курса

Обучение с учителем в R: регрессия

Посмотреть курс

Инструкции к упражнению

  • Заполните пропуски, чтобы изучить данные. Обратите внимание: крупные покупки, как правило, примерно в 100 раз больше небольших.
  • Заполните пропуски, чтобы создать столбцы с ошибками:
    • Определите остаток как y - pred.
    • Определите относительную ошибку как residual / y.
  • Заполните пропуски, чтобы вычислить и сравнить RMSE и относительный RMSE.
    • Как соотносятся абсолютные ошибки? А относительные?
  • Изучите график предсказаний и истинных значений.
    • На ваш взгляд, какая модель работает «лучше»?

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# fdata is available
summary(fdata)

# Examine the data: generate the summaries for the groups large and small:
fdata %>% 
    group_by(label) %>%     # group by small/large purchases
    summarize(min  = ___,   # min of y
              mean = ___,   # mean of y
              max  = ___)   # max of y

# Fill in the blanks to add error columns
fdata2 <- fdata %>% 
         group_by(label) %>%       # group by label
           mutate(residual = ___,  # Residual
                  relerr   = ___)  # Relative error

# Compare the rmse and rmse.rel of the large and small groups:
fdata2 %>% 
  group_by(label) %>% 
  summarize(rmse     = ___,   # RMSE
            rmse.rel = ___)   # Root mean squared relative error
            
# Plot the predictions for both groups of purchases
ggplot(fdata2, aes(x = pred, y = y, color = label)) + 
  geom_point() + 
  geom_abline() + 
  facet_wrap(~ label, ncol = 1, scales = "free") + 
  ggtitle("Outcome vs prediction")
Редактировать и запускать код