머신러닝-피처 엔지니어링의 종류

전재원·2022년 11월 10일
1

피처(Featrue)란?

데이터를 설명하고 예측을 수행하는 데 사용되는 입력 변수.
피처들은 일반적으로 수치이나, 그래프와 같은 자료 구조적인 피처들도 있다.

피처 엔지니어링(Feature Engineering)이란?

데이터는 값의 형태에 따라 수치형 데이터와 범주형 데이터로 구분할 수 있다. 이때 우리가 해결하고자 하는 문제를 컴퓨터가 잘 이해할 수 있도록 피처(변수)들의 형태를 변형하거나 적절하게 처리하는 과정을 피처 엔지니어링(Feature Engineering)이라고 한다.

피처 엔지니어링의 종류

1. Scaling

1) 스케일링이란?

서로 다른 변수의 값 범위를 일정한 수준으로 맞추는 작업.
트리기반 모델은 피처 스케일링이 필요가 없다. 트리기반 모델은 데이터의 상대적인 크기에 영향을 받기 때문에 스케일링을 해도 크게 영향을 받지 않는다.
스케일링의 방법으로 표준화(Standardization)과 정규화(Normalization)이 있다.

2) 스케일링의 종류

① Standardization-Normalization (Z-score scaling)

  • 공식 : z = (X - X.mean) / std
  • 정의 : 평균을 제거하고 데이터를 단위 분산에 맞게 조정하는 스케일링
  • 특징 : 평균이 0, 표준편차가 1로 나온다
  • 단점 : 이상치에 민감하다
  • 사이킷 런 코드
from sklearn.preprocessing import StandardScaler

※ StandardScaler와 Normalizer는 평균값을 빼주고 편차로 나눠준다는 점에서 동일한 공식을 사용하지만, 다른 기법은 열(피쳐, 또는 속성) 기반 연산을 하는 반면 Normalizer는 행 기반으로 정규화를 진행!

② Min-Max scaling

  • 공식 : X_scaled = (X - X.min) / (X.max - X.min)
  • 정의 : Feature를 지정된 범위로 확장하여 기능을 변환하는 스케일링
  • 특징 : 최소값이 0 , 최대값이 1로 나온다
  • 단점 : 이상치에 민감하다
  • 사이킷 런 코드
from sklearn.preprocessing import MinMaxScaler

③ Robust scaling

  • 공식 : X_scaled = (X - X.median) / IQR
  • 정의 : 중앙값을 제거하고 분위 수 범위에 따라 데이터 크기를 조정하는 스케일링
  • 특징 : IQR을 기준으로 Scaling을 하고, 중앙값을 0으로 만들어 준다.
  • 장점 : 이상치에 덜 민감하다
  • 사이킷 런 코드
from sklearn.preprocessing import RobustScaler

2. 범주형 변수 인코딩 (Categorical variables Encoding)

1) 범주형 변수란?

몇개의 범주 중 하나에 속하는 값들로 구성된 변수
혈액형, 성별 등 서열이 없는 변수를 비서열 변수,
성적, 직급 등 서열이 있는 변수를 서열 변수라 한다.

2) 범주형 변수 인코딩이란?

컴퓨터가 인식할 수 있도록 문자로 된 데이터를 수치 데이터로 변환해 주는 것
사이킷런은 문자를 입력값으로 처리하지 않아 변환해주어야 함

3) 대표적인 방법

① 레이블 인코딩(Label encoding)

n개의 종류를 가진 값들에 0 ~ (n-1)의 숫자를 부여하는 방법
만족도 조사, 성적 등 주로 순서형 자료에 적합하여 숫자들 사이에서 관계가 존재할 때 사용

  • 코드
from sklearn.preprocessing import LabelEncoder

② 원-핫 인코딩(One-Hot encoding)

변수값들을 1과 0으로 매핑하여 여러 파생 변수로 만든다
변수값만큼 칼럼(columns)이 생기고 그에 따라 학습 속도가 저하될 수 있다
접근 방식에 순서가 없다
고유한 값을 갖는 열을 인코딩 하기에 적합하진 않다

  • 코드
pd.get_dummies(data['label'])
from sklearn.preprocessing import OneHotEncoder

③ 바이너리 인코딩(Binary encoding)

범주형 변수값을 이진법으로 변환해준다
범주형 변수값을 숫자로 변환하고 숫자를 이진법으로 바꾼다
각 자리수에 맞춰 컬럼을 생성해 각 행에 0과 1로 표시한다
원핫 인코딩에 비해 훨씬 적은 개수의 변수가 생성되어 모델 학습 시 속도가 더 빠른 장점이 있다

  • 코드
pd.get_dummies(data['label'])
from sklearn.preprocessing import OneHotEncoder

3. 데이터 바이닝(Data Binning)

1) 데이터 바이닝이란?

데이터 전처리 기법 중 하나로 범주형, 수치형 데이터에 모두 적용 가능하며 구간화로 볼 수 있다
예) 지지율 여론조사 시 20대 지지율, 30대 지지율 등

2) 목적

과적합(overfitting) 완화 및 방지
이상치(outlier)로 인한 문제 완화
결측치(missing value) 처리의 간소화
결과의 해석 용이

4. 로그 변형(Log Transform)

로그를 취해주는 이유

로그를 취해주게 되면 큰 숫자를 작은 숫자로 만들 수 있고 첨도와 왜도가 줄어들어 정규성이 높아져 결과적으로 분석의 정확도를 더 높일 수 있다

profile
농구를 좋아하는 데이터 분석가 지망생

0개의 댓글