Advanced Feature Engineering with Kaggle


Coursera 강의인 How to Win a Data Science Competition: Learn from Top Kaggler, Feature engineering part1, 2를 듣고 정리한 내용입니다

Feautre Engineering

  • Mean encodings
  • Statistics and distance based features
  • Matrix factorizations
  • Feature Interactions
  • t-SNE

Mean encodings


  • Powerful technique!
  • 동의어 : likelihood encoding, target encoding

Concept of mean encoding

  • Mean Encoding
    • Categorical Feature를 기준으로 하여 Target값과 통계적인 연산을 하는 것
    • Median, Mean, Std, Min, Max 등의 Feature 추가
  • Using target to generate features
    • Moscow는 총 5개가 있고, target에 1인 값이 2개라서 0.4
    • Tver는 총 5개 있고, target에 1인 값이 4개라서 0.8
  • 왜 이게 작동하는가?
    • 1) Label encoding은 순서없이 random. target에 대한 correlation이 없음
    • 2) mean encoding은 0부터 1까지로 나뉘어 Target값과 직접적 연관성이 생김
    • 짧은 tree여도 더 나은 loss를 얻음
  • 사용 예시
    • Tree depth를 증가시킬 때, 계속해서 점수가 증가하고 validation score도 같이 증가하면(오버피팅이 아니라는 뜻) Tree model이 분할에 대한 정보가 더 필요한 상황! 이럴 때 Mean Encoding이 사용
      • 오버피팅!
      • 우선 오버피팅을 잘 커버해야 함(정규화 필요)
      • 아래와 같은 데이터여서 오버피팅

Regularization

  • Mean encoding 자체는 유용하지 않을 수 있음. 데이터 정규화 필요
  • Regularization
    • Training data에서 CV loop 돌리기
    • Smoothing(카테고리 수를)
    • Random noise 추가
    • Sorting and calculating expanding mean
  • CV loop
    • Robust하고 직관적
    • 보통 4-5fold를 진행하면 괜찮은 결과
    • LOO같은 극단적 상황을 조심할 필요가 있음
      • 카테고리 수가 너무 작은 경우엔 오버피팅
  • Smoothing
    • 하이퍼 파라미터 : 알파
      • 보통 알파는 카테고리 사이즈와 동일할 때, 신뢰할 수 있음
  • Noise
    • 노이즈가 encoidng의 quality를 저하시킴
    • 얼마나 noise를 추가해야 할까? 고민해야 해서 불안정하고 잘 사용하기 어려움
    • 보통 LOO와 함께 사용됨
  • Expanding mean
    • 보통의 Mean ecnoding은 각 category 변수에 하나의 값으로 나오지만, expanding mean은 uniform하지 않음
    • leak이 적고 catboost에서 많은 성능 향상을 가져옴

Extensions and generalizations

  • Regression and multiclass
    • Regession엔 median, percentiles, std, distribution bins 등을 추가 (통계적 정보)
    • multiclass엔 클래스만큼 다른 encoding. 각 클래스 encoding마다 다른 정보를 제공해 좋은 결과를 예상
  • Many-tomany relations
    • cross product
    • 아래의 예는 APP_id로 나눔
  • Time series
    • Limitation
    • Complicated features
    • Rolling
  • Interactions and numerical features
    • Tree의 상호 작용을 분석
    • Tree Model이 Split할 때 feature1과 feature2 처럼되면 서로 상호작용하! 이런 분할이 많을수록 Mean Encoding시 좋음
    • Feature끼리 합하여 Target Mean Encoding 수행

Statistics and distance based features

  • 1개의 feature를 group by 해서 다양한 통계값을 계산
  • More features
    • How many pages user visited
    • Standard deviation of prices
    • Most visited page
    • Many more..
  • Neighbors
    • Explicit group is not needed
    • More flexible
    • 구현하기 힘듬
    • 집의 개수, 평당 평균 가격, 학교/슈퍼/주차장의 개수, 가까운 지하철 역과 거리

KNN features in Springleaf

  • 모든 변수에 대해 mean encoding
  • 모든 포인트에 2000개의 이웃을 찾음(Bray-Curtis metric 사용)
  • 그 2000개 이웃으로부터 다양한 feature 계산
  • 5, 10, 15, 500, 2000의 Mean target
  • 10개의 가까운 이웃과의 Mean distance
  • Target 1에 대한 10개의 가까운 이웃과 mean distance
  • Target 0에 대한 10개의 가까운 이웃과 mean distance

Matrix factorizations for Feature Extraction

  • 추천 시스템에서 자주 사용하는 matrix factorization으로 feature 생성 가능
  • 위 방법처럼 feature를 혼합해 사용하기도 함
  • PCA 할 때, 전체 데이터를 concat한 후 진행하기!
  • 차원 축소와 feature extraction할 때 유용한 방법
  • 현실의 카테고리컬 feature들을 변경하는 방법

Feature Interactions

  • One Hot 인코딩 후, 각 컬럼별로 곱함
  • 곱, 합, 차, 나누기 등을 사용해 상호작용!

t-SNE

Manifold learning methods

  • 데이터가 갖고 있는 변하지 않는 고유 특성(invariant properties)을 찾는데 사용
  • 데이터 본연의 geometric 특성을 유지하며 고차원의 데이터를 저차원의 공간으로 projection
  • 관련 내용은 ratsgo님의 t-SNE 참고

KNN features implementation

Reference


이 글이 도움이 되셨다면 공감 및 광고 클릭을 부탁드립니다 :)




© 2017. by Seongyun Byeon

Powered by zzsza