제주 특산물 가격 예측 AI 경진대회

싯가(?) vs 과거 패턴, 그리고 RMSE의 덫

2023.10.31 23:37 2,513 Views

안녕하세요.


과거 모 "수입수산물 가격 예측" 대회에서 "싯가가 가장 중요하다"고 했다가 심사위원에게 "수입 거래에 싯가가 어딧냐"는 핀잔을 들은 적이 있습니다.

있죠. 싯가는 시장 가격이고, 정말 중요합니다.


일반적인 머신러닝 알고리즘은 과거의 패턴으로 미래를 예측하는데, 싯가 반영이 까다롭습니다.

예를 들어, 이 대회 데이터에서 2023년의 당근 가격을 보면 작년에 비해 큰 폭으로 올랐습니다.

현 시점의 가격이 최근 몇 년 중 최고가라면, 현재를 설명할 과거의 정보가 부족하고 예측이 어려워집니다.


'싯가'와 과거의 패턴을 어떻게 조화롭게 풀어낼 것인가가 중요한 포인트가 될 것 같네요.



이 대회의 평가지표는 RMSE입니다.

따로 가중치가 없이 전체 test 데이터에 대해서 한번에 RMSE를 계산하는 것으로 보입니다.

상대적으로 싼 품목은 변동폭도 제약이 많습니다. 반면 비싼 품목은 더 큰 폭으로 움직일 수 있고, RSME에 더 큰 영향을 미칠 수 있습니다.

시간이 부족하다면, 먼저 평균 가격이 상대적으로 높은 품목부터 하나씩 잡아가는 것이 좋아 보입니다.


RMSE에서 또 하나의 문제는 supply=0인 경우입니다.

특히, 꽤 긴 기간 동안 특정 작물, 지역, 법인에서 한 두번 거래한 경우 등이 포함되어 있는데요,

이 것을 어떻게 처리할 것 인가가 중요합니다. 적절한 판단을 해야하고, 보고서에는 그 이유가 논리적으로 설명되어야 할 겁니다.



1,305이 아마도 베이스라인 코드의 점수로 생각됩니다. 리더보드 상 동점자가 매우 많은 구간이더라구요.

train 데이터의 가장 마지막 주의 평균 가격과 평년 동기간의 가격변동을 활용하여 주 단위로 예측해서 제출했더니 840 나왔습니다.

(동일한 조건의 관측치 덩어리의 한 주 예측 값이 모두 동일합니다.)

(약간 처리를 바꿔서 현재 스코어가 832이긴 한데, 큰 차이는 없습니다.)


참고하셔서 좋은 전략 세워보시고, 또 공유도 해주세요:)





로그인이 필요합니다
0 / 1000
율동공원
2023.11.01 00:28

감사합니다. 많은 도움 되었습니다.

제출수늘려주세요
2023.11.01 10:37

feature도 적고 외부데이터도 못쓰고 어렵네요

Statistics
2023.11.01 10:46

참고로 베이스라인으로 제공된 random forest는 사실상 조건부 평균이기 때문에 시가 반영이 사실상 불가능 합니다.
lightgbm이나 xgboost와 같은 boosting 모형을 활용하고 연도와 같은 변수를 추가하면 어느정도 올해의 시세를 반영할 수 있습니다.
베이스라인 코드에서 모형만 바꿔도 스코어 개선이 될 것 같은데요, 시도해보지는 않았습니다.

대회평가 기준을 생각해보면, 추세/trend를 설명할 수 있는 시계열 모형들을 시도해볼 수도 있는데,  모형 설계가 꽤 까다로울 것 같네요.
누군가 해보신분 있으시면 스코어라도 공유해주시면 서로 도움이 될 것 같습니다:)

이세의인공지능
2023.11.01 12:08

basic LSTM 기준 1900점 초반대입니다!

EISLab_이희원
2023.11.01 13:07

DLinear 사용하면 720점 입니다.

Statistics
2023.11.01 14:34

두 분 모두 감사합니다:)
어떤 단위로 데이터를 분할해서 모형을 적합했는가가 중요하겠네요.

참고로 train 데이터 마지막 주차의 조합별 평균 값으로 예측했을 때 RMSE가 1097.66입니다.
일 단위로 바꿔 요일 등의 효과를 반영하고, 시계열 모형이 효과가 있어보이니 최근 변화율 등을 변수로 잡아주면 스코어가 개선될 여지가 있겠네요!

[주 단위 평균] 1097.66  >  [주 단위 평균+주 단위 변화율] 840.10 > [일 단위 평균 혹은 알고리즘 활용]

EISLab_이희원
2023.11.01 15:39

DLinear 모델은 이동평균을 계산하며 학습을 진행하기 때문에,
예상하신 것처럼 변화율을 고려하여 스코어를 개선시킬 수 있습니다.

NN_is_all_you_need
2023.11.01 16:02

챌린저분들의 토론 ㄷㄷ 가슴이 웅장해지네요 ㅎㅎ

데구르르
2023.11.02 02:24

기본 모델은 아닙니다만, GRU 기준 1049 점입니다.

Topdown
2023.11.02 14:00

TimesNet 815점 나오네요

dswook
2023.11.03 16:20

안녕하세요 좋은 글 감사합니다. 그런데 질문 있습니다.
주단위 평균이라는게 주단위로 price를 평균화 해서 모델에 학습했다는 것인가요? 그러면 주단위 평균 price를 X에 넣고 y price를 예측했다는 말씀이신거죠?

Statistics
2023.11.03 23:10

안녕하세요:)
제공된 일단위 데이터를 모두 주 단위로 집계한 다음 모형을 적합했습니다.
y가 주 단위이고, 당연히 x에도 그 주, 전 주의 평균 price 등이 포함되어 있습니다.
y가 주 단위이기 때문에 예측된 결과를 보면 같은 주에 포함된 5개 날짜의 예측 값은 동일합니다.

집계 과정과 나름의 예측 과정에서 신경을 쓰긴했지만, 생각보다 성능이 나쁘지 않습니다ㅎㅎ
저는 이 평균 모형을 baseline으로 잡고 일부 item의 일부 값을 모형 예측값으로 업데이트 하면서 가능성을 옅보고 있는데, 
생각보다 평균값 모형이 특정한 item에 대해서는 꽤 괜찮은 것 같네요!

Pymoon
2023.11.04 16:53

감사합니다!

뤼팽
2023.11.08 17:09

좋은 글 감사합니다.