Machine Learning/Machine Learning

[Machine Learning] Feature Engineering

데이터 세상 2022. 11. 1. 12:19

Feature Engineering

모델 정확도를 높이기 위해서 주어진 데이터를 예측 모델의 문제를 잘 표현할 수 있는 features로 변형시키는 과정

  • 머신러닝 모델을 위한 데이터 테이블의 컬럼을 생성하거나 선택하는 작업을 의미
  • 모델 성능에 영향을 많이 미치기 때문에 머신러닝 응용에 있어서 굉장히 중요한 단계
  • 전문성과 시간이 많이 드는 작업

 

머신러닝 알고리즘을 작동하기 위해 데이터의 도메인 지식을 활용해 특징(feature)를 만드는 과정

  • Feature Engineering is a Representation Problem
  • Feature: A valuable attribute for your modeling task

 

Importance of Feature Engineering

  • Better features mean flexibility.
  • Better features mean simpler models.
  • Better features mean better results.

 

Feature Extraction (특징 추출)

The automatic construction of new features from raw data

  • 원본 특징들의 조합으로 새로운 특징을 생성하는 것
  • 고차원의 원본 feature 공간을 저차원의 새로운 feature 공간으로 투영
  • 새롭게 구성된 feature 공간은 보통은 원본 feature 공간의 선형 또는 비선형 결합

 

PCA(Principle Component Analysis)

  • 각 변수(feature)를 하나의 축으로 투영시켯을 때 분산이 가장 큰 축을 첫번째 주성분으로 선택하고 그 다음 큰 축을 두번째 주성분으로 선택하고 데이터를 선형 변환하여 다차원을 축소하는 방법

unsupervised clustering methods

출처: https://velog.io/@guide333/%EC%95%84%EC%9D%B4%ED%9A%A8-Feature-Engineering

 

Dimension Reduction(차원 축소) 

Machine Learning] 차원축소 (Dimensionality Reduction)

관측 데이터를 잘 설명할 수 있는 잠재 공간(latent space) 찾기

  • 관찰 대상들을 잘 설명할 수 있는 잠재 공간(latent space)은 실제 관찰 공간(observation space)보다 작을 수 있다고 하고 이렇게 관찰 공간 위의 샘플들에 기반으로 잠재 공간을 파악하는 것

 

Feature Selection (특징 선택)

From many features to a few that are useful

특징 랭킹(feature ranking) 또는 특징 중요도(feature importance)라고도 함

특징 선택의 목적은 모든 특징의 부분 집합을 선택하거나, 불필요한 특징을 제거하여 간결한 특징 집합을 만드는 것

  • 분석자가 사전의 배경 지식을 이용해서 진행
  • 자동 특징 선택(automatic feature selection methods)을 사용

Decision Tree의 경우는 트리의 상단에 있을수록 중요도가 높음

회귀모델의 경우 forward selection과 backward elimination 같은 알고리즘을 통해 특징을 선택

출처: https://velog.io/@guide333/%EC%95%84%EC%9D%B4%ED%9A%A8-Feature-Engineering

 

Feature Importance

An estimate of the usefulness of a feature

  • Correlation coefficients and other univariate 사용할 수 있음
  • 복잡한 예측 모델의 경우 모델 생성하면서 같이 생성할 수도 있음

 

Feature Construction (특징 구축/생성)

The manual construction of new features from raw data

초기에 주어진 데이터로부터 모델링 성능을 높이는 새로운 특성을 만드는 과정

어렵고 시간이 많이 걸리지만 가장 큰 효과를 얻음

  • 흔히 이 방법을 Feature Engineering이라고 부름
  • 모델의 성능을 높이는 새로운 특성 만들기
  • 데이터 합치기, 쪼개기 등의 작업

 

Feature Learning

The automatic identification and use of features in raw data

autoencoders and restricted Boltzmann machines, an unsupervised/semi-supervised way

 


Feature Engineering Process

다음의 과정을 반복!

 

Brainstorm features

  • 문제확인
  • 많은 데이터 보기
  • 다른 문제들에서 어떻게 feature engineering했는지 보고 필요한 것을 가져옴

Devise features

  • 문제에 따라 automatic feature extraction, manual feature construction 또는 두 개를 섞은 방법을 사용하여 features를 변형

Select features

  • feature importance scorings, feature selection 사용

Evaluate models

  • 선택한 features가 적용된 새 데이터(unseen)에 대한 모델 정확도를 추정

Revise features

  • 필요한 경우 feature 개선

Feature Engineering Techniques

1. Imputation (산입)

데이터 중에 missing value(결측치)를 대체값으로 채움

  • Numeric Imputation: 숫자 컬럼에서는 Default 값(0이나 중앙값)으로 대체
  • Categorical Imputation: 가장 빈번히 나타나는 값으로 채움, 만약 많이 발생한 값이 없다면 'Other'로 대체
  • Random Imputation: 데이터셋에서 임의로 뽑은 값으로 결측치 대체
  • End of Distrivution Imputation: 결측치를 mean + 3*std로 대체

 

