Combining(Cross columns)


  • columns를 결합해서 새로운 column 생성
    • 조합에 사용되는 column에 unique한 값이 너무 많다면 단순히 경우의 수 나열과 똑같아져 의미가 없어짐
    • 따라서 unique한 값이 적은 column끼리 묶어서 새로운 columns를 만들도록 하자
  • → 새로운 특성을 발견 가능
  • wide&deep에서 활용

 

Categorifying


  • 0 ~ n - 1까지의 category로 변경
  • latent vector를 얻는 딥러닝에서 많이 활용
  • 기존 column에 hashing으로 str 값이 입력된 경우 category(int)로 변경하면 데이터를 줄일 수 있음
  • 자주 등장하지 않는 category를 그대로 사용한다면 overfitting이 발생!
    • 자주 등장하지 않는 category를 묶어 다른 값으로 변환
    • 만약 Train set에 없다가 validation set에 갑자기 나온 category도 별도로 묶어서 관리 돼야 함
      • ex) low frequency : 0, unknown : 1로 설정

 

Target Encoding


특정 columns를 기준으로 groupby하여 얻은 값(sum, mean 등등)을 통해서 Encoding

  • 이때, 데이터가 적은 category의 경우 소수의 데이터에 overfitting 발생 → smoothing 필요
    • 데이터가 적은 category는 global mean과 같은 대체 값 사용
    • 데이터가 많은 category는 해당 category의 값을 그대로 사용
  • Encoding 값을 얻는 과정에서 Train 데이터에 overfitting 된다는 단점 → Out of Fold Prediction으로 완화 가능

 

Count Encoding


columns 기준 개수를 세어 Encoding

  • 인기도, 활성도 파악 가능
  • 3가지 방법으로 처리 가능
    1. Train 데이터에서 얻은 값을 Valid 데이터에 사용
    2. Train 데이터와 Valid 데이터에서 따로 구함
    3. Train/Valid를 concat후 얻은 값 활용
    → 실제 서비스에서 활용할 때는 1번이 적합

 

Binning


  • 순서가 있는 범주형 변수 혹은 연속형 변수에 활용
  • values를 단순화하여 overfitting 방지
  • domain knowledge를 활용해 나눌 수 도 있음
  • 상대적인 수치 반영에 효율적 → Standardization 효과
    • 과자가 10만원인 경우와 스마트폰이 10만원인 경우를 다르게 반영할 수 있음

 

Scaling


  • Normalization
    • skewed 데이터의 경우엔 log 변환 후에 사용
  • min-max
    • 0 ~ 1 사이 값으로 표현 가능

Gauss Rank


참고

 

GitHub - rapidsai/deeplearning

Contribute to rapidsai/deeplearning development by creating an account on GitHub.

github.com