(왜) 과적 합 된 모델이 큰 계수를 갖는 경향이 있습니까?


33

변수에 대한 계수가 클수록 모델이 해당 차원에서 "스윙"할 수있는 능력이 커지고 잡음에 대한 기회가 증가한다고 생각합니다. 모델의 분산과 큰 계수 사이의 관계에 대한 합리적인 감각을 가지고 있다고 생각하지만 과적 합 모델에서 발생 하는지에 대한 감각은 없습니다 . 이들이 과적 합의 증상이며 계수 수축이 모형의 분산을 줄이는 기술이라고 말하는 것이 잘못입니까? 계수 축소를 통한 정규화는 큰 계수가 과적 합 모델의 결과라는 원칙에 따라 작동하는 것 같지만 아마도 기술의 동기를 잘못 해석하고있을 것입니다.

큰 계수가 일반적으로 과적 합의 증상이라는 직관은 다음 예에서 비롯됩니다.

우리 가 모두 x 축에있는 점 을 맞추고 싶다고 가정 해 봅시다 . 인 솔루션을 갖는 다항식을 쉽게 구성 할 수 있습니다 . 우리의 포인트가 x = 1,2,3,4 라고 가정 해 봅시다 . 이 기법은 모든 계수> = 10을 제공합니다 (한 계수 제외). 더 많은 점을 추가하면 (다항식의 정도가 높아짐에 따라)이 계수의 크기가 빠르게 증가합니다.에프(엑스)=(엑스엑스1)(엑스엑스2)....(엑스엑스1)(엑스엑스)엑스=1,2,,4

이 예제는 현재 모델 계수의 크기를 생성 된 모델의 "복잡성"과 연결하는 방법이지만이 사례는 실제로 실제 동작을 나타 내기 위해 멸균해야한다는 것이 우려됩니다. 고의적으로 과적 합 모델 (2 차 샘플링 모델에서 생성 된 데이터에 10도 다항식 OLS 적합)을 구축했으며 내 모델에서 대부분 작은 계수를 보는 것에 놀랐습니다.

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

이 예에서 제외 된 것은 계수의 3 분의 2가 1보다 작고 다른 계수에 비해 비정상적으로 큰 3 개의 계수가 있다는 것입니다 (이 계수와 관련된 변수도 가장 밀접하게 적용됩니다) 실제 샘플링 모델과 관련됨).

(L2) 정규화는 모형의 분산을 줄이는 메커니즘 일뿐 아니라 미래 데이터를 더 잘 맞추기 위해 곡선을 "부드럽게"하거나 과도하게 모형화 된 모형이 큰 계수를 나타내는 경향이 있다는 관측에서 도출 된 휴리스틱을 활용합니까? 과적 합 모델이 큰 계수를 나타내는 경향이 있다는 정확한 진술입니까? 그렇다면 누구나이 현상의 배후에있는 메커니즘을 조금 설명하고 /하거나 일부 문헌으로 안내 할 수 있습니까?


4
"큰"계수 란 정확히 무엇을 의미합니까? 결국, 종속 변수를 표현하는 단위 (예 : 파섹에서 펨토 미터로) 만 변경하면 계수의 값을 임의로 크거나 작게 만들 수 있습니다.
whuber

1
나는 그것에 대한 좋은 대답이 없습니다. 내 이해는 "큰"계수를 공격하는 것이 L2 정규화의 동기를 유발하는 휴리스틱이라는 점이었습니다. 그러나 계수의 크기를 합성 적으로 증가 시키면 이제 모델의 다른 크기를 보상하기 위해 정규화 상수를 변경해야합니다. 그렇지 않습니까? 나는 여기에 "큰"이라는 개념이 아주 잘 묘사되지 않더라도 당신이 그것을 만드는 것처럼 모호하다고 생각하지 않습니다.
David Marx

@DavidMarx : L2 정규화가 "큰"계수를 따른다고 생각하지 않습니까? 오히려 둘 사이의 타협점을 찾는 대신 선택하도록 강요하는 의미에서 아마도 비교적 크지 않은 계수를 0으로 밀어내는 경향이 있습니다.
Wayne

@ 웨인 아, 나는 그것을 뒤로했다 생각합니다. 더 큰 계수를 축소하거나 모든 계수를 비례 적으로 축소한다고 생각했습니다. L2- 규정 화가 더 작은 계수를 가진 변수를 모형 밖으로 밀어 내면 더 의미가 있습니다.
David Marx

1
8 번 편집 한 후에 답변이 내려진 것 같습니다. esh.
Hong Ooi

답변:


15

정규화 맥락에서 "큰"계수는 고정 모형 규격 이 사용 경우 추정치의 크기가 이전보다 클 수 있음을 의미합니다 . 데이터로부터 추정치뿐만 아니라 모델 사양을 얻는 것이 미치는 영향입니다.

단계적 회귀와 같은 절차가 주어진 변수에 대해 무엇을 할 것인지 고려하십시오. 계수의 추정치가 표준 오차에 비해 작 으면 모형에서 제거됩니다. 실제 값이 실제로 작거나 임의 오류 (또는이 둘의 조합) 때문일 수 있습니다. 떨어 뜨리면 더 이상주의를 기울이지 않습니다. 반면, 추정치가 표준 오차에 비해 크면 유지됩니다. 불균형에 주목하십시오. 우리의 최종 모델은 계수 추정치가 작을 때 변수를 거부하지만 추정치가 클 때 변수를 유지합니다. 따라서 우리는 그 가치를 과대 평가할 것입니다.