missing value(결측치)

  • 머신러닝 모델 성능에 영향을 준다
  • 70% 이상의 결측치가 있는 행과 열은 지워주는 것이 좋다

 

2. Handling Outliers (이상치 처리하기)

outliers 때문에 학습이 왜곡되는 경우가 있어 제거 필요

outliers는 시각적으로 확인 필요

 

표준편차를 이용한 이상치 탐지

  • 표준편차에서 예외적으로 나타내는 값들을 제거
  • 값과 평균까지의 거리 > x*표준편차(x: 2~4 사이의 값)라면 이상치

 

백분위수(percentile)를 이용한 이상치 탐지

  • 특정 percent외에 있는 값들을 삭제(상위 5%, 하위 5% 등)

 

3. Binning (Bin으로 묶기)

통계에서 Bin은 히스토그램의 하나의 막내 정도를 나타냄

근처의 값들을 하나의 범주로 묶게되면 좀 더 Robust한 모델을 얻을 수 있다.

단, 주요 정보를 잃을수도 있기 때문에 얼만큼을 하나의 Bin으로 묶을지 주의해야 한다.

출처: https://velog.io/@guide333/%EC%95%84%EC%9D%B4%ED%9A%A8-Feature-Engineering

categorical / numeric data에 모두 적용 가능

Bininig을 하는 이유는 모델을 더 robust하게 만들고 오버피팅을 방지하기 위함

비용이 비쌈(the trade-off b/w performance and overfitting)

숫자로 이루어진 열의 경우에는 별 필요가 없지만, 범주형 열에는 필요할 수 있다.

  • 예, 100,000개의 열로 구성된 데이터셋의 경우, 100개 이하로 구성된 카테고리들은 하나로 합치는 것이 나을 수 있음

 

4. Log Transform (로그 변형)

한 쪽으로 편향된(skewed) 데이터를 분포가 정규 분포에 가깝에 만들어 주는 것

이상치의 영향을 줄여주고 모델이 보다 robust하게 만들어 준다.

주의: 데이터가 양수로 이루어져야 한다. 때로 1을 더해줄 수도 있다 (log(x+1))

  • 예, 나이와 재산 관계에서, 나이는 1~100까지의 범주를 갖지만, 재산은 0원에서 수조원까지 아주 넓게 분포할 수 있다.
  • 특정 영역(이를 테면 1억원)에 치우쳐 있다면, 그 외의 값들은 왜곡되어 해석될 가능성이 높다.

 

5. One Hot Encoding

텍스트로 된 범주형 데이터를 학습에 이용하기 위해서는 숫자 타입으로 변형 필요

단순 숫자 부여할 경우 순서를 넘어 크기로 인식할 수 있기 때문에,

각각의 데이터를 하나의 컬럼으로 만들고, 해당값이 있는지를 0과 1로 표현하는 것

출처:  https://stackoverflow.com/questions/34104422/one-hot-dummy-encoding-of-categorical-data-in-excel

 

6. Group Operation (그룹 연산)

Tidy

  • 데이터셋의 변수가 열, 관측값이 행으로 이루어진 데이터
  • 조작, 모델링, 시각화가 쉬움

현실에서는 Tidy 데이터가 아닌 경우가 많다.

  • 여행사의 DB의 경우 한 사용자가 여러번의 transaction을 일으킬 수 있음
  • 공자의 센서데이터는 의미없는 유사한 데이터를 지속적으로 발생시킬 수 있음

모든 행들 각각이 하나의 사건 혹은 의미를 담는다면 분석이 용이해진다.

일반적으로 데이터는 변수가 행으로 이루어져 있으므로 변수에 의해 데이터를 그룹화하여 한 행으로 변수가 표현되게 만든다.

그룹화할 때 features의 병합 함수를 사용해야 한다.

  • 예, 숫자로 이루어진 features는 평균과 합으로 그룹화

범주형 데이터의 경우는 pivot 테이블을 이용하거나 one-hot encoding을 한다.

출처: https://towardsdatascience.com/feature-engineering-for-machine-learning-3a5e293a5114

 

7. Feature Split

유용한 방법. 여러 가지 방법이 존재

  • 예, 이름과 성을 따로 분리

 

8. Scaling

대부분의 데이터가 range가 다른기 때문에 scaling을 해주어야 한다.

 

Normalization (min-max normalization)

  • 데이터를 0과 1사이의 값으로 변환
  • 데이터 분포도 변하지 않고 표준 편차가 줄어들어 outlier의 영향이 커질 수 있으므로 이를 미리 제거해야 한다.

 

Standardization (z-score normalization)

  • 데이터마다 range가 다름
  • outlier를 효과적으로 제거해 주지만, 정확히 동일한 척도로 데이터를 만들어 주지는 않는다.

 

9. Extracting Data

날짜를 다른 행으로 분리: 년도, 월, 요일 등

특정 날짜에 대한 feature를 뽑아냄: 주간의 이름(1주, 2주 등) 주말인지 아닌지, 공휴일인지 아닌지

 


References

반응형