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


카일스쿨 유튜브 채널을 만들었습니다. 데이터 분석, 커리어에 대한 내용을 공유드릴 예정입니다.

PM을 위한 데이터 리터러시 강의를 만들었습니다. 문제 정의, 지표, 실험 설계, 문화 만들기, 로그 설계, 회고 등을 담은 강의입니다

이 글이 도움이 되셨거나 의견이 있으시면 댓글 남겨주셔요.

Buy me a coffeeBuy me a coffee





© 2017. by Seongyun Byeon

Powered by zzsza