Feature Selection : 데이터 분석의 효율성
지난 포스팅에서는 머신러닝 모델 구축 과정에서 중요한 특징 추출(Feature Extraction)에 대해 알아보았다면, 이번에는 특징 추출 후에 진행되는 특징 선택(Feature Selection)에 대해 자세히 알아보겠다. 특징 선택은 머신러닝 모델의 성능과 효율성을 높이는 데 중요하다.
1. 특징 선택 (Feature Selection) 이란?
Feature Selection은 수많은 특징 중에서 모델 학습에 가장 유용한 Feature를 선택하는 과정이다. 특징 선택을 통해 모델의 복잡도를 줄이고 과적합(Overfitting)을 방지하며, 학습 속도를 향상시키고 해석 가능성을 높일 수 있다.
1.1. 특징 선택의 필요성
- 차원의 저주(Curse of Dimensionality): 특징 수가 증가할수록 데이터 공간이 기하급수적으로 커져, 모델 학습에 필요한 데이터 양이 급증하고 모델 성능이 저하될 수 있다.
- 과적합(Overfitting): 불필요한 특징은 모델이 학습 데이터에 과적합되는 원인이 될 수 있다.
- 계산 비용: 특징 수가 많을수록 모델 학습 및 예측에 소요되는 시간과 자원이 증가한다.
- 해석 가능성: 특징 수가 적을수록 모델의 결과를 해석하고 이해하기 쉽다.
2. Univariate Feature Selection (단변량 특징 선택)
Univariate Feature Selection(단변량 특징 선택)은 각 특징과 타겟 변수 간의 관계를 통계적 검정을 통해 분석하고, 가장 관련성이 높은 특징을 선택하는 방법이다. 대표적인 통계적 검정 방법으로는 카이제곱 검정(Chi-squared Test), ANOVA(Analysis of Variance), 상관 계수(Correlation Coefficient) 등이 있다.
Scikit-learn은 단변량 특징 선택을 위한 다양한 클래스를 제공한다.
- SelectKBest: 점수가 가장 높은 k개의 특징을 선택한다.
- SelectPercentile: 상위 p%의 특징을 선택한다.
- GenericUnivariateSelect: 사용자가 지정한 통계적 검정 방법과 임계값(threshold)을 기반으로 특징을 선택한다.
3. Pipeline (파이프라인)
Pipeline(파이프라인)은 여러 개의 변환기(transformer)와 하나의 추정기(estimator)를 순차적으로 연결하여 하나의 객체로 만드는 기능이다. 파이프라인을 사용하면 데이터 전처리, 특징 선택, 모델 학습 및 예측 과정을 하나의 객체로 통합하여 관리할 수 있다.
3.1. Pipeline 예시
from sklearn.pipeline import Pipeline
from sklearn.feature_selection import SelectKBest
from sklearn.linear_model import LogisticRegression
# 파이프라인 생성
pipe = Pipeline([
('feature_selection', SelectKBest(k=10)), # 상위 10개 특징 선택
('classifier', LogisticRegression()) # 로지스틱 회귀 모델 학습
])
# 모델 학습 및 예측 (한 줄로 처리)
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
마무리하며
이번 포스팅에서는 특징 선택의 개념과 필요성, 단변량 특징 선택 방법, 그리고 Scikit-learn의 파이프라인 기능에 대해 알아보았다. 특징 선택은 머신러닝 모델의 성능을 향상시키는 데 중요한 역할을 하므로, 데이터와 문제의 특성에 맞는 적절한 방법을 선택하는 것이 중요하다.
추천글 :
[데이터사이언스기초] Introduction to Machine learning
(https://hyeonb.blogspot.com/2024/06/introduction-to-machine-learning.html)
[데이터사이언스기초] Machine learning process
(https://hyeonb.blogspot.com/2024/06/machine-learning-process.html)
[데이터사이언스기초] Feature Extraction
(https://hyeonb.blogspot.com/2024/06/feature-extraction.html)