분석시각화 대회 코드 공유 게시물은
내용 확인 후
좋아요(투표) 가능합니다.
제주 특산물 가격 예측 AI 경진대회
대회가 끝난뒤 써보는 점수를 올리기 위해 했던 것들
대회가 끝난후 연습 데이터 추가 제출을 위한 복기... 한번 돌릴떄마다 기록으로 남겼어야했는데 안해놔서 기억이 가물가물하다.
사용모델: autogluon의 timeseriespredictor 사용
최초 모델
코드 공유 게시판에 있던 autogluon 모델을 그대로 사용.
시간/공급/가격만 놓고 preset 옵션은 default로 둠 => real score 693점
이후 삽질들
최초모델보다 점수가 좋아진건 딱 1건, 그나마도 1점..
특히 quality를 높여 모델을 추가 + 하이퍼파라미터 튜닝을 진행해도 오히려 점수는 안 좋아진다 ---- 과적합 문제인가?? 이유는 알수없음.
그래서 그냥 데이터를 추가하기보단 데이터를 만지기로 결정.
1.모델부터 재정의했다.
최초모델 + preset default + 품목, 법인, 지역 더미화 + 년월일 더미화 + 요일더미화 + 공휴일 더미화
=> 이걸 쓰기로 결정 왜? 그냥 trade는 별효과 없는것같아서 / preset은 quality를 높여도 시간만 쓰고 점수 향상에는 도움이 안되었다. 그래서 그냥 default로 둔다/ 마찬가지로 window값도 시간 때문에 default / 추가적으로 요일과 공휴일 값을 더미화 시켰다.
2.plot을 먼저그려보기로 결정
감귤 너무나 명확한 추세가 보인다. 제일 잘 예측할거라 생각했는데
RMSE는 감귤이 제일 크다
Best model: WeightedEnsemble
Best model score: -1114.8294
ㄴpredict 후 valid RMSE값을 써놓은것
당근 2020년가격과 2022-2023년가격이 조금 이상한게 보인다.
희미한 빨간선은 나중에 이상치로 판단한 기준이 되는 가격 2600kg원
그리고 2023년부터 다른년도들과 다르게 평균가격이 확 오른게 보인다.
Best model: WeightedEnsemble
Best model score: -243.9298
무
걍 평균값 때려넣어도 괜찮겠다 싶을만큼 평안한 가격추세
빨간선은 이상치 기준이 되는 가격 1500kg원
Best model: WeightedEnsemble
Best model score: -665.4856
양배추
2019년을 제외하고는 가격추세가 잘 안보인다.
가격이 위아래로 요동치는게 보인다.
Best model: WeightedEnsemble
Best model score: -393.0219
브로콜리
추세가 보이느ㄴ..듯? 마는듯? 뭔가있는듯 한데 잘모르겠다
Best model: WeightedEnsemble
Best model score: -517.6120
plot을 통해 유의미한 정보를 뽑아낸것은? / boxplot도있는데 길어서 생략
무와 당근의 가격에서 2022년 하반기부터 어떤 문제가 발생해 가격이 어마어마하게 튀어 오르기시작했다. 는걸 알게되었다.
그중 당근은 2023년에 튀어오른 가격으로 평균값이 오른것이 확인되었다. => 어차피 2023년 3월 가격을 예측하는거니 오른 평균가격을 고려해야할것같다.
무는 가격이 올랐다가 다시 평년수준으로 되돌아왔다. => 다시 되돌아왔으니 2022년 하반기 가격튐은 명백한 이상치..라기보단 예측에 방해되는 요소다.
각 품종의 RMSE값 차이는 무의미하다...(or 크게 의미를 갖지않는다 정도로 해두자.) 왜? => 가격마다 편차정도가 다르니까. 예를들어 귤은 10000원정도의 편차, 다른 품종은 2000~4000정도 편차다 (대충 눈으로 본 편차다. 틀릴수있다.) 당연히 RMSE값도 품종에따라 크게 다를 수밖에 없다. => 그럼이걸 어떻게 해결할 수 있을까??? => 몰라
그럼 튄 값을 잡아 없애버리자! => 빨간선 위의 값들은 supply / price = 0으로 대체 , 나머지는? 모르겠다 눈으로봐선 아무리봐도모르겠다
야 근데 당근은 2023년 가격들의 평균값이 올랐잖아 고려안해? => 몰라 시간없어서 그냥 날렸다.
이상치로 날려버린뒤 제출 값 real score = 685.4314131979 ㅠㅠ 드디어 최초점수 693점보다 유의미하게 좋아졌다.
3.submission 제출된 값을 살펴보자
난 이때서야 알았는데 특정값들이 굉장히 작다는 것을 알게되었다.
빨간값들이 다른날과 안맞게 굉장히 낮다
알고보니 이런 날들이 일요일!
원래 데이터를 찾아보니 일요일마다 직판장이 쉬는지 supply / price = 0 이였다.
=>그래서 2023년 3월 중 일요일의 answer 값을 모두 0으로 대체 하였다.
점수 올리는데 꽤 큰 도움이 되었다.
위의 이상치처리 + 일요일 0값처리 후 제출값
real score = 673.2460327476
오예.. 최초점수 693점에서 20점이나 깎았다.
4. 이제 해봐야할 것들. =>시간이없어서 생각만하고 제출해보진못했다. 제출 횟수좀 늘려주지
=> 다른년도 당근 가격도 비슷하게 scaling up? 해서 학습 해보자
당근 가격이 kg당 2~10원이라니 말이되나? => 원래 데이터 확인 당근은 0인 값이 많다!(boxplot으로도 확인)
=> 비정상적으로 낮은 값들은 원래 데이터 확인 후 0으로 대체
예를들어 위의 CR_E_S = 당근/E법인/S지역의 3월 데이터를 살펴보면
싹다 0임을 알 수 있다.
autogluon은 자동으로 valid set 나눠서 검증한다. 어떻게 나눠서 검증하는지는 모르겠다. 시계열이니까 cross validation은 당연히 아닐것 같은데..
=>근데 어차피 우리가 예측해야하는건 3월4일 ~ 3월 31일 데이터니까. 이것만 잘 맞으면 되는거아냐?
=> autogluon에서 valid set을 내가 직접 만들어서 훈련하는 방법을 찾아보자.
=> 3월달 데이터(or 3월근처 데이터 ex) 2월~4월데이터 ))들만 모아서 학습해보면 어떨까? ->꼼수?같긴한데 잘될지 안될지는 모르는거니까
autogluon의 default 옵션말고 하이퍼파라미터를 직접 튜닝해서 예측해보고싶다! => preset에 best_quality 넣으면 하이퍼파라미터 튜닝도 해준다는데 시간만 잡아먹고 score만 더 구려진다
=> 내가 직접 설정해보자
=> 모델 별 하이퍼파라미터들의 set 설정
=> 2019년 1일1일 ~ 2020년 3월3일까지(train) 파라미터마다 fit 후 predict해서 실제값과 비교해서 RMSE값(valid) 구하기 , 22년까지 fit predict RMSE값 구하기... 반복
=>20년3월4일~31일, 21년3월4일~31일,22년3월4일~31일 RMSE값이 파라미터마다 나올거고 이 평균합?or 합이 가장 작은 파라미터가 최적이라고 생각!
해봐야할 거 결론:
또 고려해볼만한게 있을까? 아직은 잘 모르겠다
데이콘(주) | 대표 김국진 | 699-81-01021
통신판매업 신고번호: 제 2021-서울영등포-1704호
서울특별시 영등포구 은행로 3 익스콘벤처타워 901호
이메일 dacon@dacon.io | 전화번호: 070-4102-0545
Copyright ⓒ DACON Inc. All rights reserved