Regression Model

Juneee
Almighty Data Science Bootcamp
12 min readMay 16, 2018

Introduction

Machine Learning이란, 주어진 data에서 의미있는 패턴을 찾고, 이 패턴을 이용해서 미래의 data를 예측하거나 불확실한 상황 속에서 의사결정을 하는 방법들이다. 우리 주위의 현상들은 대부분 정확한 함수적 관계를 갖기 보다는 어느 정도 오차가 존재하는 통계적 관계를 가지므로, 우리가 찾고자 하는 패턴에도 다음과 같이 오차가 존재한다.

이 세상의 모든 data를 이용한다면, 위의 f 라는 패턴을 찾아낼 수 있겠지만 이는 불가능하므로, 전체 data중에서 우리에게 주어진 일부 표본인 training data를 이용해 f 를 추정한다. 이때 우리가 추정 할 패턴의 형태를 설정해주는 것이 learning algorithm이다. 즉, 특정 learning algorithm을 선택해서 주어진 training data를 학습시키고, 이 training data를 가장 잘 설명하는 최적의 model로 f를 추정하는 것이다.

최적의 모델을 결정하는 기준에는 여러가지가 있을 수 있을 수 있겠지만, 이 중 가장 많이 사용되는 기준은 수학에서 사용되는 거리 개념이다. 실제 관측치 y값과 model이 추정하는 y-hat 사이의 거리를 제곱해서 평균을 낸 값을 MSE라 정의하고, 이를 모델 선택의 기준으로 많이 사용한다. 같은 learning algorithm 하에서 추정된 서로 다른 model들의 MSE를 측정해서 비교하고, 또 서로 다른 learning algorithm 에서 추정된 model 끼리도 MSE를 측정해서 비교한 후, MSE가 가장 작은 model을우리에게 주어진 data를 가장 잘 설명하는 model로 선택을 한다. 이렇게 MSE가 최소가 되게하는 model로 f를 추정하는방법을 Least Square Estimation이라고 한다.

이때 실제 관측치 y값과 model이 추정하는 y-hat 사이의 거리를 재곱해서 평균을 낸 값이 작을수록 주어진 data를 가장 잘 설명한다라는 생각은 수학적으문제가 없어 보인다. 그럼 이렇게 추정된 model은 통계적으로 도 가장 좋은 model일까?

Gauss-Markov 정리에 의하면, (특정 조건이 만족됐을 경우) MSE를 기준으로 추정된 Least Square Estimator는 선형 불편 추정량들 중에서 가장 분산이 작은 아주 좋은 추정량이라고 한다.(=BLUE : Best Linear Unbiased Estimator)

Linear Regression

우리가 learning algorithm으로 linear regression을 선택했다고 하자. 이때 independent variable이 1개인 가장 간단한 형태부터 보자.

우리는 이러한 패턴들 중에서 MSE가 가장 작은 model을 찾고싶다. 이는 달리 말하면, MSE를 가장 작게 만드는 베타값들을 찾는다는 뜻이다. 그 과정은 다음과 같다.

다음으로 independent variable이 여러개인 multiple linear regression 형태를 보자.

이를 행렬로 표현한 후, least square estimator를 구해보면,

Linear Regression with Regularization

(problem)

Multiple linear regression에서 transpose(A) x A (=T(A)A) 의 inverse가 존재하는 경우에는, 이를 곱해줘 least square estimator beta_hat을 구했다. 이 추정량은 linear unbiased 추정량들 중에서 분산이 가장 작은 좋은 추정량이었고, 이를 사용한 모델도 문제가 없다.

하지만 T(A)A의 inverse가 존재하지 않는 경우에는, least square estimator beta_hat은 여전히 linear unbiased 추정량들 중에서는 분산이 가장 작기는 하지만, 그 분산이 너무 커서, 이를 사용한 모델은 너무 불안정해진다. 모델이 불안정하단 뜻은 training시키는 data가 조금이라도 바뀌면 beta_hat이 아주 다른 값이 나와 모델이 완전히 달라진다는 뜻이다. 이를 다른 관점에서 보면, model이 overfitting돼버려, 이 model은 주어진 data만 설명할수 있다는문제가 있다.

