(Почему) у переоснащенных моделей, как правило, большие коэффициенты?


33

Я полагаю, что чем больше коэффициент для переменной, тем больше у модели способности «качаться» в этом измерении, обеспечивая повышенную возможность подгонки к шуму. Хотя я думаю, что у меня есть разумное представление о связи между дисперсией в модели и большими коэффициентами, у меня нет такого хорошего представления о том, почему они встречаются в моделях с обмундированием. Неправильно ли говорить, что они являются признаком переоснащения, а коэффициент усадки является скорее техникой уменьшения дисперсии в модели? Регуляризация посредством сжатия коэффициентов, кажется, работает по принципу, согласно которому большие коэффициенты являются результатом переобученной модели, но, возможно, я неверно истолковываю мотивацию, лежащую в основе этой техники.

Мое понимание того, что большие коэффициенты, как правило, являются признаком переоснащения, исходит из следующего примера:

Допустим, мы хотели подогнать точек, которые все находятся на оси X. Мы можем легко построить многочлен, решения которого являются этими точками: f ( x ) = ( x - x 1 ) ( x - x 2 ) . , , , ( x - x n - 1 ) ( x - x n ) . Скажем, наши точки в х = 1 , 2 , 3 , 4nf(x)=(xx1)(xx2)....(xxn1)(xxn)x=1,2,3,4, Этот метод дает все коэффициенты> = 10 (кроме одного коэффициента). Когда мы добавим больше точек (и тем самым увеличим степень многочлена), величина этих коэффициентов будет быстро увеличиваться.

Этот пример показывает, как я в настоящее время связываю размер коэффициентов модели со «сложностью» сгенерированных моделей, но я обеспокоен тем, что этот случай бесполезен, чтобы действительно указывать на поведение в реальном мире. Я намеренно построил переопределенную модель (полиномиальная МНК 10-й степени, подходящая к данным, сгенерированным из модели квадратичной выборки), и был удивлен, увидев в моей модели в основном небольшие коэффициенты:

set.seed(123)
xv = seq(-5,15,length.out=1e4)
x=sample(xv,20)
gen=function(v){v^2 + 7*rnorm(length(v))}
y=gen(x)
df = data.frame(x,y)

model = lm(y~poly(x,10,raw=T), data=df)
summary(abs(model$coefficients))
#     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
# 0.000001 0.003666 0.172400 1.469000 1.776000 5.957000


data.frame(sort(abs(model$coefficients)))
#                                   model.coefficients
# poly(x, 10, raw = T)10                  7.118668e-07
# poly(x, 10, raw = T)9                   3.816941e-05
# poly(x, 10, raw = T)8                   7.675023e-04
# poly(x, 10, raw = T)7                   6.565424e-03
# poly(x, 10, raw = T)6                   1.070573e-02
# poly(x, 10, raw = T)5                   1.723969e-01
# poly(x, 10, raw = T)3                   6.341401e-01
# poly(x, 10, raw = T)4                   8.007111e-01
# poly(x, 10, raw = T)1                   2.751109e+00
# poly(x, 10, raw = T)2                   5.830923e+00
# (Intercept)                             5.956870e+00

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

Является ли (L2) регуляризация всего лишь механизмом уменьшения дисперсии в модели и, таким образом, «сглаживания» кривой для лучшего соответствия будущим данным, или же она использует эвристику, полученную из наблюдения, что перегруженные модели имеют тенденцию демонстрировать большие коэффициенты? Является ли точное утверждение, что переоснащенные модели имеют тенденцию демонстрировать большие коэффициенты? Если да, может кто-нибудь немного объяснить механизм, лежащий в основе этого явления, и / или направить меня к какой-нибудь литературе?


4
Что именно вы подразумеваете под «большим» коэффициентом? В конце концов, если мы просто изменим единицы, в которых мы выражаем зависимую переменную (например, с парсек на фемтометры), мы можем сделать коэффициенты сколь угодно большими или малыми по значению.
whuber

