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

AutoGluon TimeSeries Model 약 700점

2023.11.12 14:51 4,047 조회 language

사실 지난주부터 계속 바빠지면서, 이번 대회에는 더 이상 집중하기 힘들 것 같네요.
그래서, 제가 테스트하고 있던 모델을 공유합니다.

Autogluon 모델이 시계열 데이터에도 대응할 수 있도록 TimeSeries 모델을 내놓았기에 
이를 사용해 보았습니다. 아직은 베타버전 느낌이 강합니다.
해당 모델의 기본 설정으로 돌리면, Autogluon에서의 validation 점수는 730여점으로 표시되나,
Dacon 에 제출하면 그보다는 높은 점수인 600점 후반에서 700점 초반 점수를 얻을 수 있습니다.

추가적인 튜닝이나, Feature 엔지니어링등을 하시면 좀 더 점수를 받으실수 있을 듯 합니다.
best_preset 으로 하면 validation 점수가 오르는 것처럼 보이나, 실제 제출하면 점수가 떨어지는데
추정이지만, Autogluon이 아직 안정화 되지 않아서 그런것 같습니다.

코드에서 trade 정보를 사용하지 않았으며, 코드에 설명이 거의 없으나 바로 이해하실 듯 합니다.

코드
로그인이 필요합니다
0 / 1000
Data_bari
2023.11.12 18:20

진짜 autogluon 대단하네요....

meister1378
2023.11.12 18:55

제가 사용하고 있는데 파라미터 튜닝 없이 710점 나오네요. 데이터 전처리와 파라미터 조정에서 점수 차이가 있을 것 같네요

토리는댕댕이
2023.11.13 13:35

감사합니다. 데린이 제출이라도 해볼 수 있을 거 같아요.

뎅잉텅엉령웡
2023.11.13 22:48

주피터 노트북에서 error가 뜨는데 추가적으로 다운을 받아야하는 모듈이 있을까요?

basslibrary
2023.11.14 13:15

numpy, pandas, autogluon 만 설치하면 됩니다.
이전에 설치된 다른 라이브러리들과의 충돌 등으로 정상설치혹은 동작을 하지 않는 경우가 있을 수 있으니
파이선 환경을 새로 만들어서 설치해보시기 바랍니다.
혹은 '!pip check' 로 버전이 안맞게 설치된 라이브러리들이 없는지 확인할 수도 있습니다.
PS. 재설치를 해보니, autogluon을 import할때, mxnet을 설치하라는 오류가 발생하네요.
추가 설치해 주시면 됩니다. ( 저는 python 3.9, autogluon 0.8.2 로 설치되어 있습니다. )

김탁구
2023.11.14 16:22

좋은 모델 공유 감사합니다!
제가 이해를 잘 못해서 질문이 있습니다!  ㅠ

1) 해당 모델을 훈련 data로 훈련시킨 후 predict 하는데 왜 test데이터가 아닌 훈련 data로 한번 더 예측하는건가요?

2) 1번 질문과 연관된 질문으로 test data를 모델에 전혀 주지 않았는데 어떻게 pred의 timestamp가 23년 3월을 예측하고 있는 것인가요?

감사합니다!

basslibrary
2023.11.14 16:38

날카로운 질문을 해주셨네요.
1) past covariates:  ['supply(kg)']  항목을 지정했기 때문에 과거 데이터를 지정해 주어야 합니다.
   위의 예는 autogluon이 supply(kg) 항목을 사용하여 예측을 합니다. (모든 모델은 아니고, 일부 모델에서 이를 반영합니다.)
   따라서, train_df 의 데이터 컬럼에서 'supply(kg)' 항목을 제거하면, predict시 data를 지정하지 않아도 될 겁니다.
2) 예측기간을 모델생성할때 인자 값으로 미리 주었습니다. '28', 그래서 28일치가 예측됩니다.
    ( 28일은 autogluon이 모델들을 평가할 때도 사용합니다.)

김탁구
2023.11.14 16:46

상세한 답변 정말 감사합니다!

DM_MSI
2023.11.15 11:06

basslibrary님 덕분에 Autogluon의 위대함을 알게 되었고, 좋은 코드 공유 감사합니다!!

meister1378
2023.11.16 11:05

혹시 파라미터 수정해보셨나요? 다른 모델은 안 그런데 deepAR만 validation 점수가 이상하게 오르락 내리락하네요. validation이 낮게 나와도 실제 점수에는 변동이 없는 것도 좀 이상하네요. 저만 겪고 있는건지 궁금합니다. 

basslibrary
2023.11.16 12:04

기본 설정값으로 예측해야 하는 28일의 바로 직전 28일 하나를 내부 평가지표로 사용하다보니, 모델이 과적화 되는 면이 있습니다. num_val_windows 값을 키우면 과적화해소에 도움이 되는데, 훈련시간은 커지며, 예측일자에서 멀어지는 만큼, 꼭 좋아진다고 볼 수도 없어, 이 부분도 튜닝항목입니다.

ABCDEFEDCBA
2023.11.16 12:46

코드 감사합니다. seed 값을 고정해도 나머지 모델은 스코어가 동일한데, deepar만 스코어가 왔다 갔다 하는데, 혹시 seed값 설정하는게 deepar은 다를까요?

ABCDEFEDCBA
2023.11.16 12:57

메뉴얼 보니. 
(except those trained on GPU because of the non-determinism of GPU operation) 이렇게 적혀 있기는 하네요.. 원래 GPU는 seed가 고정이 안되는 건가요?..

basslibrary
2023.11.16 13:13

저는 같게 나오는 것으로 보았는데, 아마도 CPU로 만 동작했던것 같습니다. GPU seed 고정방법은 별도의 cuda 설정이 있는줄 압니다.
( ex. https://stackoverflow.com/questions/52874480/is-it-possible-make-cuda-deterministic : pytorch의 예 인데, 동작하는지 모르겠네요. )

ABCDEFEDCBA
2023.11.16 21:29

def seed_everything(seed):
    os.environ['PYTHONHASHSEED'] = str(seed)
    random.seed(seed)
    np.random.seed(seed)
    pl.seed_everything(seed)
    mx.random.seed(seed)
    torch.manual_seed(seed)
    torch.cuda.manual_seed(seed)
    torch.cuda.manual_seed_all(seed) 
    torch.backends.cudnn.deterministic = True
    torch.backends.cudnn.benchmark = False
    torch.backends.cudnn.enabled = False


seed_everything(SEED) 

이렇게 하면 일단 고정 되네요.. 도움 감사합니다. 

limen
2023.11.17 15:21

감사합니다. 참고하겠습니다