본문으로 건너뛰기

011 setup() 전처리 옵션 - 특성 선택

키워드: 특성 선택, feature selection

개요

데이터에 특성(변수)이 많을수록 좋은 것은 아닙니다. 불필요한 특성은 모델을 복잡하게 만들고, 과적합을 유발하며, 학습 시간을 늘립니다. **특성 선택(Feature Selection)**은 중요한 특성만 골라 모델 성능을 향상시키는 기법입니다.

실습 환경

  • Python 버전: 3.11 권장
  • 필요 패키지: pycaret[full]>=3.0, pandas, matplotlib
pip install pycaret[full]>=3.0 pandas matplotlib

Google Colab 사용 불가: Google Colab은 2025년 8월부터 Python 3.12만 지원하여 PyCaret 실습이 불가능합니다.

특성 선택이 필요한 이유

차원의 저주

특성이 많아지면:

  • 학습에 필요한 데이터 양이 기하급수적으로 증가
  • 노이즈가 많아져 일반화 성능 저하
  • 계산 비용 증가

특성 선택의 장점

  • 과적합 방지
  • 학습 속도 향상
  • 모델 해석력 향상
  • 저장 공간 절약

PyCaret 특성 선택 옵션

feature_selection 파라미터

from pycaret.classification import *
from pycaret.datasets import get_data

data = get_data('credit') # 30개 특성

clf = setup(
data=data,
target='default',
feature_selection=True, # 특성 선택 활성화
feature_selection_method='classic', # 방법 선택
n_features_to_select=0.5, # 상위 50% 선택
session_id=42
)

특성 선택 방법

방법파라미터설명
Classic'classic'통계적 검정 기반
Univariate'univariate'단변량 통계 검정
Sequential'sequential'순차적 선택 (느림)

실전 예제

from pycaret.classification import *
from pycaret.datasets import get_data

# 011 데이터 로드 (30개 특성)
data = get_data('credit')
print(f"원본 특성 수: {data.shape[1] - 1}")

# 011 특성 선택 없이
clf1 = setup(data, target='default', feature_selection=False, session_id=42, verbose=False)
print(f"특성 선택 X: {clf1.X_train.shape[1]}개 특성")

# 011 특성 선택 적용
clf2 = setup(
data, target='default',
feature_selection=True,
n_features_to_select=0.5,
session_id=42, verbose=False
)
print(f"특성 선택 O: {clf2.X_train.shape[1]}개 특성")

remove_multicollinearity 옵션

다중공선성(상관관계가 높은 특성 쌍)을 제거합니다:

clf = setup(
data=data,
target='default',
remove_multicollinearity=True, # 다중공선성 제거
multicollinearity_threshold=0.9, # 상관계수 0.9 이상 제거
session_id=42
)

정리

  • feature_selection=True로 자동 특성 선택
  • n_features_to_select로 선택할 특성 비율/개수 지정
  • remove_multicollinearity=True로 상관관계 높은 특성 제거
  • 특성이 많은 데이터에서 효과적

다음 글 예고

다음 글에서는 setup() 전처리 옵션 - 데이터 분할을 다룹니다.


PyCaret 머신러닝 마스터 시리즈 #011