Certificate/data analytics-Google

[Machine Learning- PACE] Feature engineering, feature selection, transformation, extraction, log normalization, scaling, encoding, normalization, standardization, ordinal encoding, variable encoding

Olivia-BlackCherry 2023. 7. 31. 14:16

목차

    Feature engineering 

    The process of using practical, statistical, and data science knowledge to select, transform, or extract  characteristics, properties, and attributes from raw data.

    머신러닝 모델은 데이터가 얼마나 좋은지에 따라 훌륭하다고 말할 수도, 아닐 수도 있다. 데이터가 좋다는 것은 이 데이터를 가지고 내가 원하는 결과를 예측할 수 있느냐는 것이다. 많은 데이터가 있다고 좋은 것도 아니다. 좋지 않은 데이터들이 많은 경우에는 노이즈 발생 확률이 더 높아진다. 따라서 feature engineering을 통해 좋은 데이터를 선택하고, 모델에 잘 쓰일 수 있도록 변형하고, 쓸모 있는 것만 추출해내는 과정이 필요하다. 

     

    1) Feature selection

    종속 변수에 가장 기대되는 결과값을 가져다줄 수 있는 데이터를 선정하는 것, 다시 말해 쓸모 있는 것이 아니라면 삭제한다.

     

    일반적으로 feature에는 3가지 타입이 있다. 

    첫째, Predictive feature. 올바른 예측을 하는데 제대로 된 단서가 되는 피처이다.

    둘째, Interactive feature. 혼자서는 별로 도움이 안되지만, 다른 피처들이랑 함께 있을 때 유의미한 작용을 하는 피처이다.

    셋째. Irrelevant feature. 도움이 안되는 피처이다. 

     

    우리는 세번째 Irrelevant feature을 제거해야 한다.

     

    feature selection은 PACE에서 세 단계에서 모두 나타난다. 

    PACE
     Plan
    - Centering the business need
    - Considering the most appropriate machine learning model

    Plan: 문제가 무엇인지 파악하고, 어떤 것을 예측할 지 결정했다면 우리는 피처를 찾아야 한다. 모든 데이터들은 엑셀 파일의 테이블처럼 정형화되어 있지 않다. 엉망진창인 경우도 많고, 피처를 정리하는데만 하루 종일, 일주일, 한 달이 걸릴 수도 있다. 

     

     

    Analyze
    - 데이터에 관해 더 깊게 이해하고, 어떤 모델을 이용하여 결과를 예상할지 생각해야 한다.
    - raw한 데이터를 train data로 활용할 수 있도록 그 형식에 맞게 데이터를 정제한다.
    - 단순 EDA를 넘어서서 머신러닝모델을 만들기 위해, feature engineering( feature selection, transformation, extraction
     feature)을 한다.

     Analyze: EDA를 하면서 어떤 피처를 선택해야 모델링할 때 유리한지 파악했을 것이다. 어떤 피처는 널값이 너무 많거나, 다중공선성의 문제가 있을 수도 있다. 또는 의미를 담는 것이 아니라 그저 ID값을 확인하는 용도에 그치는 피처도 있다. 이 모든 경우의 피처는 모델 성능에 도움이 되지 않으므로 드랍한다.

     

     

    Construct


    -

     Construct: 모델을 빌딩할 때 모델의 성능을 높이기 위해 피처 selection을 포함할 수 있다. 이때 통계학이 사용된다. 여기서의 목적은 가장 효과가 좋으면서도, 가장 작은 단위의  predictive features set을 찾는 것이다. 예를 들어 R2값이 0.94인 60개의 features보다, 0.92인 10개의 feature 세트가 낫다는 것이다. 피처의 개수가 작아질 수록 모델은 단순해진다. 이것은 모델을 안정적이고 이해하기 쉽게 만들어준다. 

     

     

     

     

    2) Feature transformation

    Modifying existing features in a way that improves accuracy when training the model.

    모델을 학습시킬 때 정확도가 향상할 수 있도록 데이터를 수정 및 변형하는 것.

     Construct: PACE 단계 중 데이터를 분석 후, construct에서 feature transformation을 진행한다. feature transformation이란 데이터셋에 있는 원래의 데이터를 모델에 훈련시킬 때 좀더 적절한 모습으로 바꾸는 것이다. 

     

     

    log normalization

    어떤 모델은 한쪽으로 치우친 왜곡된 continuous variable을 다루기 어려울 수도 있다. 이에 대한 해결책으로 log normalization을 진행한다. 이것은 skew를 감소시켜주고 좀더 나은 데이터로 만들어준다. 

     

     scaling

    normalization function을 적용하여 피처의 값 범위를 정규화시킨다. 

    - Normalization 정규화 = MinMaxScaler(사이킷런에서)

     

    아래의 데이터에는 두 개의 피처가 있다. 피처1은 파란색이며 36-209까지의 범위를 갖는다. 피처2는 분홍색이며 72~978의 범위를 갖는다. 두 개의 피처는 다른 스케일을 갖는다. 더 큰 값을 갖는 피처는 모델의 알고리즘에서 더 강한 영향을 미치게 된다. 따라서 두 개의 피처의 스케일을 정규화시켜줄 필요가 있다. 

     

    - Standardization 표준화 = StandardScaler(사이킷런)

    평균은 0, 표준편차는1로 표준화시킨다. 이 방법은 중간의 값이 0이기 때문에 머신러닝 알고리즘에서 매우 유용하다. 아래의 표준화된 분포값은 위의 정규화된 분포값과 퍼저있는 정도가 거의 같다. 다만, 값의 범위가 다를 뿐이다.  

     

     encoding

    - Variable encoding

    대부분의 머신러닝 모델은 string에서 유의미한 발견을 하기가 어렵다. 따라서 string을 number로 바꿔줘야 수학적인 접근이 가능하다.

    인코딩이라는 것은 categorical data를 numerical data로 변환하는 것이다. 이로써 문제를 수학적으로 해석하고 해결할 수 있다. 

     

    주의할 것이 있다. 아래 group의 데이터타입은 int이다. 겉으로 보기에는 숫자처럼 보이지만, 실제로는 categorical한 의미를 갖는 경우이다.

    예를 들어, 아래의 그룹 1,2,3은 여전히 카테고리컬하다. 1,2,3이 누구보다 크고 작은 개념이 아니기 때문이다.

     

    이 같은 경우에는 숫자를 string타입으로 바꾸는 작업부터 시작한다. 그리고 나서 string을 binary한 컬럼으로 바꾼다.

     

    - ordinal encoding

    값이 상속 순서가 있거나, 순위가 있는 경우에 사용한다. discrete value나 ordinal value에서 쓰인다. 예를 들어 온도 컬럼에는 더움, 보통, 추움이 있고 이를 2,1,0이라고 표시한다.

     

     

    3) Feature extraction

    Taking multiple features to create a new one that would improve the accuracy of the algorithm.

    기존에서 새로운 피처들을 만들어 내는 것을 말한다. 새로운 피처는 모델이 예측하는 성능을 한층 끌어올려줄 수 있다. 

     

    예컨데 아래의 경우 왼쪽은 마지막 구매일을, 오른쪽은 마지막 구매일로부터 지난 일 수를 적는다. 같은 내용이지만, 다른 표현 방식으로 적었다. 기존의 피처로 새로운 피처를 만들어 낸 feature extraction의 전형이다. 

     

    여러 개의 variable을 통해 하나의 피처만을 가져올 수도 있다. 왼쪽의 구매일수, 총 구매금액의 두 가지 피처를 가지고, 새로운 구매일 당 구매 금액이라는 하나의 피처를 extraction했다. 

     

     

     

    data분석, 데이터교육, feature engineering