본문으로 바로가기



능선회귀(Ridge regression)에 대하여 2 - λ 와 β 의 관계

category Statistics/Linear models 2017.05.23 23:36
다변량 정규분포의 최대우도추정량(MLE) 유도하기 2

\(\lambda\)와 솔루션 \(\beta\)의 관계

\[ L\left(\beta\right)=\frac{1}{2}\left(y-X\beta\right)^{T}\left(y-X\beta\right)+\frac{\lambda}{2}\left|\left|\beta\right|\right|_{2}^{2} \]

지난 포스팅에서는 위와 같은 능선회귀(Ridge regression)의 손실함수를 최소로 만드는 해를 유도하는 방법에 대하여 알아보았다. 그 결과 우리가 구한 해, \(\hat{\beta}_{Ridge}\),는 아래와 같았다.

\[ \hat{\beta}_{Ridge}=\left(X^{T}X+\lambda I\right)^{-1}X^{T}y \]

지난 포스팅에서 언급하였다시피, 손실함수에서 \(\lambda\)의 역할은 패널티(penalty) 조절의 역할을 한다. 그 이유는 \(\lambda\)의 값이 클수록 \(\beta\)의 크기에 부여되는 패널티가 높아져서 구한 솔루션 \(\hat{\beta}_{Ridge}\)의 유클리디안 놈(Euclidean norm)값이 작아지기 때문이다. 따라서 아래의 그림에서와 같이 능선회귀의 해는 일반회귀의 해와는 살짝 다른 값을 갖게 된다. 이번 포스팅에서는 이것을 좀 더 수학적으로 알아보도록 하자.

사진출처: https://onlinecourses.science.psu.edu/stat857/node/155



Singular Value Decomposition

첫번째로 특이값 분해(Singular Value Decomposition)라고 불리는 행렬의 분해 방법에 대하여 간단히 짚고 넘어가자. 이 방법에 따르면 모든 실수 혹은 복소수로 이루어진 행렬 \(A\in\mathbb{R}^{n\times p}\)를 다음과 같이 행렬의 곱으로 나타낼 수 있는 세 개의 행렬 \(U, \Sigma, V\)가 존재한다.

\[ A=U\Sigma V^{T} \]

여기에서 \(U\)\(n \times n\) 행렬, \(V\)\(p \times p\) 행렬이며, \(\Sigma\)는 총 \(p\)개의 특이값(Singular value)-특이값들은 모두 0이상의 값(non-negative)을 가진다. 즉, \(\sigma_i \geq 0\) for \(i=1,...,d\)-을 대각원소로 갖는 \(n \times p\) 대각행렬이다. 또한, 행렬 \(U\)\(V\)는 직교 행렬들(Orthogonal matrices)로서 \(UU^T=U^TU=I\)\(VV^T=V^TV=I\)를 각각 만족한다.

R사용한 예제를 가지고 생각해보자.

A <- matrix(seq(1,12), nrow = 3, ncol = 4)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

\(3 \times 4\) 행렬 A에 대한 SVD는 R에서 함수 svd()를 이용하여 다음과 같이 쉽게 할 수 있다.

svd(A)
## $d
## [1] 2.546241e+01 1.290662e+00 1.716561e-15
## 
## $u
##            [,1]        [,2]       [,3]
## [1,] -0.5045331 -0.76077568  0.4082483
## [2,] -0.5745157 -0.05714052 -0.8164966
## [3,] -0.6444983  0.64649464  0.4082483
## 
## $v
##            [,1]        [,2]       [,3]
## [1,] -0.1408767  0.82471435 -0.4991558
## [2,] -0.3439463  0.42626394  0.4974744
## [3,] -0.5470159  0.02781353  0.5025186
## [4,] -0.7500855 -0.37063688 -0.5008372

함수 svd()는 위에서 본 \(\Sigma\) 행렬의 대각원소들을 포함하고 있는 d 벡터와 \(U\)\(V\) 행렬을 반환한다. SVD이 잘 작동하는지는 아래의 코드로 확인 할 수 있다.

svd.A <- svd(A)
svd.A$u %*% diag(svd.A$d) %*% t(svd.A$v)
##      [,1] [,2] [,3] [,4]
## [1,]    1    4    7   10
## [2,]    2    5    8   11
## [3,]    3    6    9   12

특이값 분해에 대한 좀 더 자세한 설명은 다음의 링크를 참조하자. 한글로 된 좋은 자료 :D

SVD를 이용하여 \(\hat{\beta}_{Ridge}\) 나타내기

