아카이브

변수 선택(Feature Selection) 본문

데이터 사이언스 정보

변수 선택(Feature Selection)

머루아빠승우 2025. 5. 12. 23:59

변수 선택 방법론

변수 선택 방법론은. 모델링이 앞서, 우리가 독립 변수를 설명하기 위한 주요한 변수를 고르는 과정이다.

흥미를 불러오는 비유로 시작해보자, 우리는 햄버거를 먹다보면 최적의 메뉴 조합을 떠올릴 수 있다.

가장 맛있는 햄버거를 먹기 위해, 양상추, 치즈, 패티, 토마토 등 다양한 재료를 조합하여 먹게된다.

그러나 너무 많은 속재료는 조화롭지 못하며, 네 맛도 내 맛도 아닌 굉장한 음식이 나온다.

게다가 햄버거가 너무 커져 턱도 아프다.

 

이는 모델을 개발하는 과정과 유사하다.

우리가 설명하고자 하는 변수를 기준으로 다른 변수들과의 관계를 고려하게 되는데 우리는 그 변수들을 선택해야만 한다.

 

당연히 모든 설명 변수를 기반으로 모델을 만들어 알고리즘으로 개발할 수 있다.

그러나, 컴퓨팅 리소스 측면과 모델의 설명력, 그리고 구현한 차원을 생각해봤을 때, 과연 모든 변수를 전부 설명 변수로 하는 것은 어렵다! (물론 알고리즘 방식에 따라 이를 할 수도 있지만.. 모델링 시간은 정말 오래 걸릴 것이다. 또 과적합의 문제도 있을 것이고..)


모델을 만들 때, 변수가 N개이면, 변수의 관계를 알기 위해 2^N번 반복해야하는 셈이기 때문이다.

  • 변수 2개→4번 (HH, HT, TT, TH)

즉. 우리는 모델의 설명력과 성능을 위해 변수를 선택하여 모델링을 해야한다.

여러 모델링을 경험해본 바에 의하면, 다양한 변수 중에 정말 중요한 변수를 골라 모델링을 하면 성능이 생각보다 쉽게 나온다!

(하지만 거기서부터가 시작이다. 베이스를 잡고 나서 0.1%의성능을 높이는 것은 굉장히 쉽지 않더라..)

 

그래서 변수 선택 과정이 왜 필요하다고?

1. 변수의 개수가 줄어들면 식이 단순해진다. -> 모델이 가벼워짐 (설명력도 높아짐)

2. 모델의 성능을 낮추는 변수를 제거하는 것은 당연히 필요하기 때문이다.

 

고로, 어떻게 하면 많은 변수 중 유의미한 변수를 고룰 수 있는지! 그 방법에 대해 알아보자!


 

Forward Selection (전진 선택)

 

프로세스

  1. 아무 변수도 포함하지 않은 상태에서 시작
  2. 모든 변수 중에서 가장 성능(예: p-value, R² 등) 향상에 기여하는 변수를 하나 선택하여 모델에 추가
  3. 이미 선택된 변수들과 조합해, 남은 변수 중에서 추가로 성능 향상에 가장 크게 기여하는 변수를 반복적으로 추가
  4. 더 이상 추가할 변수가 없거나, 추가해도 성능이 유의하게 개선되지 않을 때까지 반복
    * 한 번 추가된 변수는 다시 제거되지 않는다!

평가

음! 나쁘지 않다. 단순히 변수를 하나씩 선택하고 모델의 성능을 보는 것이다. 직관적이지만 한계가 명확해보인다.

 

Backward Selection (Backward Elimination, 후진 제거) 단계별로 하나씩!

프로세스

  1. 모든 변수를 포함한 "풀(full) 모델"에서 시작
  2. 현재 모델에서 가장 덜 유의미하거나(예: p-value가 가장 크거나, 기여도가 가장 낮은) 불필요한 변수를 하나 제거
  3. 변수를 하나 제거할 때마다 모델을 다시 적합시켜, 남은 변수 중 가장 덜 유의미한 변수를 반복적으로 제거
  4. 모든 남은 변수가 통계적으로 유의미할 때까지(제거 기준에 부합하지 않을 때까지) 반복

Stepwise Selection (단계별 선택, 양방향 선택)

프로세스

  1. 전진 선택과 후진 제거를 결합한 방식
  2. 전진 선택처럼 변수를 하나씩 추가하면서, 동시에 이미 포함된 변수 중에서 더 이상 유의미하지 않은 변수가 있으면 제거
  3. 즉, 변수를 추가한 후, 모델 내 모든 변수의 유의성을 다시 평가하여 필요 없는 변수는 제거
  4. 이 과정을 반복하여, 모델에 들어갈 변수와 빠질 변수를 계속해서 조정

최고의 방법은 무엇인가?

각 선택 알고리즘의 이론을 알게 되었다. 직관적으로 쉬우니 성능을 비교해보자

방법 시작점 변수 추가 변수 제거 특징 및 장점/단점
Forward Selection 빈 모델 O X 빠르게 변수 선택, 제거 불가, 단순
Backward Selection 전체 변수 포함 X O 변수 많을 때 비효율적, 제거만 가능
Stepwise Selection 빈 또는 전체 O O 추가·제거 모두 가능, 유연함

흠 일단 요약은 했으나, 해당 방법에 따라 선택되는 변수는 바뀔 것이고

모델의 결과는 때에 따라 다를 것이다. 그러면 우리는 일단 시간적 이점이 있는 것부터 찾고싶기 마련!

 

 우리는 안다! 이 과정을 거치려면 변수의 개수에 의존적으로 시간이 늘수밖에 없음을!

그러면 어떤 대안이 있을까?!

Lasso 선택 방법

변수 선택(variable selection)과 정규화(regularization)를 동시에 수행하는 대표적인 방법이다!

Lasso의 핵심은 회귀 계수의 절대값 합(L1 norm)에 패널티를 부여하여, 불필요한 변수의 계수를 0으로 만드는 것으로

모델에 꼭 필요한 변수만 자동으로 선택할 수 있다.

비교

기준 Stepwise Lasso
계산 복잡도 O(k^2) O(n samples * k features)
변수 선택 방식 단계적 검정 연속적 축소
최적해 보장 No (탐욕적 알고리즘) Yes (Convex 최적화)
다중공선성 처리 VIF 검정 필요 자동 처리
실제 적용 사례 소규모 데이터셋 고차원 유전체 데이터

오늘의 결론

변수를 자동으로 선택하는 과정 또한, 때에 따라 다르다.. 우린 모델링을 할 때 해야하는 것이 너무나도 많다..

그럼에도 해결책이 있을 때는 다행이다. 위 방법 세가지를 통해 모델링해보고 그럼에도 안되면 다른 방법을 찾아야만 한다.

고마운 존재인 것이지.. 이것들이 안먹힐 때는 다른 방법을 구현해야하니까 말이다.