반응형

머신러닝 또는 딥러닝 시 고려해야 할 사항 중 데이터 전처리 내 Feature 선택에 대한 방법들

 

Feature란?

모델 학습 시 사용되는 입력 값. 즉 일반적으로 말하는 머신러닝 또는 딥러닝에서 사용되는 '독립변수들'이라고 보면 된다.

*이 글에서는 Feature라는 단어 대신 독립변수라는 단어를 사용.

 

학습시 어떤 독립변수를 사용할 지에 따라 학습 시간, 성능에 많은 영향을 끼친다.

크게 독립변수들은 숫자형과 문자형 두가지로 분류한다.

 

python3 pandas dataframe 예시 코드

import pandas as pd
sample = pd.read_csv(...) #샘플 데이터 파일을 읽는다.

print(sample.dtypes[sample.dtypes == "object"].index) #문자형 독립변수들
print(sample.dtypes[sample.dtypes != "object"].index) #숫자형 독립변수들
print(sample.info()) # 각 컬럼의 데이터 타입을 알 수 있다

 

변수 선택 방법을 통해 불필요한 독립변수들을 제거하는 방법

  1. wrapper방법 : 독립변수를 여러개의 하위집합으로 만들어 각각 모델을 학습 및 평가하여 가장 좋은 성능을 선택
    적용 예시 : https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.RFE.html
  2. filter방법 : 각 독립변수들과 종속변수에 대한 상관관계를 평가하여 선택 (지도학습에서 사용)

*종속변수는 학습시 사용되는 정답값

 

  • Feature Selection: Select a subset of input features from the dataset.
    • 비지도 학습 : 종속변수를 사용하지 않는다 (e.g. remove redundant variables).
      • 독립변수들 간의 상관관계를 이용하여 선택
    • 지도학습 : 종속변수를 사용한다. (e.g. remove irrelevant variables).
      • Wrapper: 독립변수들의 하위집합 중 성능이 좋을 것을 찾는다.
        • RFE
      • Filter: 종속변수와 독립변수의 관계를 기반하여 독립변수 하위 집합을 선택한다.
        • Statistical Methods
        • Feature Importance Methods
      • Intrinsic(Embedded): 학습 중 자동적으로 알고리즘으로 독립변수를 선택한다.
        • Decision Trees
        • Lasso
        • Redge
        • Elastic Net
  • Dimensionality Reduction: 입력데이터를 저차원 공간에 반영(?)
    Dimensionality Reduction의 경우 추가 공부하여 이후 다시 작성할 예정...

위 지도학습 내 Intrinsic(Embedded) 방법에 대해 다른 포스터에서 다시 작성할 예정

 

아래 사진은 독립변수들의 데이터 타입을 나타내는 사진 예시이다.

 

 

 

결론적으로 Feature selection에 대한 정답은 없다. 처음에는 휴리스틱하게 판단한 정보를 가지고 테스트를 하면서 점차적으로 성능을 끌어올리는게 현재까지는 최선의 방법인 것으로 판단된다.

 

참고 사이트 : https://machinelearningmastery.com/feature-selection-with-real-and-categorical-data/

반응형

+ Recent posts