1. 다항식(Polynomial) 피처 생성
다항식 피처 생성은 기존의 피처들을 사용하여 그 피처들의 고차항(제곱, 세제곱 등)과 피처 간의 상호작용 항을 추가함으로써 새로운 피처 셋을 만드는 기법입니다.
이 기법을 통해 피처들의 복잡한 패턴과 비선형 관계를 포착할 수 있는 정보를 모델에 제공하는 역할을 하게 됩니다.
2. 다항식(Polynomial) 피처 생성 코드
2.1 데이터셋 불러오기
import pandas as pd
housing_df = pd.read_csv('californial_housing.csv')
display(housing_df.head())
2.2 'HouseAge'(주택연식), 'AveRooms'(평균방객수)와 'target' (주택가격)간의 상관관계
features_analysis = ['HouseAge', 'AveRooms', 'target']
# 상관관계 행렬 계산
correlation_matrix = housing_df[features_analysis].corr()
print(correlation_matrix['target'])
HouseAge 0.127987
AveRooms 0.253044
target 1.000000
Name: target, dtype: float64
2.3 'HouseAge'(주택연식), 'AveRooms'(평균방객수)를 이용한 다항식 feature 생성
: new_HouseAge_AveRooms = HouseAge * AveRooms * AveRooms
housing_df['new_HouseAge_AveRooms'] = housing_df['HouseAge'] * housing_df['AveRooms']* housing_df['AveRooms']
features_analysis = ['HouseAge', 'AveRooms', 'new_HouseAge_AveRooms', 'target']
# 상관관계 행렬 계산
correlation_matrix = housing_df[features_analysis].corr()
print(correlation_matrix['target'])
HouseAge 0.127987
AveRooms 0.253044
new_HouseAge_AveRooms 0.311591
target 1.000000
Name: target, dtype: float64
3. Scikit-learn을 이용한 다항식 피처 생성(PolynomialFeatures 모듈)
3.1 데이터 불러오기
import pandas as pd
train_solar = pd.read_csv('train_solar.csv')
train_solar_type = train_solar.dtypes
display(train_solar.head())
display(train_solar_type)
3.2 PolynomialFeatures 모듈을 이용하여 다항식 피처
- 피처중 'ID' 와 'TARGET'을 제외한 수치형 변수들을, PolynomialFeatures 모듈을 이용하여 다항식 피처를 생성해 봅시다. : 여기서 'degree' 매개변수는 2로 설정하여 변수들 사이의 모든 가능한 2차 조합을 포함하여 피처를 생성하도록 하고, include_bias=False로 설정하여 변환된 피처 set에 상수항(모든 값이 1인 피처)을 추가하지 않도록 합니다
from sklearn.preprocessing import PolynomialFeatures
import numpy as np
train_solar_x = train_solar.drop(['ID', 'TARGET'], axis=1)
poly = PolynomialFeatures(degree=2, include_bias=False)
features_poly = poly.fit_transform(train_solar_x)
features_names = poly.get_feature_names_out(input_features=train_solar_x.columns)
# PolynomialFeatures로 생성된 피처들을 포함하는 새로운 DataFrame 생성
train_solar_poly_df = pd.DataFrame(features_poly, columns=features_names)
display(features_names)
display(train_solar_poly_df.head())
3.3 생성된 피처들의 target과의 상관 관계 분석
train_solar_poly_df['TARGET'] = train_solar['TARGET']
correlation_matrix = train_solar_poly_df.corr()
correlation_matrix['TARGET'].abs().sort_values()
display()
4. 주의사항
생성된 피처들은 기존 변수들과의 상관관계를 분석하여, 모델에 도움이 되지 않거나 과적합을 유발할 수 있는 피처를 식별해야 합니다.
이 과정은 불필요한 피처를 제거하고, 모델의 일반화 능력을 향상시키는데 중요합니다.
따라서, 피처 생성 이후에는 반드시 교차 검증과 같은 성능 검증 절차를 통해 변환된 피처가 모델의 예측 성능에 실제로 긍정적인 영향을 미치는지 검증해야 합니다.
만약 생성된 다항식 피처가 모델 성능을 개선하지 않는다면, 피처 선택 과정을 통해 적절한 피처를 선택하거나, 다른 피처 엔지니어링 기법을 고려해야 합니다.
'머신러닝 > 머신러닝: 심화 내용' 카테고리의 다른 글
피처 선택(Feature Selection) (0) | 2024.12.24 |
---|---|
피처 중요도(Feature Importance) (0) | 2024.12.24 |
피처 생성(Feature Generation) 1 : Binning 기법 (0) | 2024.12.23 |
분류 모델 하이퍼파라미터 튜닝 (0) | 2024.12.22 |
회귀 모델 하이퍼파라미터 튜닝 (0) | 2024.12.20 |