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

Если вам повезет, вы также найдете такую ​​формулу:

Однако это как раз та часть, которую обычно забивают. Даже некоторые профессионалы не могут ответить на некоторые или все эти вопросы:

  • Как определяются все части этого уравнения?
  • Как перейти от левой части уравнения к правой?
  • Ожидание относительно какой вероятностной меры?
  • Что на самом деле означает эта формула?

В этой статье мы постараемся ответить на эти вопросы и разбить формулу на детали. Мы также запустим моделирование, чтобы проиллюстрировать каждую часть формулы, чтобы воплотить уравнение в жизнь.

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

Настраивать

В дальнейшем мы предполагаем, что данные возникают из классической аддитивной модели ошибок.

с участием

Это означает, что Y - случайная (выходная) переменная с действительным знаком.

X обычно моделируется как случайный (входной) вектор с действительными значениями, но для простоты на протяжении всей этой работы мы предполагаем, что значения

в выборке фиксированы заранее (т. е. неслучайно). В контексте регрессионного анализа это означает, что у нас есть детерминированная матрица дизайна:

Таким образом, обучающий набор данных всегда выглядит следующим образом:

Теперь мы хотим «изучить» f, то есть оценить модель (2). Для этого мы можем использовать любой алгоритм обучения с учителем и набор обучающих данных τ, чтобы получить полезное приближение.

of f.

Пример

Давайте внесем немного жизни в нашу установку. Мы установили

и

При этом примерный обучающий набор выглядит следующим образом:

Должно быть ясно, что разные обучающие выборки (взятые из модели (2) в разное время) различаются. Давайте визуализируем шесть таких разных наборов обучающих данных, которые все были получены в процессе генерации данных (2):

Чтобы прояснить это: на практике вы столкнетесь только с одним набором обучающих данных (а не с шестью)! Однако для понимания компромисса смещения и дисперсии важно понимать, как разные наборы обучающих данных могут повлиять на вашу модель.

Чтобы проиллюстрировать этот момент, давайте сопоставим три разные модели с шестью наборами обучающих данных, полученными выше. Чтобы упростить задачу, все модели будут линейными, но с разными базовыми расширениями:

  • Модель 1: y ~ 1 + x
  • Модель 2: y ~ 1 + x + x²
  • Модель 3: y ~ 1 + x + x² + x³ + x⁴ + x⁵ + x⁶ + x⁷ + x⁸ + x⁹ + x¹⁰

Получаем следующие результаты:

Модель 1

Модель 2

Модель 3

Мы наблюдаем следующее:

  • Подобранная модель 1 выглядит почти одинаково для каждого набора обучающих данных. Это именно то, что мы имеем в виду, когда говорим «модель имеет низкую дисперсию»: даже при изменении наборов обучающих данных результат (почти) тот же.
  • Однако мы видим, что модель 1 не очень хорошо соответствует данным. Модель не может определить квадратичный тренд, поэтому прогнозы будут неточными. Это то, что мы имеем в виду, когда говорим «модель имеет высокое смещение»: (средний) прогноз модели 1 будет значительно отклоняться от истинного значения. → недостаточное оснащение
  • В отличие от этого модель 3 настолько гибка, что легко определяет квадратичный тренд. Это означает, что прогнозы будут (в среднем) очень близкими к истинному значению (низкое смещение). Однако модель может быть даже слишком гибкой: мы видим, что подобранные модели выглядят совершенно по-разному для разных наборов обучающих данных. Это именно то, что мы имеем в виду, когда говорим «модель имеет высокую дисперсию»: при изменении наборов обучающих данных подогнанные функции будут сильно различаться. → переоснащение
  • Модель 2 можно описать как нечто среднее между моделью 1 и моделью 3. Похоже, что подобранные функции различаются больше, чем для модели 1, но меньше, чем для модели 3. Кроме того, квадратичный тренд аппроксимируется намного лучше, чем в модели 1. → хорошо подходит

Какую модель вы бы выбрали на практике? Модель 1 не очень хорошо соответствует данным (высокая систематическая ошибка). Однако нам также не следует использовать гибкую модель 3, так как мы можем чрезмерно приспособиться к неоптимальному набору обучающих данных (высокая дисперсия). Следовательно, мы выбираем модель 2, которая находится посередине! Он предлагает наилучший возможный компромисс между смещением и дисперсией.

Эта интуиция формализована в уравнении (1), которое мы рассмотрим в следующем разделе.

Разложение

