feature engineering : 분석에 사용할 데이터를 feature vector로 가공하는 작업. 머신러닝 모델 성능에 직접적인 영향을 준다.
•
데이터 마트까지 구성된 데이터를 input vector라고 부릅니다. (row 단위, 정형화된 수치들)
•
이 input vector를 머신러닝 모델에 사용할 feature vector로 바꾸는 작업이 feature engineering입니다.
•
feature vector란 input vector에서 머신러닝 모델이 봐야할 특징(feature)을 정의한 수치값들입니다.
•
feature engineering에 따라 머신러닝 모델의 성능이 굉장히 크게 변할 수 있습니다.
•
feature engineering을 할 때 체크해야하는 사항들을 중점적으로 확인을 해야합니다.
•
feature vector가 표현되는 공간을 feature space라고 합니다.
차원의 저주 (Curse of Dimensionality)
•
차원의 저주 문제는 머신러닝 모델이 고차원 공간에서 데이터의 패턴을 잘 파악하지 못하는 문제를 말합니다.
•
feature space의 차원이 큰 경우, 거리 함수가 제대로 작동하지 않는 문제가 발생합니다.
•
위의 자료는 1차원 공간에서 전체 feature space의 20%를 표현하기 위해서 필요한 데이터가 2, 3차원으로 올라갈 수록 exponentially 커진다는 것을 설명하고 있습니다.
•
그렇기 때문에 모델이 패턴을 파악하기 위해서는 고차원일수록 더 많은 데이터가 필요합니다.
•
반대로 얘기하면, 고차원일 때 충분한 데이터가 없다면 패턴을 파악하기 힘들다는 의미입니다.
•
그래서 머신러닝 모델링을 할 때는 저차원 & 소량의 데이터 or 고차원 & 다량의 데이터를 꼭 확인하는게 좋습니다.
(슬프게도 이것에 대한 정해진 룰은 없으나, 저는 대략적으로 n_rows : n_cols가 100:1은 적어도 되어야한다고 생각합니다.)
상관관계 분석
•
상관관계 분석이란, feature들간의 연관성을 파악하거나, target value와 feature들간의 연관성을 파악하는 것을 말합니다.
•
•
상관계수 는 -1과 1 사이의 값으로 정의되며, 음수인 경우에 “음의 상관관계”를 양수인 경우에 “양의 상관관계”를 가진다고 말합니다.
•
그림을 보면 +1일 때는 완벽한 양의 선형관계를 의미하고, -1일 때는 완벽한 음의 선형관계를 말합니다.
•
즉, 피어슨 상관계수는 두 변수 사이의 선형성(linearity)을 나타내는 지표입니다.
•
여러 feature와 하나의 feature 사이의 관계를 파악하고 싶을 때는, VIF(Variance Inflation Factor)를 사용할 수 있습니다.
피처 추출(feature extraction)
•
input vector의 feature들이 서로 상관성이 강하거나 (이런 경우를 다중공선성(multi-collinearity)을 가진다고 말합니다) feature가 너무 많아서 고차원이 된 경우엔 feature를 줄일 필요가 있습니다.
•
그냥 줄일 수는 없고, 유의미한 feature를 만들어야 하는데 이 때 사용되는 기법들을 feature extraction method라고 합니다.
•
대표적인 기법으로 PCA(Prinicpal Component Analysis), AutoEncoder 등이 있습니다.
•
요즘에는 딥러닝 기법들을 사용하여 임베딩(Embedding) 기법을 사용하기도 합니다.
•
사실 딥러닝 모델이 머신러닝 모델보다 성능이 좋은 경우가 임베딩 성능이 좋아서이기도 합니다.
(이 얘기는 뒤에서 자세히)
범주형 피처 인코딩(Categorical feature Encoding)
•
input vector에는 수치형 데이터(numeric feature)말고도 종류를 나타내는 범주형 데이터(categorical feature)도 있습니다.
•
이러한 categorical feature들은 대부분 문자열(string) 형태로 표현되어 있습니다.
•
문자열로 구성된 categorical feature들을 수치값으로 바꾸어야 feature vector로 표현이 가능합니다.
•
Temperature column을 보면, Hot / Cold / Very Hot / Warm 4가지의 category가 존재합니다.
•
이 4가지의 category를 숫자로 표현하는 방법중에 One-Hot Encoding 이라는 방법을 사용한 예시입니다.
•
One-hot encoding 말고도 Ordinal Encoding, Mean Encoding, Hashing 등의 다른 기법들이 있습니다.
•
원본 데이터의 category가 어떤 의미를 가지고 있느냐에 따라 표현하는 방법을 선택할 수 있습니다.
요약
•
feature engineering을 어떻게 하느냐에 따라 머신러닝 모델의 input이 바뀌기 때문에, 표현된 feature vector가 머신러닝 모델의 성능에 직접적인 영향을 줍니다.
•
feature engineering은 분석가의 직관과 모델의 성능에 따라서 정해집니다.
•
feature engineering을 잘하려면, 데이터에 대한 이해도가 높아야합니다. (EDA / domain knowledge)
•
머신러닝 모델은 고차원 데이터를 파악하기 힘들기 때문에 저차원으로 변환이 되면 좋습니다.
•
상관계수를 사용하거나, 피처 추출 기법을 사용하여 좋은 피처를 만들 수 있습니다.
•
Categorical feature encoding을 해서 종류에 관련된 정보를 좋은 수치로 표현합니다.