17.2 능형회귀 (Ridge regression)
중선형회귀모형에서 행렬 X와 y가 표준화되었다고 하고 X의 열의 수를 p라고 한다면 X′X와 X′y의 각각 상관계수행렬이 될 것이다.
X′XX′y=⎣⎢⎡x11x21⋯⋯x1nx2n⎦⎥⎤⋅⎣⎢⎢⎢⎢⎢⎡x11⋮x1nx21⋮x2n⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎡∑x1i2∑x2ix1i∑x1ix2i∑x2i2⎦⎥⎤=⎣⎢⎡1r12r121⎦⎥⎤=⎣⎢⎡x11x21⋯⋯x1nx2n⎦⎥⎤⋅⎣⎢⎢⎢⎢⎢⎡y1⋮yn⎦⎥⎥⎥⎥⎥⎤=⎣⎢⎡∑x1iyi∑x2iyi⎦⎥⎤=⎣⎢⎡r1yr2y⎦⎥⎤
이 때 최소제곱추정량 b=(X′X)−1X′y와 β간의 거리의 제곱을
L=(b−β)′(b−β)
으로 정의하고 λi를 행렬 X′X의 고유값이라 한다면 L2의 기대값은 (총)편균제곱오차 (MSE(b))라고도 부르며 다음과 같다.
E(L2)=MSE(b)=E[(b−β)′(b−β)]=tr{E[(b−β)′(b−β)]}(∵tr(a)=a; scalar)=E{tr[(b−β)(b−β)′]}(p×p ∵ outer product)=i=1∑pVar(bi)=σ2i=1∑pλi−1((Var(bi)=σ2(X′X)−1=σ2QΛ−1Q′=σ2Λ−1)
이 때 Λ=diag(λ1,…,λp)) Q 는 고유벡터이다. 따라서 독립변수들간에 완전에 가까운 다중공선성이 존재하면 λi중에서 거의 0에 가까운 값이 있으며 b는 β로부터 대단히 멀리 떨어져 있을 가능성이 크며 b는 β의 좋은 추정량이라고 볼 수 없다.
17.2.0 능형 회귀 (Ridge regression)
위의 단점을 보완하기 위하여 다음과 같은 추정을 고안하였으며 이를 능형추정량 (ridge estimator)이라고 한다.
b(k)=(X′X+kI)−1X′y,k>0
여기서 k는 양의 상수로서 보통 0<k<1범위 내에 있다. b(k)의 기댓값과 분산은 다음과 같다.
E[b(k)]=(X′X+kI)−1X′E(y)=(X′X+kI)−1X′Xβ=β
가 되어, 편향(biased) 추정량이다.
Var[b(k)]=(X′X+kI)−1X′X(X′X+kI)−1σ2
잔차제곱합 (SSE(k))은 다음과 같으므로 b의 잔차제곱합(SSE) 보다 크다.
[y−Xb(k)]′[y−Xb(k)](∵(y=[y−X{b+(b(k)−b)}]′[y−X{b+(b(k)−b)}]=[(y−Xb)+{X(b(k)−b)}]′[(y−Xb)+{X(b(k)−b)}]=(y−Xb)′(y−Xb)+[b(k)−b]′X′X[b(k)−b]−Xb)′(X(b(k)−b))+(X(b(k)−b))′(y−Xb)=0)
마지막 식이 0이 되는 이유는 y−Xb잔차 벡터로 회귀 계수 추정값의 변화에 직교(orthogonal) 한다는 성질을 가지기 때문입니다. 즉, 회귀 계수 b(k)와 b(k)−b는 잔차 벡터 y−Xb와 직교하므로 두 항의 내적 결과는 0이 됩니다.
능형추정량 b(k)와 β간의 거리의 제곱을 L2(k)이라 정의하고, 그 기대값은 (총)평균제곱오차 (MSE(b(k)))라고도 부르며 다음과 같다.
E(L2(k))=MSE(b(k))=E[(b(k)−β)′(b(k)−β)]=E{[b(k)−E(b(k))]′[b(k)−E(b(k))]}+[E(b(k))−β]′[E(b(k))−β](∵MSE=Var(y^)+(E(y^−y))2)=σ2i=1∑pλi(λi+k)−2+k2β(X′X+kI)−2β
이고 첫번째 항은 b(k)의 총분산이며 둘째 항은 편향의 제곱에 해당된다. 이제 E[L2(k)]을 E(L2)과 비교하였을 때
E[L2(k)]<E(L2)
이 성립되는 k>0의 값이 항상 존재함을 증명함으로써 능형추정량이 최소제곱추정량보다 거리의 제곱이라는 관점에서 볼 때 더 우수할 수 있음을 입증하였다. 일반적으로 k가 대단히 작은 값에서 총분산은 급격히 감소하고, 편향의(bias) 제곱은 서서히 증가하기 때문에 E[L2(k)]가 E(L2)보다 작게되는 k>0의 값이 존재한다. 그러나 k가 너무 커지면 편의의 제곱이 급격히 증가하여 E[L2(k)]>E(L2)이 되게 될것이다.

