회귀계수 축소법 - Lasso, Ridge, Elastic-Net 개념

2020. 6. 23. 16:54ML in Python/Knowledge

변수선택법

※  변수선택법으로 Forward / Backward / Stepwise 방법을 통해 유의미한 변수를 선택하여 변수의 개수를 줄이고 모델을 단순화 시키는 작업에 대해서 알아보았다. 회귀계수 축소법은 비슷해보이지만 목표가 약간다르다. 변수선택법에서는 다중회귀 분석을 진행할 때, 다중공선성과 같은 문제를 해결하기 위해 SSE를 최소화하며 변수선택을 해나가거나 또는 제거해나아가는 방식을 택했다. 

https://todayisbetterthanyesterday.tistory.com/10

 

[Python]변수선택법 실습(2) - 전진선택법/후진소거법/단계적선택법/MAPE 모델 성능 평가 (변수선택��

*아래 학습은 Fastcampus의 "머신러닝 A-Z까지"라는 인터넷 강의에서 실습한 내용을 복습하며 학습과정을 공유하고자 복기한 내용입니다. 실습에 사용될 데이터 : Toyota Corolla Data (Toyota Corolla 모델 차

todayisbetterthanyesterday.tistory.com

 

다중회귀분석에서 목표 잔차줄이기

회귀계수 축소법

 하지만, 회귀계수 축소법의 기본적인 공통원리는 SSE(잔차)에 Penalty를 더하여 [SSE + f(x)(= 패널티)]를 함께 축소시키는 것을 목표로 한다. 기본적으로 다중선형회귀와 유사하나, 계수 축소법에서는 잔차에다가 회귀계수를 최소화하는 과정을 거친다.

회귀계수를 축소하는 방법에서 목표

 회귀계수 축소법의 종류는 3가지가 있다.

1. Lasso

- f(b)에 회귀계수의 절대값의 합을 대입한다.

Lasso 수식

- Lasso : minimize sse + lambda(sigma |beta|)

- Lasso의 beta는 Ridge와 다르게 한번에 구할 수 없다. 라그랑지안을 통해 최적화를 진행할 필요가 있다. 

2. Ridge

- f(b)에 회귀계수의 제곱의 합을 대입한다. 

Ridge 수식

- Ridge : minimize sse + lambda(sigma beta^2)

- 위의 식에서 b(beta)는 결과적으로 라그랑지안 미분을 통해  b = (X`X + lambda*I)^(-1)*X`*y 로 구해진다. 

- 다중공선성은 X들간의 강한 선형관계가 있을때 발생한다. 이 경우 X`X의 역행렬을 구할 수 없고 Ridge는 X`X를 구할 수 있도록 강제로 작은 값을 대각행렬에 추가한 것이다. 

 위에 유사해보이는 두 회귀계수 축소법은 공통점과 차이점이 있다. 먼저, 두 식의 lambda값 모두 parameter로 크면 클 수록 보다 많은 회귀계수를 0으로 수렴시킨다. 두 방법 모두 SSE를 희생해 계수를 축소하는 방법이다. 그리고 적절한 람다 값은 람다값을 변형시키며 MSE가 최소일 때의 람다를 탐색해 찾아내야 한다. 

모의 데이터에 적용한 RIdge와 Lasso의 람다에 따른 MSE형태, Ridge는 MSE가 8에서, Lasso는 MSE가 4 근방에서 최소

 Ridge와 Lasso는 차이점 또한 존재한다. Ridge와 Lasso의 가장 큰 차이는 Ridge는 계수를 0에 근사하도록 축소하나, Lasso는 계수를 완전하게 0으로 축소시킨다. 그렇기에 Ridge의 경우 입력변수가 전반적으로 비슷한 수준으로 출력변수에 영향을 미치는 경우 사용하고, Lasso의 경우 출력변수에 미치는 입력변수의 영향력 편차가 큰 경우에 사용한다.

초록색 영역 : 회귀계수가 가질 수 있는 영역 / 빨간 원 : SSE가 같은 지점을 연결한 무차별 곡선 / Lasso는 회귀계수가 0이 될 수 있지만, Lasso는 불가능

3. Elastic-Net

- Elastic-Net 회귀는 Lasso와 Ridge의 하이브리드 회귀모델이다. 

ElasticNet 수식

- lambda_1, lambda_2는 각각 Ridge와 Lasso 속성에 대한 강도를 조절하는 것이다. 이를 통해,Ridge의 정규화 속성과 Lasso의 변수축소 속성을 둘 다 갖는 모델이다.

- Lasso는 상관관계가 있는 다수의 변수들 중 하나를 무작위 선택하여 계수를 축소하는 반면, Elastic-Net은 상관성이 높은 다수의 변수들을 모두 선택하거나 제거한다. 

- 이러한 방식을 통해 group effect를 유도한다. 따라서 다수의 변수간에 상관관계가 존재할 때 유용하다. 

 

※ 보통은 성능이 Ridge와 Elastic-Net이 좋다고 하나, 절대적이지 않다고 한다. 그렇기에 변수선택법이든, 계수축소법이든 모형을 단순화 시킬때 여러 방면으로 확인해보는 작업이 필요하다. 다음은 Python을 통한 실습을 진행하고 빠른 시일 내 링크를 공유하겠다.