콘텐츠로 이동

특성 선택 (Feature Selection)

개요

특성 선택(Feature Selection)은 모델 학습에 가장 유용한 특성의 부분 집합을 선별하는 과정이다. 불필요한 특성은 노이즈를 추가하고, 차원의 저주(curse of dimensionality)를 유발하며, 과적합을 촉진하고, 학습 시간을 늘린다. 특성 선택은 필터(Filter), 래퍼(Wrapper), 임베디드(Embedded) 세 가지 접근법으로 나뉜다.


핵심 개념

1. 필터 방법 (Filter Methods)

모델에 독립적으로, 통계적 관계만을 기반으로 특성을 평가한다.

기법 적합한 데이터 측정 대상
분산 임계값 모든 데이터 분산이 낮은 특성 제거
상관계수 (Pearson) 수치형 선형 관계 강도
Chi-Square Test 범주형 특성-타겟 독립성
Mutual Information 모든 데이터 비선형 관계 포함 정보량
ANOVA F-test 수치-범주형 클래스 간 평균 차이

장점: 빠르고, 모델에 독립적
단점: 특성 간 상호작용을 무시, 중복 특성 제거 어려움

2. 래퍼 방법 (Wrapper Methods)

모델 성능을 직접 평가하여 최적 특성 부분 집합을 탐색한다.

기법 방향 설명
Forward Selection 추가 빈 집합에서 시작, 최적 특성을 하나씩 추가
Backward Elimination 제거 전체에서 시작, 가장 불필요한 특성을 하나씩 제거
RFE (Recursive Feature Elimination) 제거 모델의 특성 중요도를 기반으로 재귀적 제거

장점: 모델 성능을 직접 최적화
단점: 매우 느림 (특성 수에 비례하는 모델 학습 횟수)

3. 임베디드 방법 (Embedded Methods)

모델 학습 과정에서 특성 선택이 자동으로 이루어진다.

L1 Regularization (Lasso)

\[\min_w \|y - Xw\|_2^2 + \lambda \|w\|_1\]

L1 페널티가 일부 가중치를 정확히 0으로 만들어, 자동으로 특성을 선택한다.

트리 기반 중요도

  • Gini Importance (MDI): 분할 시 불순도 감소 기여도
  • 장점: 빠르고 직관적
  • 주의: 고카디널리티 특성에 편향

ElasticNet

L1 + L2를 결합하여 그룹화된 특성도 선택할 수 있다.

\[\min_w \|y - Xw\|_2^2 + \lambda_1 \|w\|_1 + \lambda_2 \|w\|_2^2\]

4. 특성 중요도 점수 (Importance Scores)

방법 원리 신뢰도 주의점
Permutation Importance 특성을 무작위 섞었을 때 성능 하락 정도 높음 상관된 특성 간 중요도 분산
SHAP Feature Importance Shapley value 기반 기여도 매우 높음 계산 비용 높음
MDI (Mean Decrease Impurity) 트리의 분할 불순도 감소 중간 고카디널리티 편향
Drop-Column Importance 특성 제거 후 재학습 성능 비교 높음 매우 느림

Permutation Importance의 한계: 두 특성이 강하게 상관되어 있으면, 하나를 섞어도 다른 하나가 정보를 보존하여 중요도가 과소 평가될 수 있다.

SHAP (SHapley Additive exPlanations): 게임 이론의 Shapley value에 기반한 가장 이론적으로 견고한 방법이다. 지역적(local) 설명과 전역적(global) 중요도를 모두 제공한다.


상세 내용

특성 선택 워크플로우

flowchart TD
    A["특성 수 확인"] --> B{"몇 개?"}

    B -->|"< 50개"| C["Embedded Methods<br>(Lasso, Tree Importance)"]
    B -->|"50~500개"| D["Filter → Embedded<br>단계적 축소"]
    B -->|"500+개"| E["Filter (분산, MI)<br>→ Embedded<br>→ Wrapper (최종)"]

    C --> F["교차 검증으로 검증"]
    D --> F
    E --> F

    F --> G{"성능 개선?"}
    G -->|예| H["선택된 특성 사용"]
    G -->|아니오| I["전체 특성 유지<br>또는 다른 방법 시도"]

특성 선택 방법 비교

특성 Filter Wrapper Embedded
속도 매우 빠름 매우 느림 중간
모델 의존성 독립 의존 의존
상호작용 고려 아니오 부분적
과적합 위험 낮음 높음 중간
구현 용이성 쉬움 복잡 쉬움

언제 사용하는가

상황 추천 방법
특성 수십 개, 빠른 결과 필요 Embedded (Lasso, Tree)
특성 수백~수천 개 Filter → Embedded 순차
최고 성능 필요, 시간 충분 Wrapper (RFE)
해석 가능성 중요 SHAP + Permutation Importance
고카디널리티 범주형 Mutual Information, Target Encoding
딥러닝 보통 불필요 (모델이 자동 선택)

흔한 오해와 함정

  1. 전체 데이터에서 특성 선택: 특성 선택도 데이터 누수의 원인이 된다. 학습 데이터에서만 선택하고, 동일한 특성 집합을 테스트에 적용해야 한다.

  2. 상관관계가 높은 특성을 무조건 제거: 높은 상관관계가 항상 중복을 의미하지는 않는다. 두 특성이 타겟에 대해 다른 정보를 제공할 수 있다.

  3. MDI (Gini Importance)만 의존: 고카디널리티 특성에 편향된다. Permutation Importance나 SHAP을 교차 검증해야 한다.

  4. 특성 선택이 항상 성능을 개선한다: 정보가 풍부한 특성을 제거하면 오히려 성능이 하락한다. 반드시 검증으로 확인해야 한다.

  5. 한 번에 최종 결정: 특성 선택은 반복적 과정이다. 모델을 바꾸면 최적 특성 집합도 달라질 수 있다.


다른 주제와의 연결