Stepwise 변수 선택법은 여러 개의 후보 변수들이 있을 때, 다양한 변수 조합에 대해 통계 검정치를 비교하여 최적의 회귀 모델을 찾는 방법입니다. 원리가 단순하며 대부분의 통계 라이브러리나 패키지에서 해당 기능을 제공하고 있고 사용방법 또한 쉬워서 오랜전부터 널리 사용되고 있지만, 많은 통계학자로부터 사용하면 안된다는 비판을 받고 있기도 합니다.
아래 글은 stepwise 기법이 갖고 있는 문제점을 잘 설명하고 있습니다.
Stepwise 변수 선택법이 갖는 가장 큰 문제는, 한번만 수행해야 하는 (F-test 나 t-test 등의 ) 검정 기법을 여러 번 수행한다는 점입니다. 이렇게 되면, type-I (false positive) 에러 발생 가능성이 증가하여 다음과 같은 문제를 야기할 수 있습니다.
표준오차가 실제보다 작게 추정되며, 이로 인해 p-value 또한 작게 추정될 수 있다.
파라미터의 회귀 계수가 실제보다 과다 (0에서 멀어지게) 추정될 수 있다.
결국 위 현상으로 인해 실제보다 복잡한 모델이 생성될 수 있다.
위 글에서 저자는 이런 문제를 직접적으로 보여주기 위해 아래와 같은 세 가지 실험을 수행합니다.
실험 1) 50개의 white noise 변수로만 구성된 100개의 데이터를 아무 관련없는 종속변수에 매칭해서 stepwise 변수 선택법 적용
이렇게 했더니, 15개의 독립변수로 이뤄진 회귀 모델이 생성되었습니다 (실제로는 관련없는 변수를 이용한 것이니 모델이 생성되면 안됩니다). 데이터를 1000개로 늘려서 실험해 봐도 10개의 독립 변수를 갖는 회귀 모델이 생성되었습니다.
실험 2) 이번에는 실험1)에서 사용한 50개 변수 데이터에 종속변수와 실제 선형 관계를 갖는 변수(이하 x_real로 표기)로 된 100개 데이터에 대해 stepwise 기법 적용
이번에는 (원래는 포함되어야할) x_real 변수는 빠진 14개의 독립변수로 이뤄진 회귀 모델이 생성되었습니다. 데이터 개수를 1000개로 늘리면 x_real 변수가 포함되긴 하지만 여전히 관련없는 변수들도 포함됩니다.
3) 실험2) 조건에서 아웃라이어 데이터를 1~2개 추가하여 stepwise 기법 적용
x_real 변수가 모델에 포함되긴 하지만 해당 변수의 회귀 계수가 과소 추정되었습다.
위와 같이 모든 실험에서 stepwise 는 가짜 모델을 생성하거나 최소한 실제보다 지나치게 복잡한 모델을 생성된 것이죠. 그렇다면 후보 변수가 지나치게 많은 상황에서 step-wise 대신 어떤 방법을 사용해야 할까요? 저자는 아래와 같은 대안을 추천합니다.
1) 변수 선택을 하지 않음 (full model 이용) - 데이터에 비해 후보 변수가 지나치게 많아 모델 자체가 생성될 수 없는 경우가 아니라면, 그냥 후보 변수를 모두 포함한 모델을 만든다.
2) 전문가 지식 활용 - 애초에 도메인 지식에 기반하여 후보 변수를 선정하고 모델을 설계한다. (역시나 변수 선택을 하지 말라는 뜻임)
3) 여러 개의 후보 모델을 생성한 후, 각 모델의 회귀 계수들에 대한 가중 평균을 구해 최종 모델을 생성한다.
4) PLS, Lasso, LAR 와 같이 특정 제약 조건을 주고 수행하는 변수 선택 기법을 이용한다.
5) Cross validation 이용 - 모델 생성과 검정에 사용하는 샘플 집합을 다르게 하여 type I 에러 발생 가능성을 낮춘다.
참고로 위 글에 대한 정식 논문은 https://journalofbigdata.springeropen.com/articles/10.1186/s40537-018-0143-6 에 공개되어 있으니 참고하시기 바랍니다.