Представьте, что вам нужно выбрать алгоритм обучения для аппроксимации модели (2). Имеет смысл выбрать учащегося так, чтобы ожидаемая ошибка прогнозирования EPE была минимальной. Используя квадратичную потерю ошибок, EPE (также называемая ошибкой теста или обобщения) в точке x_ 0 можно записать как

Что происходит под капотом этого выражения? Мы можем думать об этом как о

  1. извлечение случайного набора обучающих данных τ из процесса генерации данных (2)
  2. подгонка модели f ^ с нашим учащимся к этим обучающим данным τ
  3. рисование (другого) случайного значения y_ 0 из Y | X = x_ 0
  4. вычисление квадрата разницы между y_ 0 и прогнозом f ^ (x_ 0 )

EPE теперь является ожидаемым значением этой процедуры.

С другой стороны, мы можем определить набор

Обратите внимание, что это «случайный» набор, поскольку значения y будут меняться от реализации к реализации. Теперь математическое ожидание в (3) рассчитывается как среднее по всем таким возможным множествам. Это станет еще яснее в следующем разделе, когда мы рассмотрим моделирование.

Обратите внимание, как это похоже на то, что мы сделали в предыдущем разделе: вместо того, чтобы подгонять модель только к одному набору данных, нас интересует, что произойдет, если мы подгоним модель ко многим различным наборам данных. Анализируя это поведение и принимая среднее значение / ожидание всех этих возможных ситуаций, мы можем сделать общее заявление о качестве модели - независимо от конкретного набора данных.

Самое замечательное сейчас то, что мы можем разложить ожидаемую (возведенную в квадрат) ошибку предсказания на

  • неприводимая ошибка σ²
  • предвзятость
  • отклонение

Чтобы увидеть, как это работает, сначала отметим, что

а также

где мы использовали известный факт, что

Используя (4), (5), (6) и тот факт, что y _0 не зависит от τ (и, следовательно, не зависит от f ^ (x_ 0 )), мы можем вычислить

Это в точности формула (1) с промежуточными шагами. Что это означает?

Во-первых, мы можем видеть, что ожидаемая ошибка предсказания никогда не может быть меньше, чем σ². Это разумно, так как это неотъемлемый и неснижаемый шум нашего процесса генерации данных (2).

Второй компонент EPE - это смещение (возведенное в квадрат). Смещение описывает разницу между ожидаемым прогнозом модели и истинным значением f (x_ 0 ) (без шума). «Ожидаемое» прогнозирование в том смысле, что мы можем рассматривать его как обучающие модели на множестве различных реализованных обучающих наборов данных и усреднение их прогнозов.

Третий компонент EPE - это дисперсия прогноза. Опять же, мы можем думать об этом как о обучающих моделях на множестве различных реализованных обучающих наборов данных и вычислении дисперсии их прогнозов. Это станет еще яснее в следующем разделе.

Моделирование

В этом разделе мы берем наш предыдущий пример и аппроксимируем члены в уравнении (1) для x_ 0 = 4 путем моделирования. Это поможет нам лучше понять то, что мы уже обнаружили.

Мы сделаем следующее:

  • Моделируйте 1000 обучающих наборов данных на основе нашего процесса генерации данных (2)
  • Обучите три модели, как описано в разделе «Пример» для каждого набора обучающих данных.
  • Вычислить f ^ ( 4 ) для каждой модели для каждого сгенерированного набора данных.

Код R для этого выглядит следующим образом:

# set deterministic design matrix
X <- seq(0, 10, 0.5)
# function to generate the random y-values
get_y <- function(X, std = 5){
  
  return(X**2 + rnorm(length(X), 0, std))
  
}
# seed for reproducibility
set.seed(12345)
f_hat_1 <- numeric(0)
f_hat_2 <- numeric(0)
f_hat_3 <- numeric(0)
# generate 1000 datasets, fit models, and compute f^(4)
for (i in 1:1000){
  dat <- data.frame(x = X, y = get_y(X))
  
  mod1 <- lm(y ~ x,           data = dat)
  mod2 <- lm(y ~ poly(x, 2),  data = dat)
  mod3 <- lm(y ~ poly(x, 10), data = dat)
  
  f_hat_1 <- c(f_hat_1, predict(mod1, data.frame(x = 4))[[1]])
  f_hat_2 <- c(f_hat_2, predict(mod2, data.frame(x = 4))[[1]])
  f_hat_3 <- c(f_hat_3, predict(mod3, data.frame(x = 4))[[1]])
  
}

