피처 엔지니어링

CHOI CHOI·2024년 6월 27일
0

파이썬 중급

목록 보기
27/30

피처(feature)의 의미와 역할

  • 피처는 머신러닝 모델이 학습하는 데 사용되는 개별 정보의 단위이며, 데이터의 각 컬럼을 의미한다
  • 피처 생성은 머신러닝 모델의 정확도를 향상시키기 위해 원본 데이터에서 새로운 정보를 추출하거나 변환하는 과정이다
  • 머신러닝에서 피처는 모델이 패턴을 학습하고 예측을 수행하는 데 중요한 역할을 하며, 효과적인 피처는 모델의 성능에 큰 영향을 줄 수 있다

피처 생성의 중요성

  • 피처 생성을 통해 모델이 데이터에서 더 많은 패턴을 학습할 수 있게 되어, 모델의 예측 성능이 향상될 수 있다
  • 피처 생성은 원래 데이터에 없던 새로운 정보를 추출하거나 변환함으로서, 모델이 중요한 관계를 더 명확하게 인식하도록 돕는다
  • 좋은 피처 생성은 데이터의 잠재적인 정보를 명확하게 드러내어, 복잡한 모델을 사용하지 않고도 성능을 향상시킬 수 있다

Feature Engineering by Human : 요일 정보 추가

주어진 데이터로 부터 새로운 피처를 생성하는 목적은
1. 모델이 데이터에서 더 많은 패턴을 학습할 수 있기 위해서
2. 데이터의 표현력을 증대시키기 위해서
3. 원래 데이터에 없던 새로운 정보를 추출하기 위해서
4. 데이터의 잠재적인 정보를 드러내기 위해서

from sklearn.preprocessing import LabelEncoder

# 1번은 사람 손으로 만든 feature들을 사용합니다.
X_human = X.copy()

# 요일 정보 추가
week_day = pd.to_datetime(bicycle['date_time']).dt.day_name()

le = LabelEncoder()
le.fit(week_day)
X_human['week_day'] = le.transform(week_day)
X_human.head()

Feature Engineering by Human : 온도 정보 추가

밖이 너무 춥거나, 너무 덥다면 밖에 나가고 싶지 않을 것 -> 따릉이 이용자도 마찬가지로 날씨가 따릉이를 타기에 적절하지 않다면 대중교통이나 택시를 이용할 것

이 인사이트를 바탕으로

  • 일교차가 너무 큰 날씨
  • 너무 덥고 습한 날씨
  • 춥고 바람부는 날씨
    위 3가지 날씨에는 따릉이 이용자 수가 적을것이라는 가정을 세워보자
    : 이 가정이 맞는지 확인하기 위해 어떤 정보들이 필요할까?
# 1. "일교차가 너무 큰 날씨"를 알기 위한 정보
X_human['temp_diff_info'] = X_human['high_temp'] - X_human['low_temp']

# 2. "덥고 습한 날씨"를 알기 위한 정보
X_human['sweat_info'] = X_human['high_temp'] * X_human['humidity']

# 3. "춥고 바람부는 날씨"를 알기 위한 정보
X_human['cold_info'] = X_human['low_temp'] * X_human['wind_speed']

X_human.head()

Feature Engineering by Computer

sklearn등에서 제공하는 자동 feature engineering
단순히 두 변수간의 곱을 추가해준 다음, 성능이 어떻게 변하는지 살펴보자

# 2번은 컴퓨터로 만든 feature들을 사용합니다.
X_computer = X.copy()

col_list = X_computer.columns

# 이중 for문을 사용하여 feature 자기 자신의 제곱과 두 feature간의 곱이라는 새로운 feature를 추가합니다.
for i in range(len(col_list)):
    for j in range(i, len(col_list)):
        X_computer[f'{col_list[i]}*{col_list[j]}'] = X_computer[col_list[i]] * X_computer[col_list[j]]

X_computer.head()

성능을 검증해보면 -> 자동연산을 통한 피처 생성이 성능이 더 좋다

: 왜 이러한 단순 연산에 의한 피처 생성이 어떤 원리로 모델의 성능을 향상시켰을까
자동 연산에 의한 피처 생성이라는 개념은 본질적으로 기계 학습 모델이 데이터의 비선형 관계를 더 잘 이해할 수 있도록 돕는 방법 중 하나입니다. 사이킷런의 PolynomialFeatures 같은 도구를 사용하여 새로운 피처를 생성하는 것은 데이터 내 숨겨진 패턴이나 관계를 모델이 더 잘 포착하게 하려는 시도입니다.

profile
뭐가 됐든 데이터분석가

0개의 댓글