Data Analysis & ML/회귀분석

[회귀분석] 회귀분석 실습(3) - 변수선택법 (R)

YSY^ 2023. 7. 23. 21:43

 

1. [회귀분석] 회귀분석 실습(1) - Statsmodel분석/데이터 스케일링(Python) : ysyblog.tistory.com/119

2. [회귀분석] 회귀분석 실습(2) - 잔차분석 (Python) : ysyblog.tistory.com/120

 

해당 포스팅은 위 포스팅에 이어 진행됩니다.

 

변수선택법

  • 변수선택법은 최적의 회귀방정식 선택에 도움을 주는 방법론이다
  • 변수선택법에는 전진선택법, 후진제거법, 단계선택법이 있다.
  • 파이썬에서는 OLS결과를 보면서 수작업으로 변수를 조정해야하지만, R에서는 step()라는 함수를 활용하여 변수선택법을 쉽게 할 수 있다.

 

최적회귀방정식의 선택

  1. 설명변수 선택
  • y에 영향을 미칠 수 있는 모든 설명변수 x들을 y의 값을 예측하는데 사용
  • 데이터에 설명변수 x들의 수가 많아지면 관리하는데 많은 노력이 요구되므로, 가능한 범위 내에서 적은 수의 설명변수를 선택
  1. 모형선택(exploratory analysis) : 분석 데이터에 가장 잘 맞는 모형을 찾아내는 방법
  • 모든 가능한 독립변수들의 조합에 대한 회귀모형을 생성한 뒤 가장 적합한 회귀모형을 선택(모든 가능한 조합의 회귀분석)

 

변수선택 기준(벌점화(penalty)화된 선택기준)

  • 모형의 복잡도에 벌점을 주는 방법으로 AIC나 BIC 방법이 주로 사용됨
  • 모든 후보 모형들에 대해 AIC 또는 BIC를 계산하고, 그 값이 최소가 되는 모형을 선택
  • AIC를 활용하는 방법이 가장 보편화되어있음
  • 다른 벌점화 선택기준으로 CIC(covariance inflation citerion), RIC(risk inflation criterion), DIC(deviation information criterion) 등이 있음

 

데이터 준비 및 기본 회귀분석 실시

install.packages('mlbench')
library(mlbench)
data(BostonHousing)
head(BostonHousing)

forw <- lm(medv ~ 1,data=BostonHousing)  # 상수항만 활용하여 회귀분석 실시
back <- lm(medv ~ .,data=BostonHousing)  #모든 변수를 활용하여 회귀분석 실시

 

전진선택법(Forward Selection)

  • 절편만 있는 상수모형으로부터 시작해 중요하다고 생각되는 설명변수부터 차례로 모형에 추가
  • 장점 : 이해하기 쉽고 변수의 개수가 많은 경우에도 사용가능
  • 단점 : 변수값의 작은 변동에도 결과가 크게 달라져 안정성이 부족함
# forward
step(forw, direction = "forward", scope=list(lower=forw, upper=back))

AIC가 계속 줄어드는 것을 볼 수 있다.

  • 전진선택볍 결과 lstat, rm, ptratio, dis, nox, chas, b, zn, crim, rad, tax의 변수가 선택되어 회귀분석이 진행되었다.

 

후진소거법(Backward Elimination)

  • 모든 독립변수를 포함한 모형에서 출발해 가장 적은 영향을 주는 변수부터 하나씩 제거하면서 더 이상 제거할 변수가 없을 때까지 진행
  • 장점 : 전체 변수들의 정보를 이용할 수 있음
  • 단점 : 변수의 개수가 많으면 사용하기 어려움
# backward
step(back, direction = "backward")

AIC가 가장 작아질때 까지 진행한다.

  • 후진소거법 결과 crim, zn, chas, nox, rm, dis, rad, tax, ptratio, b, lstat의 변수가 선택되어 회귀분석이 진행되었다.

 

단계선택법(Stepwise Method)

  • 전진선택법에 의해 변수를 추가하면서 새롭게 추가된 변수에 기반하여, 기존 변수의 중요도가 약화되면 해당변수를 제거하며, 단계별로 추가 또는 제거되는 변수의 여부를 검토하여 더 이상 변경사항이 없을 때까지 진행
# stepwise
step(forw, direction = "both", scope=list(upper=back))

  • 단계선택법 결과 lstat, rm, ptratio, dis, nox, chas, b, zn, crim, rad, tax의 변수가 선택되어 회귀분석이 진행되었다.
728x90
반응형