이에 조금의 bias가 있더라도 분산이 훨씬 낮은 추정량을 사용하면 더 좋은 모델을 만들 수 있을 것이다.

(cause)

그러면 T(A)A의 inverse가 구체적으로 언제 존재하지 않는지를 확인해보자.

(background)

어떤 행렬 B의 inverse가 존재하지 않으면, 이 행렬 B를 singular matrix라고 한다. 행렬이 singular matrix가 되는 이유는 그 rank가 full rank보다 작아지기 때문이다.

먼저 rank 란, row를 기준으로 했을 때 rank는 linearly independent한 row의 개수이고, column을 기준으로 했을 때 rank는 linearly independent한 column의 개수이다. 모든 행렬에서 row를 기준으로 했을 때의 rank와 column을 기준으로 했을 때의 rank는 같다.

다음으로 full rank란 것은, 행렬이 가질 수 있는 rank의 최대값을 가진다는 의미이다. n x p 행렬에서 생각해보면, row를 기준으로 했을 때 rank의 최대값은 n, column을 기준으로 했을 때 rank의 최대값은 p이다. 이때 row 를 기준으로 한 rank와 column을 기준으로 한 rank는 같아야 하므로 이 행렬의 full rank = min(n,p) 일 것이다.

그러면 어떤 정방행렬이 rank<full rank일 때 왜 inverse가 존재하지 않을까? 그 이유를 연립방정식의 형태에서 생각해보자.

n x n 행렬이 rank = full rank라는 것은, 모든 행과 열이 linearly independent하다는 뜻이므로, 이 행렬을 연립방정식의 세계로 가져가서 살펴보면 n개의 식과 n개의 변수가 있는 연립방정식과 관련된다. 이런 연립방정식에서의 해는 단 하나 존재해야 하므로, 행렬의 inverse가 존재해야 한다.

다음으로 n x n 행렬이 rank<full rank라는 것은, 행들 중에서 linearly dependent한 행이 k개 존재한다는 뜻이므로, 이 행렬을 연립방정식의 세계로 가져가서 살펴보면 n-k개의 식과 n개의 변수가 있는 연립방정식과 관련된다. 이런 연립방정식에서의 해는 무수히 많거나 없으므로, 행렬의 inverse가 존재하지 않는다.

이제 우리의 문제로 돌아와서, beta_hat은 T(A)A 의 inverse가 존재하지 않기 때문에 문제가 생겼다. 즉 T(A)A 의 행들 중에서 linearly dependent한 행이 존재해서 rank<full rank가 된 것이다. 그 이유를 구체적인 A의 형태에서 살펴보자.

n x p 행렬 A의 가능한 형태는 다음과 같다.

  1. 먼저 A가 1의 형태이면,
  • rank의 성질에 의해 rank(A)=rank( T(A) )=rank(T(A)A)=rank(AT(A)) 이므로 rank(T(A)A) ≤ n 이다.
  • T(A)A가 p x p 형태이니 full rank=p 이다.
  • 그런데 n<p 이므로 반드시 rank(T(A)A) < full rank 가 된다.

즉, A가 1의 형태이면, T(A)A의 행 중에서 linearly dependent한 행이 반드시 존재해 rank < full rank인 singular matrix가 된다.

2. 다음으로 A가 2의 형태이면,

  • rank(A) = rank(T(A)A) ≤ p
  • T(A)A가 p x p 형태이니 full rank = p 이다.
  • 이때 A에서 linearly dependent한 column이 만약 k개 존재하면 rank(T(A)A) = p-k < full rank가 된다.

즉, A가 2의 형태이면, A에서 linearly dependent한 행이 있는 경우에는 T(A)A의 행 중에서 linearly dependent한 행이 생겨 rank < full rank인 singular matrix가 된다.

(solution)

A가 1의 형태이던, 2의 형태인데 linearly dependent한 열이 존재하던, 결국 T(A)A에 linearly dependent한 행이 생겨 rank<full rank인 singular matrix가 돼 문제가 생겼다. 따라서 이 문제를 해결하기 위해서는 아예 근본적으로 A에 변화를 주던, 혹은 T(A)A에 변화를 줘서 결과적으로 T(A)A의 linearly dependent한 행을 없애야한다.

  1. Ridge Regression

