오답노트
[DL] pinball loss - Dacon 본문
Pinball loss
- High penalty to underforecast above 50% percentiles
- High penalty to overforecast below 50% percentiles
- 높은 quantile 값에서는 측정된 값이 예측값보다 낮아야 함 >> overforecast 유도
- 반대로 낮은 quantile값에서는 측정된 값이 예측값보다 높아야 함 >> underforecast 유도
τ: 퀀타일 값 (0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9)
y: 실제 값
z: 퀀타일 예측값
Lτ: pinball loss 함수
A Tutorial on Quantile Regression, Quantile Random Forests, and Quantile GBM
The Benefits of Quantile Regression Over OLS
medium.com
데이콘 대회를 진행하면서 발목을 잡았던 부분에 대해서 포스팅하려고한다.
우선 대회의 평가 기준인 pinball loss, quantile loss 에 관한 내용.
위의 글에 따르면 y 는 Dacon 대회 주최측이 갖고 있는 실제 정답값.
z 는 우리가 모델을 만들어 예측한 값.
값이며 우리는 y 에 해당하는 9개의 z 값 (quantile loss 에 따른 0.1~0.9) 을 구해야한다.
quantile loss (이하 퀀타일) 은 수식으로
'L = maximum( (y - z) * tau, (z - y) * (1 - tau) )'
이런 식으로도 표현할 수 있으며 tau 는 위에서 말한 z 이다.
퀀타일이 0이 되는 순간은 y=z 가 되는 순간임을 알 수 있다.
예를 들어, y 값이 1이라고 가정할 때
L = [ L(1, z_1) + L(1, z_2) + L(1, z_3) + L(1, z_4) + L(1, z_5) + L(1, z_6) + L(1, z_7) + L(1, z_8) + L(1, z_9) ] / 9
로 로스값을 예측해낼 수 있다.
예측이 틀린 경우를 알아보면
마찬가지로 실제 정답값이 1, 우리의 모델이 예측한 값은 0.9 이라고 했을 때
y 값이 z 값보다 크기 때문에
L = maximum( (y - z) * tau ) 의 식을 이용하면 된다.
tau = 0.1 | L = (1 - 0.9) * 0.1 = 0.01
tau = 0.2 | L = (1 - 0.9) * 0.2 = 0.02
tau = 0.3 | L = (1 - 0.9) * 0.3 = 0.03
tau = 0.4 | L = (1 - 0.9) * 0.4 = 0.04
tau = 0.5 | L = (1 - 0.9) * 0.5 = 0.05
tau = 0.6 | L = (1 - 0.9) * 0.6 = 0.06
tau = 0.7 | L = (1 - 0.9) * 0.7 = 0.07
tau = 0.8 | L = (1 - 0.9) * 0.8 = 0.08
tau = 0.9 | L = (1 - 0.9) * 0.9 = 0.09
따라서 Loss는 (0.01 + 0.02 + 0.03 + 0.04 + 0.05 + 0.06 + 0.07 + 0.08 + 0.09) / 9 = 0.05
반대로 예측값이 실제값보다 큰 경우,
예를 들면 실제값은 1 이지만 예측값이 1.1 인 경우에는
위의 식과 반대의 식을 사용하면 된다.
tau = 0.1 | L = (1 - 1.1) * (1-0.1) = 0.09
tau = 0.2 | L = (1 - 1.1) * (1-0.2) = 0.08
tau = 0.3 | L = (1 - 1.1) * (1-0.3) = 0.07
tau = 0.4 | L = (1 - 1.1) * (1-0.4) = 0.06
tau = 0.5 | L = (1 - 1.1) * (1-0.5) = 0.05
tau = 0.6 | L = (1 - 1.1) * (1-0.6) = 0.04
tau = 0.7 | L = (1 - 1.1) * (1-0.7) = 0.03
tau = 0.8 | L = (1 - 1.1) * (1-0.8) = 0.02
tau = 0.9 | L = (1 - 1.1) * (1-0.9) = 0.01
따라서 Loss는 (0.01 + 0.02 + 0.03 + 0.04 + 0.05 + 0.06 + 0.07 + 0.08 + 0.09) / 9 = 0.05
이 때 봐야할 것은 실제값과 예측값의 대소 차이에 따라 로스가 유의미하게 바뀐다는 것이다.
대회측에서 제일 먼저 설명한 것과 같이
z > y 일 때 (overforecast) 유리,
z < y 일 때 (underforecast) 유리하다.
출처:dacon.io/competitions/official/235680/talkboard/402223?page=2&dtype=recent&ptype=pub
'머신러닝, 딥러닝' 카테고리의 다른 글
[ML] XGBoost - eval_metric, eval_set, eval_results (0) | 2021.02.02 |
---|---|
[ML] GridSearchCV, RandomizedSearchCV (0) | 2021.01.28 |
[ML] KFold, cross_val_score (0) | 2021.01.28 |
[ML] machine learning - all_estimators (0) | 2021.01.27 |
[DL] Google Colab (0) | 2021.01.26 |