1
У меня нет хорошего ответа на это. Насколько я понимаю, атака на «большие» коэффициенты была мотивирующей эвристикой за L2-регуляризацией. Но синтетическое увеличение величины коэффициентов потребовало бы также изменения константы регуляризации, чтобы компенсировать различные величины в модели сейчас, не так ли? Я не думаю, что понятие «большой» здесь столь же неоднозначно, как вы его представляете, даже если я не могу охарактеризовать его очень хорошо.
Дэвид Маркс

@DavidMarx: я не думаю, что L2-регуляризация идет после «больших» коэффициентов, не так ли? Скорее, он стремится подтолкнуть коэффициенты, которые, вероятно, не были сравнительно большими к нулю, в некотором смысле заставляя вас выбирать, а не находить компромисс между этими двумя.
Уэйн

@ Уэйн, ах, я думаю, что это было задом наперед. Я думал, что это уменьшило большие коэффициенты или уменьшило все коэффициенты пропорционально. Это имело бы больше смысла, если бы L2-регуляризация вытеснила переменные с меньшими коэффициентами из модели.
Дэвид Маркс

1
После 8 правок я думаю, что у меня есть ответ вниз. Sheesh.
Хонг Ой

Ответы:


15

В контексте регуляризации «большой» коэффициент означает, что величина оценки больше, чем она была бы, если бы использовалась фиксированная спецификация модели . Это результат получения не только оценок, но и спецификации модели из данных.

Подумайте, что будет делать процедура типа ступенчатой ​​регрессии для данной переменной. Если оценка его коэффициента мала по сравнению со стандартной ошибкой, она будет исключена из модели. Это может быть связано с тем, что истинное значение действительно мало, или просто из-за случайной ошибки (или их комбинации). Если он упал, то мы больше не обращаем на это внимания. С другой стороны, если оценка велика относительно ее стандартной ошибки, она будет сохранена. Обратите внимание на дисбаланс: наша окончательная модель будет отклонять переменную, когда оценка коэффициента мала, но мы будем сохранять ее, когда оценка велика. Таким образом, мы, вероятно, переоценим его стоимость.

Иными словами, переоснащение означает, что вы преувеличиваете влияние данного набора предикторов на ответ. Но единственный способ переоценить влияние - это если оценочные коэффициенты слишком велики (и, наоборот, оценки для исключенных вами предикторов слишком малы).

stepβ3β10

Вот пример того, о чем я говорю.

repeat.exp <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(step(lm(y ~ x1, data=d), y ~ x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10, trace=0))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z <- repeat.exp(M=1000)

# some time later...
rowMeans(abs(z), na.rm=TRUE)

