리지 회귀란?
정의
$$ \begin{bmatrix} y_{1} \\ y_{2} \\ \vdots \\ y_{n} \end{bmatrix} = \begin{bmatrix} 1 & x_{11} & \cdots & x_{p1} \\ 1 & x_{12} & \cdots & x_{p2} \\ \vdots & \vdots & \ddots & \vdots \\ 1 & x_{1n} & \cdots & x_{pn} \end{bmatrix} \begin{bmatrix} \beta_{0} \\ \beta_{1} \\ \vdots \\ \beta_{p} \end{bmatrix} + \begin{bmatrix} \varepsilon_{1} \\ \varepsilon_{2} \\ \vdots \\ \varepsilon_{n} \end{bmatrix} $$ $n$ 개의 데이터가 주어져 있고 $p < n$ 이라고 할 때 선형다중회귀모델을 계획행렬로 나타내면 위와 같고, 간단히 $Y = X \beta + \varepsilon$ 라 나타내자. 이 때 다음의 최적화 문제를 푸는 것을 리지 회귀ridge regression라고 한다. $$ \argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} \right) $$ 여기서 $\lambda \ge 0$ 을 튜닝 파라미터tuning Parameter라 한다.
- $\left\| \cdot \right\|_{2}$ 은 유클리드 놈이다.
설명
리지 회귀는 능형 회귀라고 순화되기도 하는 것 같은데, 기본적으로는 영단어가 별로 길지 않아 그대로 읽는 경우가 많다. 읽을 때의 음가는 [릳지]가 아니라 리지[rɪdʒ]인데, Edge를 [엗지]가 아닌 에지[edʒ]라 읽는 것과 비슷하다. Ridge는 산등성이라는 뜻으로, 능형이라는 것도 ‘산등성이에서 산등성이로 이어지는 선’을 의미하는 능선에서 나온 말이다. 이는 기하적으로 보았을 때, 보통의 다중회귀분석에서 $\beta$ 의 목적 함수인 RSS가 이루는 초곡면hyper surface에서 $\lambda \left\| \beta \right\|_{2}$ 때문에 능선이 생겨나기 때문이다.
한편 머신러닝에서는 $\lambda \left\| \beta \right\|_{2}$ 를 추가하는 식의 레귤러라이제이션regularization을 티호노프 정칙화tikhonov -라고도 한다1. 이 항을 RSS와 함께 최소화한다는 것은 그냥 회귀분석만 하는 게 아니라 $\beta$ 의 크기, 즉 회귀계수의 크기 또한 가능한 한 작게 만들겠다는 것이고 회귀계수의 크기가 줄어든다는 것은 $0$ 에 가까운 회귀계수가 많아진다는 것이다.
실제의 역사가 어떻든, 결과의 해석이 무엇이든, 본질적인 결점이 있든 말든 리지 회귀를 스파스 회귀의 일종으로 볼 수 있는 것은 부정하기 어렵다.
왜 쓰는가?
스파스 회귀 문서를 먼저 읽고 보면 더 좋다:
- 통계학의 관점: 해석이 간단한 모델을 찾기 위해서다. 기본적으로 회귀계수의 크기는 데이터의 스케일에 비해 충분히 크지 않으면 통계적으로 유의하지 않은 것으로 보았다. 다시 말해, 꼭 $0$ 은 아니라도 거의 $0$ 이라면 데이터를 설명하기 위해 필요한 건 아닐 수 있다는 것이다. 이러한 해석이 리지 회귀에서도 정확히 같지는 않을 수 있겠지만, 결국 하고자 하는 건 ‘크기가 작은 회귀계수’들을 찾아내고 처리하는 것이다.
- 머신러닝의 관점: 오버피팅overfitting을 막기 위해서다. 주어진 데이터를 잘 설명하기 위해 아주 복잡한 항들을 추가하든 추가 데이터를 확보하든 해서 정말 특수한 경우까지 다 커버하는 모델을 만들 수 있을지도 모르겠지만, 이렇게 꼼꼼하게 맞추다보면 트레이닝 데이터에서만 뛰어나고 실전적인 테스트에서는 형편없을 수 있다. 그렇게 수없이 많은 변수에 대해서 자잘자잘하게 회귀계수를 찾는 건 오버피팅의 위험을 증대시키므로, 데이터를 설명하는 힘을 떨어뜨리는 페널티를 짊어지고서라도 막으려는 것이다.
이는 관점의 차이일 뿐, 잘 읽어보면 같은 말이다.
튜닝 파라미터 $\lambda$
정의에서 소개된 튜닝 파라미터 $\lambda$ 는 크면 클수록 페널티penalty $\left\| \lambda \right\|$ 가 강해지는데, 이게 너무 작으면 그냥 회귀분석과 다를 바가 없고 너무 크면 데이터를 설명하든 못하든 그냥 $\beta = \mathbf{0}$ 가 최선의 선택이 되어버린다. 극단적이고 직관적인 예시로써, 데이터에서 나오는 값들의 스케일이 0~10 정도인데도 페널티에 너무 큰 가중치 $\lambda = 10^{6}$ 를 주면 $\left\| \beta \right\|$ 를 작게 만드는 것에 정신이 팔려서 원래 해야하는 일―데이터를 잘 설명하는 모델을 세우는 걸 전혀 못하게 된다. 요지는 적절한 $\lambda$ 를 선택해야한다는 것인데, 수식만 봤을 때 $\lambda$ 가 크고 작은 것 자체로는 딱히 좋고 나쁨이 없다.
따라서 주어진 데이터에 대한 특별한 직관이나 기준이 없다면 그냥 $\lambda$ 를 바꿔가며 목적함수가 최소가 되는 걸 선택하는 것도 한 방법이다. 위의 그림은 어떤 분석에서 $\lambda$ 를 바꿔가며 교차검증을 거친 후의 에러를 $\lambda$ 에 대한 함숫값으로 본 그래프를 그린 것이다.2 이 그래프는 $5 \times 10^{-1}$ 부근에서 최소값을 가지는 것을 수직 점선으로 표현해두었고, 별다른 이유가 없다면 $\lambda$ 는 해당 값을 사용하는 것이 타당하다.
라쏘 회귀와의 차이점
역사적으로 리지ridge는 1970년 편의-분산 트레이드 오프 관계에서 불편성을 어느정도 희생해서 약간의 편의가 생기더라도 모수의 추정에 대한 효율성을 증대하는 방법으로써 소개되었고3, 라쏘lASSO는 1986년 지구물리학geophysics에서 처음 등장했다가 1996년 다시 소개되면서 라쏘라는 이름이 지어졌다고 한다.4
- 리지 회귀의 목적함수: $$\argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} \right)$$
- 라쏘 회귀의 목적함수: $$\argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{1} \right)$$
보다시피 리지 회귀와 라쏘 회귀의 목적 함수는 무척 닮아 있어서 이래저래 많이 엮이지만, 까놓고 말해서 둘이 닮은 것은 목적함수의 형식적인 모습 뿐이며 이들의 장단점을 따지고 있는 것부터가 너무 단순한 관점일 수 있다. 흔히 리지와 라쏘의 차이점은 패널티 텀이 $l_{1}$ 이냐 $l_{2}$ 냐, 미분가능해서 그 최적해가 클로즈드 폼closed form으로 간단하게 나타나냐 아니냐, 실제로 계수를 $0$ 까지 줄일 수 있냐 없냐 등등으로 많이들 설명한다. 거기에 좀 더 꼼꼼하면 파이썬 예제 코드가 포함되고 경험적으로는 보통 뭐가 우수하다, 어떤 경우에선 다른 게 더 나을 수 있다는 언급이 추가되는 식이다.
… 근데 그런 설명들은 각종 책, 위키피디아, 블로그 등에 차고 넘치게 널려있다. 이렇게 잘 알려진 것들을 깔끔하게 정리해놓은 글들은 구글에 ‘Ridge vs LASSO’라고 검색하면 쉽게 찾아볼 수 있고, 이 포스트에서 우리는 그들보다 조금만, 아주 조금만 더 깊게 들어가보려 한다.
- 이하의 내용은 리지 회귀의 입장에서 라쏘와 어떻게 다른지를 설명한다. 라쏘의 입장에서 리지 회귀를 어떻게 볼지는 해당 포스트에서 확인하자.
물론 주어진 데이터를 놓고 ‘어느쪽이 더 좋은 퍼포먼스를 내는가’를 비교한다면 보통 리지보다는 라쏘가 원래 의도에 가깝게, 즉 실제로 $\beta_{k}$ 를 $0$ 으로 만드는 식으로 작동하는 것은 사실이다. 그러나 여기서 끝내는 건 이들의 관계를 ‘최적해를 직접 구하기 쉬운 리지 회귀에서, 몇가지 단점을 극복해서 라쏘 회귀로 발전’한 것으로 보는 시각이 강하다. 이러한 단순비교의 문제점은 큰 맥락에서 봤을 때 그 사실이 그다지 중요하지 않다는 건데, 그 비교가 아주 틀렸다는 뜻은 아니지만 딱히 큰 의미도 없다.
리지 회귀는 목적함수가 미분가능하고 별다른 추가 조건 없이도 최적해 $\hat{\beta}$ 가 구체적인 클로즈드 폼 $$ \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y $$ 으로 주어져 있다. 여기서 우리는 근본적으로 보통 사용되는 다중회귀분석의 $\hat{\beta} = \left( X^{T} X \right)^{-1} X^{T} Y$ 과 거의 같은 정도의 복잡함을 가지고 있음을 알 수 있고, 이 극단적인 단순함은 그 자체로 리지 회귀의 장점이다. 이는 달리 말해 최소제곱법을 기반으로 한 거의 모든 응용에서 즉시 채택할 수 있을 정도로 유연하며, 새로운 메소드의 연구나 개발에 있어서 라쏘보다 훨씬 높은 우선순위를 가진다는 것이다. 정확히 $$ \argmin_{\beta} \left( \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{?} \right) $$ 꼴의 문제에서나 리지와 라쏘의 장단점을 살펴볼만하지, 각자를 기반으로 해서 더 복잡하고 어려운 메소드로 갔을 때는 리지 회귀의 확장성이 너무 압도적이라서 라쏘 회귀와 비교 자체가 되지 않는다. 분석에 사용하는 ‘기법’이 아닌 새로운 지식을 만들어내야하는 ‘연구’의 관점에서 보면 근본부터가 다른 것이다.
이제 구체적으로 이 좋은 $\hat{\beta}$ 가 어떻게 유도되는지 살펴보자.
공식
최적해 5
$$ L \left( \beta \right) = \left\| Y - X \beta \right\|_{2}^{2} + \lambda \left\| \beta \right\|_{2}^{2} $$ $\lambda$ 가 상수로 주어져 있을 때, 리지 회귀의 목적 함수 $L$ 을 위와 같이 나타내자. 리지 회귀의 최적해 $\hat{\beta} = \argmin_{\beta} L \left( \beta \right)$ 는 다음과 같다. $$ \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y $$ 여기서 $A^{T}$ 는 $A$ 의 전치행렬, $I$ 는 항등행렬, $A^{-1}$ 는 $A$ 의 역행렬이다.
유도
벡터와 행렬의 그래디언트: $$ \frac{ \partial }{ \partial \mathbf{w} }\left( \mathbf{w}^{T}\mathbf{R}\mathbf{w} \right)= \left( \mathbf{R} + \mathbf{R}^{T} \right) \mathbf{w} $$
잔차제곱합의 그래디언트: $$ f \left( \mathbf{s} \right) := \left( \mathbf{y} - X \mathbf{s} \right)^{T} R \left( \mathbf{y} - X \mathbf{s} \right) $$ $\mathbf{s}$ 에 종속되지 않은 벡터 $\mathbf{y} \in \mathbb{R}^{n}$ 과 행렬 $X \in \mathbb{R}^{n \times p}$, $R \in \mathbb{R}^{n \times n}$ 에 대해 다음이 성립한다. $$ {{ \partial f \left( \mathbf{s} \right) } \over { \partial \mathbf{s} }} = - X^{T} \left( R + R^{T} \right) \left( \mathbf{y} - X \mathbf{s} \right) $$
$R = I$ 인 경우에 대해 위 공식들을 적용하면 $$ \begin{align*} {{ \partial } \over { \partial \beta }} L \left( \beta \right) =& {{ \partial } \over { \partial \beta }} \left\| Y - X \beta \right\|_{2}^{2} + {{ \partial } \over { \partial \beta }} \lambda \left\| \beta \right\|_{2}^{2} \\ =& {{ \partial } \over { \partial \beta }} \left( Y - X \beta \right)^{T} \left( Y - X \beta \right) + \lambda {{ \partial } \over { \partial \beta }} \beta^{T} \beta \\ =& - X^{T} \left( I + I^{T} \right) \left( Y - X \beta \right) + \lambda \left( I + I^{T} \right) \beta \\ =& - 2 X^{T} \left( Y - X \beta \right) + 2 \lambda \beta \\ =& - 2 X^{T} Y + 2 X^{T} X \beta + 2 \lambda \beta \end{align*} $$ 이고 $\beta = \hat{\beta}$ 는 ${{ \partial } \over { \partial \beta }} L = 0$ 을 만족시켜야 하므로, 정리하면 다음을 얻는다. $$ \begin{align*} & X^{T} X \hat{\beta} + \lambda \hat{\beta} = X^{T} Y \\ \implies & \left( X^{T} X + \lambda I \right) \hat{\beta} = X^{T} Y \\ \implies & \hat{\beta} = \left( X^{T} X + \lambda I \right)^{-1} X^{T} Y \end{align*} $$
■
같이보기
https://cims.nyu.edu/~cfgranda/pages/OBDA_spring16/material/sparse_regression.pdf ↩︎
James. (2013). An Introduction to Statistical Learning with Applications in R: p228. ↩︎
https://stats.stackexchange.com/questions/69205/how-to-derive-the-ridge-regression-solution ↩︎