이제 본연의 주제로 돌아와서 우리의 데이터 행렬(data matrix) \(X\) 역시 SVD이 가능하다. 지난 시간에 언급한 능선회귀 가정에서 데이터 행령 \(X\)\(n \times p\) 행렬로 가정하였다. 따라서 SVD에 따라서 \(X\)를 다음과 같이 세 개의 행렬의 곱으로 나타낼 수 있다.

\[ X=U\Sigma V^{T} \]

여기서 \(\Sigma = diag(\sigma_1,...,\sigma_p)\)라고 하자. 이것을 능선회귀의 해에 대입하면 다음과 같다.

\[ \begin{align*} \hat{\beta}_{Ridge} & =\left(X^{T}X+\lambda I\right)^{-1}X^{T}y\\ & =\left(\left(U\Sigma V^{T}\right)^{T}U\Sigma V^{T}+\lambda I\right)^{-1}\left(U\Sigma V^{T}\right)^{T}y\\ & =\left(V\Sigma^{T}U^{T}U\Sigma V^{T}+\lambda I\right)^{-1}V\Sigma^{T}U^{T}y\\ & =\left(V\Sigma^{T}\Sigma V^{T}+\lambda I\right)^{-1}V\Sigma^{T}U^{T}y \end{align*} \] 마지막 등식은 \(U\)가 직교 행렬이기 때문에 성립한다. 자, 이제 주어진 등식을 좀 더 간단히 정리하기 위해 두가지 사실을 짚고 넘어가자. 먼저 \(\Sigma\) 행렬이 대각행렬이기 때문에 \(\Sigma^{T}=\Sigma\)가 성립하고 대각 행렬 끼리의 곱은 대각 원소를 제곱만 시켜주면 좀 더 간략히 나타낼 수 있다. 또한, \(V\)역시 직교 행렬이므로 \(\lambda\)에 곱해져 있는 \(I\) 행렬을 \(V V^T\)로 나타내면 앞의 항과 묶을 수 있으므로, 위의 식은 다음과 같이 간단히 정리할 수 있다.

\[ \begin{align*} \hat{\beta}_{Ridge} & =\left(V\Sigma^{T}\Sigma V^{T}+\lambda I\right)^{-1}V\Sigma^{T}U^{T}y\\ & =\left(V\Sigma^{2}V^{T}+\lambda VV^{T}\right)^{-1}V\Sigma U^{T}y\\ & =\left(V\left(\Sigma^{2}+\lambda I\right)V^{T}\right)^{-1}V\Sigma U^{T}y \end{align*} \] 여기서 \(\Sigma^2 := diag(\sigma_1^2,...,\sigma_p^2)\)를 의미한다.

다음으로 우리가 선형대수학 시간에 배웠던 다음의 행렬의 곱의 역행렬 공식을 떠올려 보자.

\[ \left(ABC\right)^{-1}=C^{-1}B^{-1}A^{-1} \]

따라서, \(V\left(\Sigma^{2}+\lambda I\right)V^{T}\)의 역행렬은 행렬 \(V\)가 직교 행렬인 사실을 이용하여 다음과 같이 나타낼 수 있다.

\[ \left(V\left(\Sigma^{2}+\lambda I\right)V^{T}\right)^{-1}=V\left(\Sigma^{2}+\lambda I\right)^{-1}V^{T} \]

또한 대각 행렬의 역행렬은 대각 원소들을 역수를 취해주므로서 쉽게 구할 수 있으므로, \(\left(\Sigma^{2}+\lambda I\right)^{-1}\) 행렬은

\[ \left(\Sigma^{2}+\lambda I\right)^{-1}=diag\left(\frac{1}{\sigma_{1}^{2}+\lambda},...,\frac{1}{\sigma_{p}^{2}+\lambda}\right) \] 가 된다. 이 사실을 이용하여 위의 해를 좀 더 간단히 나타내보자.

\[ \begin{align*} \hat{\beta}_{Ridge} & =\left(V\left(\Sigma^{2}+\lambda I\right)V^{T}\right)^{-1}V\Sigma U^{T}y\\ & =V\left(\Sigma^{2}+\lambda I\right)^{-1}V^{T}V\Sigma U^{T}y\\ & =V\left(\Sigma^{2}+\lambda I\right)^{-1}\Sigma U^{T}y\\ & =V\Sigma^{*}U^{T}y \end{align*} \]