다시 말해, 과적 합이 의미하는 것은 주어진 예측 변수 집합이 반응에 미치는 영향을 과대 평가하는 것입니다. 그러나 영향을 과장시킬 수있는 유일한 방법은 추정 계수가 너무 큰 경우입니다 (반대로 제외 된 예측 변수의 추정치가 너무 작은 경우).

수행해야 할 것은 변수 선택 절차 (예 :를 통한 단계별 회귀)를 실험에 통합하는 것 step입니다. 그런 다음 다른 임의의 샘플에서 실험을 여러 번 반복하고 추정값을 저장하십시오. 변수 선택을 사용하지 않는 것과 비교할 때 계수 ~ β 10 의 모든 추정치 가 체계적으로 너무 큽니다. 정규화 절차는이 문제를 해결하거나 완화하는 것입니다.ββ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 

ββ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두 번째 실험에서보다 첫 번째 실험에서으로 더 큰 값을 얻은 것 같습니다. ( "맹목적으로"피팅 값). 이것이 당신이 제안한 것과 상반 되는가?
David Marx

또한, 당신과 다른 사람들은 내 예제에서 변수를 표준화해야한다고 제안했습니다. 나는 추론을 보지만 그것을하는 좋은 방법을 모른다. X의 각 거듭 제곱에 대한 열을 포함하도록 샘플 데이터를 향상시키고 해당 값을 표준화해야합니까? 아니면 내가 부르는 모델 공식에서 직접 변수를 표준화 할 수있는 방법이 poly있습니까?
David Marx

? 단계적으로 사용하지 않는 것에 비해 단계적으로 사용하면 절대 편차가 커집니다. 무엇을 요구하는지 잘 모르겠습니다. 표준화와 관련하여, 게시 한대로 수행하면 단계적 접근 방식과 비 단계적 접근 방식을 비교할 필요가 없습니다. 각 변수는 다른 변수보다는 한 치료에서 다른 치료로 비교됩니다.
Hong Ooi

6

세부 사항을 보지 않고 매우 간단한 대답 : 과적 합을 수행 할 때 모수 추정량은 큰 분산을 얻는 경향이 있으며 큰 분산에서는 큰 값이 예상되는 것입니다!


올바르게 이해하면 모델이 "큰"계수로 구성되는 이유가 아니라 왜 "큰"값을 예측하는지 설명합니다.
David Marx

아니, 그건 잘못이야! 개별 계수 추정기 중 적어도 일부는 분산이 크므로 해당 계수의 추정값이 큰 경향이 있습니다. (우리의 경우, 과적 합하더라도 일부 계수는 안정적 일 수 있지만 전부는 아닙니다). 또한, 예측의 편견없는 특성을 유지하기 위해 독립 계수 추정기간에 약간의 음의 공분산이있는 경향이 있습니다.
kjetil b halvorsen

1
그러나 이것은 질문에 완전히 대답하지는 않습니다. 그것이 큰 차이의 문제 일 경우, 당신은 (비공식적으로) 큰 것만 큼 자주 작은 견적을 얻을 것입니다. 문제는 우리가 작은 추정치 (표준 오차와 관련하여)가 중요하지 않다고 가정하고 해당 변수를 모형에서 제거하는 것입니다. 결과적으로 남은 추정치는 큰 것뿐입니다.
Hong Ooi

0

데이비드 귀하의 예에서 문제는 데이터를 정규화하지 않았다는 것입니다 (예 : X ^ 10 >> X).

따라서 david는 더 큰 계수를 더 많이 축소하는 것이 옳습니다 (따라서 L1 정규화로 하나의 큰 계수와 나머지 0을 줄 수있는 동안 많은 작은 계수로 끝날 수 있습니다)

따라서 기본적으로 작은 변경 사항이 작은 영향을 미치 도록 캡슐화하고 있습니다 (물론 우리는 데이터가 정규화되는 등 작은 크기의 문제로 돌아갑니다). 그러나 중요한 것은 더 큰 차원에서 상관 관계가 발생합니다. 두 개의 변수 x, y가 서로 밀접하게 관련되어 있고 (둘 다 분산 1로 정규화 됨) 그 차이가 작은 = "노이즈"가 될 것입니다. 이 잡음에 맞지 않도록하십시오 (y 및 x에 대한 거의 상쇄 계수가 매우 커짐).

이 예제는 여전히 선형 관계를 유지합니다 (y = mx)

능선 회귀를 찾다


1
david 왜 모든 변수 x, x ^ 2, ..., x ^ n을 0 평균 및 표준 편차 1로 정규화하는 예제를 다시 실행하고 결과를 확인하십시오. 입력 변수가 클 때 계수가 작습니다
seanv507

0

과적 합 데모

이 이미지는 Andrew Ng의 DL 과정에 대한 참고 사항입니다. pls는 질문이 있으면 알려주십시오.


1
신경망 정규화에 관한이 노트가 계수 크기와 과적 합에 관한 질문에 왜 대답한다고 생각하십니까?
whuber

과적 합은 모두 정규화가 방지하려고하는 것입니다. 위의 이유로 인해 높은 계수를 페널티하여 시도합니다
Pradi KL
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.