반응형

기본적으로 Boosting Tree모델은 하나의 변수를 바라볼 때 수직으로만 볼 수있습니다. 예를들어 몸무게에 따른 당뇨병의 확률을 예측할 때 Boosting Tree모델은 몸무게> 100kg 일 때 당뇨확률이 높다. 몸무게 < 60kg 일 때 당뇨확률이 낮다 정도의 수직분할만 할 수 있습니다. 그렇다면 Boosting 모델이 수직뿐만 아니라 수평적으로 보기 위해서는 어떻게 해야할까요? 바로 Frequency Encoding을 통해 부스팅 모델은 수직분할뿐 아니라 수평분할까지 가능합니다. 아래의 예시를 보겠습니다.

참조 : https://www.kaggle.com/cdeotte/200-magical-models-santander-0-920 

 LGBM은 Var_198에 대한 히스토그램을 볼 때 Var_198 < 13 일때 target = 1일 확률이 높다고 생각합니다. 그리고 Var_198 > 13 일때는 낮다고 생각합니다. LGBM은 기본적으로 Var_198 < 13 인 대상은 target = 0.18, 반대는 0.10이라고 예측합니다.

참조 : https://www.kaggle.com/cdeotte/200-magical-models-santander-0-920 

LGBM은 수직으로 히스토그램을 나눕니다 왜냐하면 LGBM은 수평의 차이는 볼 수 없기 때문입니다. 히스토그램에서 어떤 값은 유일한 값을 가지고, 또 어떤 값은 여러 번 발생합니다. 예를 들어 Var_108의 경우에 어떤 값은 300번 넘게 발생합니다. 왼쪽의 히스토그램은 변수 Var_198의 11.0000<x<11.1000사이의 구간 사이의 값을 count한 그림입니다. 11.0712는 5번 11.0712근처의 값인 11.0720은 한번 발생했다는것을 볼 수 있습니다.

 

참조 : https://www.kaggle.com/cdeotte/200-magical-models-santander-0-920 

Frequency Encoding을 추가했습니다. Var_198에 대해 counts변수를 생성한 후 위에 그림을 다시 그려보면 LGBM이 counts변수를 가질 때 히스토그램을 수직뿐만 아니라 수평적으로 볼 수 있습니다. 이제 counts변수를 통해 LGBM은 Var_198 < 13 AND count=1일 때 target = 0.1로 예측하고 Var_198 < 13 AND count > 1 일때 target = 0.36으로 예측합니다.

이 방법이 AUC를 상승시킵니다.

반응형

'competition' 카테고리의 다른 글

Pseudo Labelling  (0) 2019.11.06
Compare optimizer of efficientNet  (2) 2019.11.06
kaggle Top8% (681th of 8802) 🥉  (0) 2019.10.17
kaggle Top6% (95th of 1836)🥉  (0) 2019.10.17
[kaggle] Adversarial validation part1  (0) 2019.06.11

+ Recent posts