}

ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ML] 릿지Ridge, 라쏘LASSO를 배울 때 나오는 그래프는 뭘까
    Data Science/데이터 분석, ML 2022. 5. 2. 23:48
    반응형

     

     


    1. 들어가는 글

    이번에는 릿지Ridge와 라쏘LASSO에서 꼭 마주하게 되는 한 그래프를 다루려고 합니다.

    릿지, 라쏘에 대해서는 나중에 자세히 다루려고 해요

     

    릿지나 라쏘는 몇 가지 좋은 성능이 있어서 많이 사용됩니다.

    아이디어도 아주 간단한 편이에요. 선형회귀를 하되, 제약식을 두고 한다.

    OLS를 배웠다면 릿지나 라쏘를 이해하는 건 어렵지는 않습니다.

    물론 수식으로 써두고 보면 이해하기 어려워 보이긴 하지만요.

     

    다만 릿지나 라쏘 그 자체보다는, 

    교과서에 나오는 등고선 그래프가 조금 어렵게 느껴지기도 합니다.

    대체 정체가 뭘까요?

     



    2. 등고선 그래프

    책마다 다르지만 릿지와 라쏘를 다루거나 L1, L2 정규화를 다루는 챕터에서 마주치는 그래프가 있습니다.

    ISLR(An Introduction to  Statistical  Learning with Application in R)의 그림을 예시로 가져와볼게요.

    ISRL Chapter6. Linear Model Selection and Regularization p.222

    왼쪽은 라쏘, 오른쪽은 릿지를 말합니다.

    그림부터 찬찬히 들여다보겠습니다.

     

    양쪽 그림 모두 $\beta_1$축과 $\beta_2$축으로 그려져 있습니다.

    1사분면에는 추정량을 나타내는 $\hat{\beta}$의 점이 있습니다.

    그리고 $\hat{\beta}$를 중심으로 빨간 등고선이 그려져 있네요.

    차이점이라면, 왼쪽(라쏘)은 원점을 중심으로 마름모꼴이 그려져 있고, 오른쪽(릿지)은 이 그러져 있습니다.

     

    책의 다음 챕터를 읽어보면, 라쏘와 릿지의 의미를 시각화했다는 걸 알 수 있습니다.

    마름모꼴 또는 원과 등고선이 만나는 점에서 라쏘, 릿지가 결정된다고 합니다.

     

    그렇다면 저 등고선의 의미는 뭘까요?

    마름모꼴 또는 원과 만나는 선을 하나만 그리면 될텐데 굳이 등고선으로 표현한 이유는 뭘까요?

    그리고 등고선의 가운데에 있는 $\hat{\beta}$의 의미는 뭘까요?

     

    결론부터 말하면 등고선은 $\beta_1$과 $\beta_2$의 값에 따른 RSS(Residual Sum of Square)을 의미합니다.

    그리고 왼쪽의 마름모는 라쏘로서 가질 수 있는 값, 

    오른쪽의 원은 릿지로서 가질 수 있는 값을 말해요.

    즉 초록색의 마름모와 원은 '제약식'을 의미합니다.

     

    이 그래프가 잘 이해가지 않은 이유는, RSS는 원래 3차원 공간에서 봐야하기 때문이에요.

    우리가 지도를 보고 산의 모양을 바로 유추하지 못하는 것과 같은 이유입니다.

    그러므로 RSS를 직접 그려보면 금방 이해하실 수 있습니다.

     

     


     

     

    3. RSS를 파헤쳐보자

     

    (1) 우선 시각화를 편하게 하기 위해 다음과 같은 식을 가정하겠습니다.

    $$ y_i = \beta_1 + x_i \beta_2 + u_i \quad \quad i = 1, 2, \cdots , n \tag{1} $$

     

    (2) 우리가 OLS로 $\beta_1$과 $\beta_2$를 추정했다고 해볼게요.

    그렇다면 우리는 실제 $\beta_1$, $\beta_2$와 구분하기 위해서 모자(hat)를 씌웁니다.

    그리고 이름을 추정량이라고 불러요.

    이 추정량을 우리는 $\hat{\beta_1}, \hat{\beta_2}$이라고 씁니다.

    그러므로 우리가 추정한 결과는 식(2)처럼 쓸 수 있어요.  ※ 식(1)과 다른 점에 유의!

    $$ y_i =\hat{\beta_1} + x_i\hat{\beta_2}+ \hat{u_i} \quad \quad i = 1, 2, \cdots , n \tag{2} $$

     

    잔차는 $\hat{u_i}$입니다. 그러므로 RSS는 식(3)과 같아요.

    $$ RSS = \sum_{i=1}^{n}\hat{u_i}^2 = \sum_{i=1}^{n}(y_i - \hat{\beta_1} - x_i\hat{\beta_2})^2 \tag{3}$$

     

    자 그러면 RSS는 $\beta_1$과 $\beta_2$, 그리고 $y_i$와 $x_i$에 의해 값이 정해지겠네요. 

     

    (3) 우리에게 어떤 데이터셋이 주어졌다고 해보겠습니다.

    예를 들어 2020년의 지역별 인구과 소득의 데이터가 주어졌다고 해볼게요.

    그렇다면 $(x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n)$의 값은 정해졌을 겁니다.

    이제 RSS를 결정하는 건 $\hat{\beta_1}$, $\hat{\beta_2}$에 의해 결정됩니다.

     

    보통은 RSS를 가장 작게 만들어주는 $\hat{\beta_1}$과 $\hat{\beta_2}$를 구할 겁니다.

    그 때의 결과를 벡터로 쓰면 $\hat{\beta} = (\hat{\beta_1}, \hat{\beta_2})'$이라고 씁니다.

    즉 위 그림의 1사분면에 있던 $\hat{\beta}$는 바로 '가장 작은 RSS'를 만들어주는 추정량을 말합니다.

     

    (4) 만약 식(1)의 $\beta_1$, $\beta_2$가 바뀌면?

    이걸 우리는 데이터 생성과정(Data Generating Process; DGP)이 바뀌었다고 합니다.

    즉 $\beta_1$과 $\beta_2$의 값에 따라서 RSS가 바뀔 수도 있을 거에요.

    왜냐면 데이터 $(x_1, y_1), (x_2, y_2), \cdots, (x_n, y_n)$은 변화가 없으니까요.

    그러면 변할 수 있는 건 $u_1, u_2, u_3, \cdots , u_n$만 남았거든요.

    즉 $\beta_1$, $\beta_2$가 바뀌면 $u_i$가 바뀌고, 이에 따라서 RSS도 변화할 겁니다.

     


     

    4. RSS의 그래프를 그려보자!

    그렇다면 가상으로 $\beta_1$과 $\beta_2$를 바꾸어 보겠습니다.

    다양한 $\beta_1$과 $\beta_2$를 넣고 그래프를 그려보면 아래와 같아요.

    한 눈에 잘 보이지는 않네요. 

    대충 보기에 빗살무늬토기처럼 생겼습니다.

    빗살무늬토기를 $\beta_1$, $\beta_2$ 평면으로 투영(Projection)해볼게요.

    그리고 각도를 조금 틀어서 보면 아래 그림처럼 생겼어요.

     

     

    아주 동일하지는 않은데 위에서 본 등고선과 비슷하죠? 

    보다시피 등고선은 똑같은 RSS의 값을 만들어주는 X와 Y를 이어놓은 선입니다.

    즉 등고선의 의미는 동일한 RSS를 갖는 $\beta_1$, $\beta_2$의 집합을 말합니다.

     

    그리고 가장 낮은 점에서부터 멀어질수록 높이가 높아져요. 즉 RSS가 커집니다.

    보라색보다는 청록색이, 청록색보다는 노란색의 값이 더 큰 RSS를 의미합니다.

    즉 원이 클수록 RSS가 커진다는 걸 말합니다.

     

     


     

    5. 정리

     다시 ISLR의 그림을 가져와보겠습니다.

    ISRL Chapter6. Linear Model Selection and Regularization p.222

    위의 등고선 그래프와 비교해볼게요.

    1사분면 위의 $\hat{\beta}$는 모든 RSS 중에서 가장 작은 RSS를 만들어주는 추정량을 의미합니다. 

    그리고 등고선이 클수록, 가장 낮은 점인 $\hat{\beta}$에서 멀어질수록 RSS는 높아집니다.

    그리고 일반적으로 가장 작은 RSS를 만들어주는 $\hat{\beta}$는 OLS추정량을 말해요.

     

    다만 왼쪽의 라쏘는 마름모꼴과 등고선이 만나는 곳에서

    그리고 오른쪽의 릿지는 원과 등고선이 만나는 곳에서 결정된다고 말했죠?

    즉 제약이 없는 경우보다는 더 큰 RSS를 갖게 됩니다.

     

    정리하면 이렇습니다.

    추정이라는 건 수많은 $\beta_1$, $\beta_2$ 후보 중에 하나를 고르는 거에요.

    대표적인 추정량인 OLS는 아무 제약없이 'RSS를 가장 작게 만드는 값'만을 고르는 방법입니다.

     

    이에 반해 라쏘와 릿지는 일정한 제약식을 둡니다.

    선택할 수 있는 $\beta_1$, $\beta_2$의 후보를 줄여두는 거에요. 

    그리고 그 제약 안에서 'RSS를 최소화'를 하는 값을 고릅니다.

    당연히 제약식이 없는 OLS보다는 큰 RSS를 갖게 되죠.

     

    이걸 시각화한 게 위의 등고선 그래프입니다.

     

    그렇다면 RSS를 희생해서 얻는 이점은 무엇일까요?

    이건 릿지와 라쏘를 다룰 때 다시 자세히 다루겠습니다.

     

     

    ※ 등고선 구현하는 R 코드

    더보기
    library(plotly)
    library(dplyr)
    
    N = 50
    num_alpha = N
    num_beta = N
    x <- rnorm(n = N, mean = 0, sd = 1)
    u <- rnorm(n = N, mean = 0, sd = 1)
    alpha <- 10
    beta <- 15
    y <- alpha + x * beta + u
    
    
    alphas = seq(0, num_alpha)
    betas = seq(0, num_beta)
    
    
    RSS <- matrix(NA, num_alpha, num_beta)
    
    for (i in 1:num_alpha){
          
          for (j in 1:num_beta){
                y_hat <- alphas[i] + betas[j] * x
                u_hat <- y - y_hat
                RSS[i,j] <- sum(u_hat * u_hat)
          }
          }
    
    
    
    fig.n <- plot_ly(z = ~RSS, alpha = 0.9) %>% 
          add_surface() %>% 
          layout(
                
                scene = list(
                      xaxis = list(title = "beta"),
                      yaxis = list(title = "alpha"),
                      zaxis = list(title = "RSS", range = c(0, 5000))
          )
          ) %>% 
          config(mathjax = 'cdn')
    
    fig.n

     


     

    반응형

    댓글

Designed by Tistory.