여기서 \(\Sigma^*\)\[ \begin{align*} \Sigma^{*} & :=\left(\Sigma^{2}+\lambda I\right)^{-1}\Sigma\\ & =diag\left(\frac{\sigma_{1}}{\sigma_{1}^{2}+\lambda},...,\frac{\sigma_{p}}{\sigma_{p}^{2}+\lambda}\right) \end{align*} \] 를 나타낸다. 정리해보면 행렬의 특이값분해를 이용하여 우리가 구한 능선회귀의 해를 위와 같이 간단하게 나타낼 수 있다. 이제 이 사실을 이용하여 패널티 조절 기능을 하는 \(\lambda\)가 능선 회귀의 해 \(\hat{\beta}_{Ridge}\)의 크기에 어떤 영향을 미치는지 알아보도록 하자.

\(\lambda\)\(\hat{\beta}_{Ridge}\)의 크기

저번 시간에 이야기 하였던 것처럼 능선회귀에서는 해 벡터의 크기를 유클리디안 놈을 이용하여 측정하였다. 즉, 벡터 \(\beta = (\beta_1, ..., \beta_p)\)의 유클리디안 놈은 다음과 같이 계산된다.

\[ \left|\left|\beta\right|\right|_{2}:=\sqrt{\beta_{1}^{2}+\cdots+\beta_{p}^{2}}=\sqrt{\beta^{T}\beta} \]

앞에서 우리는 능선회귀의 해를 간단하게 나타내는 것에 대하여 알아보았다. 앞에서 공부한 내용을 이용하여 \(\hat{\beta}_{Ridge}\)의 크기가 \(\lambda\)와 어떠한 관계가 있는지 알아보자. 먼저, 놈(norm)의 정의에 따라서 벡터의 크기는 항상 0보다 크거나 같다.

\[ 0\leq\left|\left|\hat{\beta}_{Ridge}\right|\right|_{2}=\left|\left|V\Sigma^{*}U^{T}y\right|\right|_{2} \]

능선회귀의 해를 앞에서 알아본 것과 같이 \(y\) 벡터와 행렬의 곱으로 생각할 수 있다. 행렬과 벡터의 곱에 대한 유클리디안 놈의 상한값을 다음과 같이 구할 수 있다.

\[ \begin{align*} \left|\left|\hat{\beta}_{Ridge}\right|\right|_{2} & =\left|\left|V\Sigma^{*}U^{T}y\right|\right|_{2}\\ & \leq\left|\left|V\Sigma^{*}U^{T}\right|\right|_{F}\left|\left|y\right|\right|_{2}\\ & =\sqrt{tr\left(\Sigma^{*}\right)}\left|\left|y\right|\right|_{2}\\ & =\sqrt{\sum_{i=1}^{p}\left(\frac{\sigma_{i}}{\sigma_{i}^{2}+\lambda}\right)^{2}}\left|\left|y\right|\right|_{2} \end{align*} \]

위 식에서 \(\left|\left|\cdot\right|\right|_{F}\)는 Frobenious norm을 의미하며 이것에 대한 자세한 설명은 위키피디아를 참고 하도록 하자. 위 부등식의 직관적인 이해를 덧붙이자면 어떤 벡터의 크기를 재는데에 있어서 크기에 결정적으로 영향을 미치는 것은 주어진 벡터를 회전하는 변환보다는 실제로 벡터를 늘리는 변환일 것이다. 그런 측면에서 행렬 \(U\)\(V\)는 직교 행렬로서 주어진 벡터를 이리저리 회전시키는 회전 변환을 의미한다. 따라서 \(\left|\left|\hat{\beta}_{Ridge}\right|\right|_{2}\)의 값을 결정하는 것은 \(\Sigma^*\)에 의하여 결정되는 것이다. 지난 시간과 이번 시간에 배운 내용을 종합해서 생각해보면 우리는 \(\left|\left|\hat{\beta}_{Ridge}\right|\right|_{2}\)의 상한값과 하한값을 다음과 같이 구할 수 있다.

\[ 0\leq\left|\left|\hat{\beta}_{Ridge}\right|\right|_{2}\leq min\left(\sqrt{\sum_{i=1}^{p}\left(\frac{\sigma_{i}}{\sigma_{i}^{2}+\lambda}\right)^{2}}\left|\left|y\right|\right|_{2},\left|\left|\hat{\beta}_{OLS}\right|\right|_{2}\right) \]

위의 식을 통하여 우리는 패널티 조절 모수인 \(\lambda\)와 능선회귀의 해의 크기가 반비례한다는 것을 알 수 있다. 다음 시간에는 우리가 구한 능선회귀의 해를 R에서는 어떻게 구하는지에 대하여 알아보도록 하겠다.

References

[1] Frobenius matrix norm inequality 링크

[2] 특이값분해에 대한 자료 링크

[3] Matrix norm inequality에 대한 자료 링크


SHARE TO



티스토리 툴바