참고로 머신러닝분야에서 릿지 회귀를
SSE(L2)=(y−Xb)′(y−Xb)+{b(k)−b}′X′X{b(k)−b}=∑(y−y^)2+λ∣∣w∣∣2(∣∣w∣∣2=∑b2)
으로 표기한다. 라소 회귀는 제곱을 절대값으로 변환한 식이다.
17.2.1 능형추정량 성질
행렬 X′X의 고유값들의 행렬을 Λ라고 하고 고유벡터들을 열로 하는 행렬을 P라고 하자. 즉,
Λ=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡λ10⋮00λ2⋮0……⋱…00⋮λn⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤P=[p1,p2,⋯,pp]
이며
(X′X−λiI)pi=0,i=1,2,…,p
를 만족하고 P′P=PP′=I가 되며 또한
X′X=PΛP
성립한다. 선형모형을 Z=XP, α=P′β로 변환시키면
y=Xβ+ϵ=XPP′β+ϵ=Zα+ϵ,ϵ∼N(0,Iσ2)
으로 표현된다. 이 때 α의 최소제곱추정량은
α^=(Z′Z)−1Z′y=Λ−1Z′y(∵Z′Z=P′X′XP=Λ)
이며, 적합된 모형 y^=Zα^의 잔차제곱합은
SSE(α^)=(y−Zα^)′(y−Zα^)=y′y−α^Z′y
이다. α^의 분산과 분산-공분산 행렬은 다음과 같다.
Var(α^)=Var(Λ−1Z′y)=Λ−1Z′yVar(y)ZΛ−1=σ2Λ−1
앞에서 정의한 바와 같이 α의 능형추정량이
α^(k)=(Z′Z+kI)−1Z′y=(Λ+kI)−1Z′y=(Λ+kI)−1Λα^
이므로, α^(k)의 분산-공분산행렬은
Var[α^(k)]=Var[(Λ+kI)−1Z′y]=(Λ+kI)−1Z′⋅Var[y]⋅Z(Λ+kI)−1=σ2Λ(Λ+kI)−2
로서 대각 행렬이 되며 α^(k)가 갖는 편향의 크기는
E[α^(k)−α]=[(Λ+kI)−1Λ−I]α
이다. 따라서, 총평균제곱오차는
E[L2(k)]=E[(α^(k)−α)′(α^(k)−α)]=tr{Var[α^(k)]}+([(Λ+kI)−1Λ−I]α)2=σ2tr[Λ(Λ+kI)−2]+α′[(Λ+kI)−1Λ−I]′[(Λ+kI)−1Λ−I]α=σ2i=1∑p(λi+k)2λi+i=1∑p(λi+k)2k2αi2
이 됨을 증명할 수 있다. 여기서 α′=(α1,α2,…,αn)으로 나타내 준다.
E[L2(k)]를 k로 미분하면
dkdE[L2(k)]=−2σ2i=1∑p(λi+k)3λi+2ki=1∑p(λi+k)3λiαi2
이 되는데, k=0에서 E[L2(0)]=E[L2]이며, L2(k)는 k의 연속함수이고 k→0+로 접근할 때에
k→0+limdkdE[L2(k)]=−2σ2i=1∑pλi21<0
으로 음이므로 E[L2(k)]<E[L2]인 k의 값이 존재한다.
E[L2(k)]=σ2i=1∑p(λi+k)2λi+i=1∑p(λi+k)2k2αi2
을 최소로 하는 k의 값을 간단한 공식으로 구할 수는 없으나, 만약 X′X=I라면 E[L2(k)]가
k=α′αpσ2
일 때에 최소가 된다. 만약 능형추정량의 정의를 보다 더 일반적으로
b=(X′X+K)−1X′y,K=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡k10⋮00k2⋮k2…0…0⋱⋮…kp⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
으로 정의하여, p개의 다른 k 값을 허용한다면 α^(K)를
α^(K)=(Λ+K)−1Λα^
으로 정의할 수 있다. 이 경우 총평균제곱오차는
E[L2(K)]=σ2i=1∑p(λi+ki)2λi+i=1∑p(λi+ki)2ki2αi2
이 되며,
ki=αi2σ2
에서 최소가 됨을 쉽게 보일 수 있다.
17.2.2 k 추정
방법 1
능형추정값 b(k)=(X′X+kI)X′y을 k를 0에서 1까지 증가하였을 때 각각의
b′(k)=(b1(k),b2(k),…,bp(k))
가 변화하는 것을 그림으로 도시하고 bi(k)들의 궤적을 능형 트레이스(trace)라 부르고, 이 그림으로부터 bi(k)값들이 급격히 변화하지 않고 안정되어 가는 k의 값을 선택해 주어야 한다. 이렇게 선택된 k의 값을 능형추정값 b(k)=(X′X+kI)X′y에 대입하면 다중공선성이 거의 제거된 상태가 되며, 능형회귀에서 가장 많이 사용되는 방법이다. 그러나 이 방법은 많은 계산이 필요하고 주관에 따라 k의 값이 약간씩 다를 수 있다는 점이다.
방법 2
b(k)=(X′X+kI)X′y의 관계식으로부터 k의 추정을 다음과 같이 한다.
k=αi^′αi^pσ^2
즉, σ2 대신 불편추정값 σ^2을 구하여 대입시키고 α 대신에
α^=P′b=P′(X′X)−1X′y
를 대입하여 k의 값을 구하는 것이다. 이처럼 한 번에 k의 값을 구하기도 하고, 반복적인 방법을 사용하여 다음과 같이 구하기도 한다.
k=αi^′αi^pσ^2
에 의하여 얻어진 k를 k1이라 하고 이 값으로
b(k1)=(X′X+k1I)X′y
을 구한 후에
α^(k1)=P′b(k1)
을 구한다. 다음으로 이 α^(k1)을 사용하여 k의 두번째 값
k2=αi^(k1)′αi^(k1)pσ^2
을 구한 후
b(k2)=(X′X+k2I)X′yα^(k2)=P′b(k2)
을 얻고, 다음의 k의 값
k3=αi^(k2)′αi^(k2)pσ^2
을 구한다. 이와 같은 방법으로 반복적으로 하여 k1,k2,k3,…,kq를 구하여 가는 과정에서 만약 kq−1의 값과 kq의 값에 유의한 차이가 없으면 kq−1의 값을 k의 값으로 정하여준다
[참고문헌]