(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    3.162100    6.533642    3.108974    3.204341    3.131208    3.118276    3.217231    3.293691    3.149520    3.073062 

β3β10 , среднее отклонение гораздо меньше.

repeat.exp.base <- function(M)
{
    x <- seq(-2, 2, len=25)
    px <- poly(x, 10)
    colnames(px) <- paste0("x", 1:10)
    out <- setNames(rep(NA, 11), c("(Intercept)", colnames(px)))
    sapply(1:M, function(...) {
        y <- x^2 + rnorm(N, s=2)
        d <- data.frame(px, y)
        b <- coef(lm(y ~ ., data=d))
        out[names(b)] <- b
        out
    })
}

set.seed(53520)
z2 <- repeat.exp.base(M=1000)

rowMeans(abs(z2))
(Intercept)          x1          x2          x3          x4          x5          x6          x7          x8          x9         x10 
   1.453553    1.676066    6.400629    1.589061    1.648441    1.584861    1.611819    1.607720    1.656267    1.583362    1.556168 

β1β2 . Отсюда обычный шаг стандартизации ваших переменных перед применением любого из этих методов.


Я немного смущен вашим измененным примером. Вы говорите: «Вы должны обнаружить, что все оценки коэффициентов от β3 до β10 систематически слишком велики по сравнению с отсутствием выбора переменных», но, похоже, вы получили более высокие значения в первом эксперименте (с step), чем во втором эксперименте («вслепую» подгоночные значения). Разве это не противоречит тому, что вы предлагаете, должно произойти?
Дэвид Маркс

Кроме того, вы и другие здесь предложили мне стандартизировать переменные в моем примере. Я вижу причины, но я не знаю, как это сделать. Должен ли я улучшить свои образцы данных, чтобы включить столбцы для каждой степени X и стандартизировать эти значения? Или есть способ, которым я могу стандартизировать переменные непосредственно в формуле моей модели, где я звоню poly(я думаю, нет)?
Дэвид Маркс

? Вы получаете большие абсолютные отклонения при использовании пошагового, по сравнению с не используя пошаговый. Не уверен, что вы спрашиваете. Что касается стандартизации: это не нужно, если вы делаете это так, как я опубликовал, т.е. проводите сравнение между пошаговым и нешаговым подходом. Каждую переменную сравнивают от одной обработки к другой, а не к другим переменным.
Хонг Ой

6

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


Если я вас правильно понимаю, это объяснит, почему модель будет предсказывать «большие» значения, а не то, почему модель будет состоять из «больших» коэффициентов.
Дэвид Маркс

Нет, это неправильно! По крайней мере, некоторые из отдельных оценщиков коэффициентов будут иметь большие отклонения, поэтому оценочные значения этих коэффициентов будут иметь тенденцию быть большими. (разумеется, даже при переоснащении некоторые коэффициенты могут быть стабильными, но не все). Кроме того, чтобы сохранить свойство непредвзятости прогнозирования, будут иметь место большие отрицательные ковариации между независимыми оценщиками коэффициентов.
kjetil b halvorsen

1
Это не полностью отвечает на вопрос, хотя. Если бы это была просто проблема больших отклонений, вы бы получали небольшие оценки так же часто, как и большие (неформально). Проблема заключается в том, что тогда мы предполагаем, что небольшие оценки (относительно их стандартных ошибок) «не важны» и отбрасывают эти переменные из модели. В результате единственные оставшиеся оценки будут большими.
Hong Ooi

0

Дэвид. Я думаю, что проблема с вашим примером в том, что вы не нормализовали свои данные (то есть X ^ 10 >> X.

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

так что в основном это инкапсуляция того, что небольшие изменения должны иметь небольшие эффекты (и, конечно, мы возвращаемся к вопросу о том, насколько малы изменения - нормализации ваших данных и т. д.). Но главное в более высоких измерениях, где корреляция вступает в игру: представьте, что у вас есть две переменные x, y, которые сильно коррелированы (обе нормированы на дисперсию 1), тогда их различие будет маленьким = "шум" - поэтому наказание за большие веса будет не позволяйте вам приспособиться к этому шуму (и получите очень большие почти отменяющие коэффициенты для y и x).

Пример остается верным для любого линейного отношения (y = mx)

искать регрессию хребта


1
Дэвид, почему бы вам не повторить пример, нормализуя все переменные x, x ^ 2, ..., x ^ n к среднему значению и стандартному отклонению 1, а затем посмотреть результаты, которые вы получите ... не удивительно, что ваш коэффициенты малы, когда ваши входные переменные велики
seanv507

0

демоверсия

Это изображение из моей заметки о курсе Эндрю Нг, пожалуйста, дайте мне знать, если у вас есть вопрос


1
Не могли бы вы объяснить, почему вы думаете, что эта заметка о регуляризации нейронной сети отвечает на вопрос о размерах коэффициентов и переоснащении?
whuber

все 3 связаны с переоснащением - это именно то, что регуляризация пытается предотвратить, и она пытается штрафовать высокий коэффициент по вышеуказанной причине
Pradi KL
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.