피쳐 관련

  • 지나치게 세분화된 피처를 더 큰 분류로 묶으면 성능이 좋아지는 경우가 있다.

  • test / train 간에 공통된 값이 있어야 한다. 아니라면 피쳐로 쓸 수 없다.

    • train 에 매월 1일부터 19일까지의 데이터가 있다.
    • 20일부터 월말까지의 데이터는 test에 있다.
      • 따라서 일자는 피처로 사용할 수 없다.
    • day 를 피처로 사용하려면 train / test 데이터에 공통된 값이 있어야 하므로.
  • 원핫인코딩은 sparse matrix 를 만든다.

    • 메모리 낭비가 심하므로 행렬 형식을 변환한다.
    • 대표적으로 COO (coordinate list), CSR (compressed sparse row)
    • CSR 이 메모리를 더 적게 쓰면서 연산이 빠름.
  • 경우에 따라 파생피쳐를 생성한다

    • ex1) 하나의 row 가 가진 결측값 개수
    • ex2) 명목형 피처의 고윳값별 개수
  • 앙상블은 성질이 서로 다른, 다양한 모델로 진행되어야 의미가 있다.

  • 피쳐 조합에서, 특정 조합의 판매량이 0이더라도 있는게 낫다.

    • 아예 조합이 데이터에 존재하지 않을 경우 생성한다.
from itertools import product
 
items = [df['col1'].unique(), df['col2'].unique(), df['col3'].unique()] 
all_combinations = list(product(*items))
  • clipping
    • 값을 하한값과 상한값에서 잘라내는 기법
    • 아웃라이어 제어 용도
np.clip(minval, maxval) # minval 미만이면 minval, maxval 이상이면 maxval
np.clip(a, 0, None) # 0보다 작은 값만 0으로 바꾸고, 큰 값은 무제한 허용.
np.clip(a, None, 100) # 100보다 큰 값만 100으로 바꾸고, 작은 값은 무제한 허용