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