Target Encoding은 categorical feature의 각 카테고리별 target의 통계값을 활용해 유의미한 선형성을 띄는 continues feature로 바꿔주는 방법으로. 대표적으로 카테로리별 target의 평균값으로 인코딩 하는 mean encoding이 있다. mean encoding은 binary target에 적용될때 bin counting으로 불리기도 한다.
non-order 카테고리중 카테고리가 많아서 one-hot시에 오히려 학습도가 떨어지는 feature를 대상으로 한다.
Smooting
Target encoding은 target 정보를 이용한 feature를 만들기 때문에 data leakage로 인한 overfitting을 야기한다. 그래서 우선 data leakage를 피하기위해 train set을 encoding split과 train split으로 나누어야 한다. 그럼에도 불구하고 여전히 두종류의 문제가 존재한다.
첫번째는 unknown categories다. 모델 학습시에 encoding에 사용되는 split은 train에 사용될 split과 독립이기 때문에 encoding split에는 존재하지 않던 카테고리가 존재할 수 있고 이 경우에 모델은 임의의 값으로 impute 해줄 수 밖에 없다. imputation된 값은 통계적 의미가 없으므로 feature의 중요도가 낮아지게 된다.
두번째 문제는 rare categories다. 만약 카테고리가 데이터셋에 아주 드물게 존재한다면, encoding split에서 수행되는 해당 카테고리의 target에 대한 통계값의 정확도(전체 데이터셋에서의 통계값과 일치하는 정도)는 낮아질 수 밖에 없다. 이런 feature에서는 target encoding의 통계적 의미가 퇴색된다.
이러한 문제들의 해결책으로 제시되는 것이 smooting이다. 그 방법은 카테고리 내의 평균($Avg_{cat}$)과 전체 평균($Avg$)을 섞는 것이다.
$$encoding = weight \times Avg_{cat} + (1-weight) \times Avg$$
$weight$는 $0$과 $1$사이의 값으로 해당 spit에서 카테고리의 빈도를 나타낸다.
가장 쉬운 방법은 m-estimate를 사용하는 것이다.
$$weight = {n \over n+m}$$
여기서 $n$은 spit에서 카테고리가 나온 횟수, $m$은 smoothing factor다.
위의 방법을 활용하면 카테고리의 빈도수가 적을수록 encoding은 전체 카테고리 평균값의 근접하게 된다. 따라서 unknown categories에서는 전체 카테고리 평균값을 impute하면 되고 rare categories도 전체 데이터셋에서 그 encoding의 편차가 줄어들기 때문에 자연스럽게 해결되게 된다.
m-estimate 실습
- 카테고리가 많은 categorical feature가 target encoding에 적합하다.
- unknown categories 와 rare categories를 위해 smoothing 기법을 적용한다.
댓글
댓글 쓰기