Векторы f_hat_1, f_hat_2 и f_hat_3 теперь содержат прогнозы подобранных моделей для x_ 0 = 4 для различных наборов обучающих данных. Давайте визуализируем это с помощью гистограмм:

Модель 1

Модель 2

Модель 3

Каждая гистограмма показывает эмпирическое распределение случайной величины f ^ ( 4 ) (т. Е. Прогноз модели) для соответствующей модели. Повторяю: Прогнозы моделей являются случайными величинами, потому что мы считаем набор обучающих данных случайным.

Теперь мы можем визуально увидеть то, что мы описали словами в разделе «Пример»: прогнозы модели 1 довольно стабильны (низкая дисперсия), но процесс генерации данных не очень хорошо аппроксимируется (высокая систематическая ошибка). То есть прогнозы модели отклоняются от истинного значения (без шума), которое составляет f ( 4 ) = 4² = 16 (показано красной линией).

В отличие от этого, прогнозируемые значения модели 3 довольно сильно различаются (высокая дисперсия), но средний прогноз близок к истинному значению 16 (низкое смещение).

Давайте аппроксимируем член смещения в уравнении (1) путем усреднения по всем нашим 1000 сгенерированным наборам обучающих данных:

# Bias^2
b1 <- (mean(f_hat_1) - 16)^2
b2 <- (mean(f_hat_2) - 16)^2
b3 <- (mean(f_hat_3) - 16)^2
  • b1 = 66.5535
  • b2 = 6.693562e-06
  • b3 = 3.767206e-05

Далее, давайте вычислим дисперсию прогнозов f ^ ( 4 ):

# Variance
v1 <- var(f_hat_1)
v2 <- var(f_hat_2)
v3 <- var(f_hat_3)
  • v1 = 1.291835
  • v2 = 2.496312
  • v3 = 8.604308

Согласно правой части уравнения (1) и с учетом σ² = 25, EPE для трех моделей, таким образом,

# EPE right side
epe_1 <- b1 + v1 + 25
epe_2 <- b2 + v2 + 25
epe_3 <- b3 + v3 + 25
  • epe_1 = 92,84534
  • epe_2 = 27,49632
  • epe_3 = 33.60435

Давайте теперь вычислим EPE в соответствии с левой частью уравнения (1). Для этого нам нужно сгенерировать новые значения y_ 0 и среднее значение по всем сгенерированным наборам обучающих данных и всем сгенерированным значениям y_ 0:

set.seed(12345)
EPE_1 <- 0
EPE_2 <- 0
EPE_3 <- 0
# for each training dataset...
for(i in 1:1000){
  
  # ...generate 1000 new values y_0
  for(j in 1:1000){
    
    y_0 <- get_y(X)[9]
    
    # calculate squared difference between y_0 and model prediction
    EPE_1 <- EPE_1 + (y_0 - f_hat_1[i])^2
    EPE_2 <- EPE_2 + (y_0 - f_hat_2[i])^2
    EPE_3 <- EPE_3 + (y_0 - f_hat_3[i])^2
    
  }
  
}
# compute the average
EPE_1 <- EPE_1 / 1000000
EPE_2 <- EPE_2 / 1000000
EPE_3 <- EPE_3 / 1000000
  • EPE_1 = 92,76966
  • EPE_2 = 27,48219
  • EPE_3 = 33,60338

Это почти те же значения, что и те, которые были вычислены с помощью правой части уравнения (1)! Это еще раз показывает, что EPE действительно можно разложить на неснижаемую ошибку, систематическую ошибку и дисперсию.

Также обратите внимание на то, что у модели 2 самый маленький EPE. Это согласуется с нашей интуицией сверху о том, что эта модель наилучшим образом сочетает в себе систематические ошибки и дисперсию.

Вывод

В этой статье мы проиллюстрировали математические расчеты и детали, лежащие в основе компромисса смещения и дисперсии. Ключевым моментом является то, что декомпозиция EPE рассматривает обучающий набор данных как случайный. Это означает, что мы делаем заявление не о качестве модели для конкретного набора обучающих данных, а делаем общее заявление о модели.

Мы также использовали конкретный пример и моделирование, чтобы понять, что это на самом деле означает, и убедиться в справедливости уравнения (1).

Ссылка

Хасти Т., Тибширани Р. и Фридман Дж. Х. (2009). Элементы статистического обучения: интеллектуальный анализ данных, вывод и прогнозирование. 2-е изд. Нью-Йорк: Спрингер.