태양광 발전량 예측 AI 경진대회

다들 validation 어떻게 하고 계신가요?

2021.01.10 20:50 5,223 조회

train dataset에서 quantile 별로 target값이 나와있는게 아니라서 제가 validation을 맞게 하고있는건가 의문이드네요...

저는 GradientBoostingRegressor 모델을 만들고 quantile이 0.5일 때만 예측을 진행했습니다. 제가 구현한 pinball loss 함수에

quantile 값으로 0.5, 실제 타겟값과 예측값을 넣어서 loss값을 평균냈습니다.

다른 quantile에 대해서는 어떻게 해야할지 감이 안잡히네요... 다른분들은 어떻게 진행하셨나요?

로그인이 필요합니다
0 / 1000
Statistics
2021.01.10 22:11

대부분 기성품을 쓰고 있을 거에요.
lightgbm이나 deep learning에서 distribution을 "quantile"로 지정할 수 있고, 0.1부터 0.9까지 분위수를 alpha값으로 지정하면 pinball loss를 활용하는 것으로 알고 있습니다.
quantile 0.5로 잡는 것은 활용하시는 도구의 함수에서 distribution을 "laplace"로 지정하신 건가요?

활용하는 도구의 모형 적합 함수에서 "custom metric"같은 옵션이 없다면 직접 구현하는 것이 쉽지는 않을 거에요.
custom metric이 있으면 다른 글에서 여러 참가자들이 말해준 max( )를 활용한 함수를 지정하면 되겠지만, 
그렇지 않으면 boosting의 매 과정에서 개입해야할거라서 사실상 불가능하다고 생각합니다. 

도전해보는 것도 좋지만 구글링으로 이미 만들어진 도구를 더 살펴보시는걸 추천드립니다.

Seungwoo Kim
2021.01.11 07:40

감사합니다!

고라파덕
2021.01.11 10:31

0.5만 하시면 사실상 MAE를 계산하신 것과 동일합니다.
0.1, 0.2, .... 0.9 까지 각각 quantile에 대해서 loss값을 평균 내시면 됩니다.

결론적으로 예측한 모든 값에 대해서 quantile 0.1~0.9까지 loss값을 구하신 뒤 모든 값을 평균 내시면됩니다.
예를 들어 2일에 대한 예측을 하면 48*9개 값이 있는데 이 값들에 대해서 대응되는 quantile_loss(alpha)를 계산 하신후
모든값의 평균을 내시면 됩니다.

Seungwoo Kim
2021.01.12 06:54

정리해주셔서 감사합니다