[데이터사이언스기초] Feature Selection

 

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 예시

Python
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)

hyeon_B

안녕하세요! AI 기술을 이용해 더 나은 세상을 만들어 나가고 싶은 과기원생 Hyeon이라고 합니다. 저는 앞으로 인공지능 시대에는 지식을 '활용'하는 능력이 중요해질 것이라고 생각합니다. 대부분의 일들은 인공지능이 뛰어난 모습을 보이지만, 인공지능은 데이터로 부터 연관관계를 학습하기 때문에 지식들을 새로 통합해서 활용하는 능력이 부족합니다. 인공지능이 뉴턴 전에 만들어졌다면 사과가 떨어지는 이유에 대답하지 못했을 것이고, 아인슈타인 전에 만들어졌다면 중력이 어떻게 생기는지 설명하지 못했을 것입니다. 따라서 앞으로 우리는 '본질'을 탐구하고 그 본질로부터 다른 곳에 적용하며 인공지능을 현명하게 활용해야 할 것입니다. 함께 인공지능 시대를 준비합시다!

댓글 쓰기

다음 이전

POST ADS1

POST ADS 2