현재 T(A)A 의 행들중에 linearly dependent한 행들이 생겨서 inverse가 존재하지 않아 beta_hat 값들의 변동성이 큰 상황이다. 따라서 T(A)A의 대각 성분들에 일정한 값을 더해줘 inverse가 존재하도록 만들 면 beta_hat값들의 변동성을 잡을 수 있을 것이다.

이에 beta_hat을 구하는 과정에 beta에 L2_norm이라는 제약조건을 추가시켜보자. 이 제약조건은 전체 cost function에 약간의 변화를 주고, 이 변화는 T(A)A의 대각성분에 일정한 값을 더해주는 효과를 준다. 그리고 이는 inverse를 구하지 못했던 문제를 해결시켜주고, 이렇게 구한 model은 bias 조금생겼겠지만 variance가 매우 작아져, 기존의 model보다 MSE가 작은 model이 될 것이다.

이를 간단하게 3차원 그래프로 살펴보자. 전체 cost인 J_total은 cost_ridge와J_linear의 합이고, 이 두 합이 최소가 되게 하는 beta값은 두 그래프가 만나는 곳에 위치한다. 이때 cost_ridge 그래프는 delta 값이커질수록 그래프가 퍼지는 속도가 느려진다. 즉, J_total 또한 delta와 beta값에 의해 변한다. 따라서 둘 중 delta를 먼저 fix시킨 후, J_total를 최소화 시키는 beta값과 해당 J_total값을 구한다. 그리고 delta값에 변화를 주면서 전체 J_total을 비교해보고, 여러 (delta,beta) set들 중에서 전체 J_total이 가장 작은(delta, beta) set를 구해, 최적의 model을 찾는다.

2. Lasso Regression

Ridge regression에서는 beta에 L2_norm이라는 제약조건을 줌으로써 beta_hat의 변동성을 잡을 수 있었다. 이와 달리 lasso regression에서는 beta에 L1_norm이라는 제약조건을 줌으로써 beta_hat의 변동성을 잡는다. 이때 L2_norm과 달리 L1_norm은 미분이 불가능 하기에, 기존의 방식으로는 beta_hat을 구하지 못한다. 이에 lasso regression 에서는 coordinate descent라는 다른 optimization 방법을 사용해 beta_hat을 구한다.

Lasso regression은 cost_lasso 그래프의 형태가 마름모라는 점만 다르고, ridge regression과 마찬가지로 cost_lasso 그래프가 delta 값에 영향을 받는다. 따라서 J_total은 delta와 beta값에 의해 변한다. 이에 delta를 fix시키고 J_total 최소값을 구한 후, delta값에 변화를 주면서 J_total을 비교해보고 최적의 (delta, beta) set을 찾는다.

3. Ridge vs Lasso

ridge와 lasso 모두 beta에 제약조건을 줌으로써 beta_hat의 변동성을 잡아 준다는 점은 비슷하다. 이때 ridge regression에서 사용하는 L2_norm은 원의 형태, lasso regression에서 사용하는 L1_norm은 마름모의 형태로, 조금의 차이가 있다. 이러한 그래프의 차이로 인해, ridge, lasso regression에서 나타나는 beta_hat 값의 특성에도 약간의 차이가 존재한다.

Ridge regression에서 사용하는 L2_norm은 원의 형태이기 때문에, cost_ridge와 J_linear 가 만나는 곳이 축 위가 될 가능성이 매우 작다. 따라서 beta값들이 대부분 살아있기 때문에, 이 beta값들을 비교해 보면, 대응되는 X변수가 Y에 끼치는 영향들을 서로 비교해 볼 수 있다.

이와 달리 Lasso regression에서 사용하는 L1_norm은 마름모의 형태이기 때문에, cost_lasso와 J_linear가 만나는 곳은 매우 높은 확률로 축 위이다. 즉 beta값들 중에 일부는 0이 된다는 뜻이다. 따라서 beta와 X를 곱하면, 0이 된 beta들 때문에 X의 변수들 중 일부가 삭제되는 효과가 있다. 이는 X변수들 중에서 Y에 끼치는 영향이 큰 상위 몇개의 변수만 알고자 할 때 효과적이다.

--

--