본문 바로가기

계량경제학/인과추론의 데이터과학

인과추론을 위한 회귀분석 - Penalized Regression

해당 글은 아래 링크를 토대로 작성했습니다.

https://theeffectbook.net/ch-StatisticalAdjustment.html?panelset5=python-code6&panelset6=python-code7&panelset7=python-code8&panelset8=python-code9#additional-regression-concerns


Penalized Regression 

  • Regression에서 변수가 너무 많은 경우, variable selection을 하기 위한 방법 
  • 변수가 너무 많으면 collinearity가 생길 수 있고, 모델의 해석도 어렵고 과적합의 위험도 있으므로, 변수를 제거하는 과정이 필요함 
Regression Penalized Regression

잔차 제곱합을 최소로 만드는 coefficient를 찾아야 함 잔차 제곱합을 작게 만들면서 + β coefficients를 작게 만들어야 함
  • λ: penalty parameter 
    • λ가 작은 경우: 잔차를 최소화 하는 것이 beta를 작게 만드는 것보다 중요한 경우
    • λ가 큰 경우: beta를 작게 만드는 것이 잔차를 최소화 하는 것보다 중요한 경우 

Penalty Function의 종류

: Penalized Regression에서 F()의 종류

(1) L1-norm (Lasso Regression) 

  • Σ|β|으로, coefficient의 absolute의 합
  • "least absolute shrinkage and selection operator"으로, coefficient를 축소하면서 + 많은 coefficient를 0으로 만들어 주는 효과가 있음 
  • 변수를 선택 (selection operator)하는 역할을 하므로, Regression에서 covariate가 너무 많은 경우 Lasso Regression으로 coefficient를 축소 + covariate selection을 할 수 있음 

(2) L2-norm (Ridge Regression) 

  • Σβ^2으로, coefficient의 squared sum 
  • variable selection의 역할은 없고, 축소된 coefficient를 제공함 

Lasso Regression 사용시 유의사항 

(1) Lasso Regression을 하면 backdoor을 닫기 위해 꼭 필요한 변수를 삭제할 수도 있음

-> 특정 공변량을 삭제하지 않도록 설정하거나, 해당 변수가 누락된 최종 Lasso 모델에 변수를 추가해야 함 

 

(2) Lasso Regression은 coefficient를 정확하게 추정해주진 못함 

  • 원래 Lasso Regression은 machine learning 관점에서 최적의 out-of-sample prediction를 하기 위해 사용하는 방법임.  
  • 하지만, 우리는 causal inference 관점에서 최적의 estimator를 찾기 위해 Lasso Regression을 사용하는 경우로, 계수가 축소된 경우, coefficient 추정은 덜 정확할 수 있음  

-> Lasso는 variable selection에만 사용하고, 선택된 변수들로 따로 일반 OLS를 해서 최적의 estimator를 찾을 수 있음 

 

Lasso Regression을 수행하는 방법

(1) Standardization

  • penalty term Σ|β|은 coefficient의 크기만을 고려함
  • scale이 작은 변수 -> coefficient의 값이 커짐 ->  penalty가 커짐 -> Lasso에 의해 변수가 삭제되거나 축소될 가능성이 높음 

-> 모든 변수가 동일한 척도에 있도록 standardization을 수행 후 lasso regression을 해야 함

 

(2) 적절한 polynomial terms과 interaction terms를 포함하여 Lasso를 수행하라 

  • 최대한 많은 항들을 변수에 포함하려고 할 수는 있는데, 말이 안되는 polynomial terms (e.g. 4차 이상)나 interaction terms (e.g. 누가 봐도 상관이 없는 변수들)를 굳이 끼워넣지 않아도 된다. 애초에 말이 되는 변수들로만 모델을 구성하자. 

(3) λ 값 선택할 때 cross validation을 이용할 수 있음 

  • λ를 hyperparameter로서 선택해야 하는데, k-fold cross validation을 통해 선택할 수 있음
  • train set을 k-fold (아래 그림에서는 10-fold)으로 split 한 뒤, k-1개의 fold에서 특정 λ값을 설정한 뒤 학습, 나머지 하나의 fold에서 prediction score (holdout score)를 계산함 -> k개의 λ값의 성능을 비교할 수 있음 -> cross validation으로 최적의 λ를 찾을 수 있음