이번 포스팅은 모델링을 할때 사용하는 변수선택법에 대해 알아봅니다.
변수선택법
- 변수선택법은 최적의 회귀방정식 선택에 도움을 주는 방법론이다
- 변수선택법에는 전진선택법, 후진제거법, 단계선택법이 있다.
- 파이썬에서는 OLS결과를 보면서 수작업으로 변수를 조정해야하지만, R에서는 step()라는 함수를 활용하여 변수선택법을 쉽게 할 수 있다.
최적회귀방정식의 선택
- 설명변수 선택
- y에 영향을 미칠 수 있는 모든 설명변수 x들을 y의 값을 예측하는데 사용
- 데이터에 설명변수 x들의 수가 많아지면 관리하는데 많은 노력이 요구되므로, 가능한 범위 내에서 적은 수의 설명변수를 선택
- 모형선택(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))
- 전진선택볍 결과 lstat, rm, ptratio, dis, nox, chas, b, zn, crim, rad, tax의 변수가 선택되어 회귀분석이 진행되었다.
후진소거법(Backward Elimination)
- 모든 독립변수를 포함한 모형에서 출발해 가장 적은 영향을 주는 변수부터 하나씩 제거하면서 더 이상 제거할 변수가 없을 때까지 진행
- 장점 : 전체 변수들의 정보를 이용할 수 있음
- 단점 : 변수의 개수가 많으면 사용하기 어려움
# backward
step(back, direction = "backward")
- 후진소거법 결과 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
반응형
'Data Analysis & ML > 회귀분석' 카테고리의 다른 글
[회귀분석] 단순선형회귀분석(Linear Regression)(10) - 회귀효과 / 회귀오류 (1) | 2024.03.27 |
---|---|
[회귀분석] 회귀분석 실습(4) - 다중공선성 (Python) (4) | 2023.07.23 |
[회귀분석] 회귀분석 실습(2) - 잔차분석 (Python) (0) | 2023.07.23 |
[회귀분석] 회귀분석 실습(1) - OLS 회귀분석 결과 해석 및 범주형 변수 처리 (Statsmodel) (3) | 2023.07.23 |
[회귀분석] 로지스틱 회귀분석(2) - 로지스틱 회귀식과 회귀계수 추정(최대 우도 추정법(MLE)) (2) | 2023.01.24 |