이건 데이터과학 수업에서 텀프로 진행한 대회이다.

 

난 데과가 너무 좋기 때문에!!! 정말 열심히 하려고 했다.

LLM이랑 물가 예측 이렇게 두 주제 중에 골라서 프로젝트를 진행하는 것인데, 난 이 주제를 선정했다.

 

https://dacon.io/competitions/official/236381/overview/description

 

데이터·AI를 활용한 물가 예측 경진대회 : 농산물 가격을 중심으로 - DACON

분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.

dacon.io

 

1. 문제정의&데이터

이건 대회에서 해줫다 ㅎ

여러 판매가(공판가, 도매가 등..)을 가지고 미래 이 농산물의 가격을 예측하는 문제.

출처 : 위의 링크(dacon)

 

2. 전처리

이게 전처리를 안 하고 모델만 바꿔서 돌려보니.. 성능이 에바였다.

한 580등이었나? 했다. 점수는 1.2 정도..ㅠ(0에 가까울 수록 좋음!)

그래서 데이터 처리를 해보자는 생각을 했고, 데이터를 보니 각 품목마다 열이 조금씩 달랐다.

품목별로 따로 봐야겠다는 생각을 했다.

 

일단 이상치를 대체하는데, 시계열 데이터에서는 어떤 관측치를 이상치로 판단해야 하나.. 엄청 고민했는데!

잔차 분석을 통해 진행했다.

쿡의 거리, DFBETAS, 표준화잔차 등의 측도를 이용하는 것이다.. 이게 머냐면 간단히 말하면

만약 i번째 관측치를 빼고 모델을 적합시켰을 때랑, i번째 관측치를 포함하고 모델을 적합시켰을 때!

이 둘 중 어떤 모델이 더 성능이 좋은지를 비교한다면? i번째 관측치가 이상치인지 아닌지 판별할 수 있을 것이다.

(참고로, i번째 관측치가 있을 때의 성능이 더 안 좋다면 이상치인 것!)

그리고 이 이상치를 아예 제거해버리기엔 아깝기 때문에, 시계열 데이터이므로 바로 앞뒤 데이터의 평균을 따져서 그 값으로 대체해주었다.

 

이후 '품목별' 변수선택을 진행했다.

이건 단계별 회귀를 진행했다.

단계별 회귀도 간단히 말하자면..

일단 가장 단순한 기본 모델을 만든다. 이건 설명변수가 하나도 포함되지 않은 모델이다.

여기서 설명변수를 하나씩 추가할 거다. X1, X2, X3... 이렇게 모든 설명변수를 한 번씩 포함시켜본다.

그러고 결정계수가 가장 많이 오르는 설명변수를 모델에 넣는다.

근데 이때! 만약 p값이 threshold보다 작다면 안 넣는다. *요건 설명변수 포함시킬 때마다 확인해야 한다.

그리고 설명변수가 하나 포함된 모델이 됐다면, 

이제 또다른 설명변수를 추가하는 단계이다. 이때도 결정계수가 가장 많이 오르는 설명변수를 넣고~ p값을 확인!

이렇게 계속 진행하면 모든 품목마다 영향을 끼치는 설명변수가 다르게 선택이 될 것이다.

 

이렇게 이상치를 제거하고 변수선택을 해보니, 각 품목별로 채택된 설명변수가 평균가격을 얼마나 잘 예측하는지 다중회귀모델을 짜보았을 때 사과를 제외한 모든 품목이 0.93 이상이었다. 즉, 여기서 채택된 설명변수가 각 품목을 93% 설명한다는 뜻이다.

 

이렇게 전처리를 했더니, 원래 1.2 정도였던 score가 바로 0.14를 찍었다!

 

3. 모델

사실 난 모델 부분을.. 안 봤다.

전처리 후, 친구가 GRU 로 돌려보니 성능이 좋아졌다고 해서 GRU로 돌렸다.

근데 이게 짧은 데이터로 하는 거다 보니까 GRU가 좋을 거 같다는 생각에 동의한다!

GRU 8개로 앙상블도 해봤는데, 성능이 별로 좋진 않아서 그냥 간단하게 하나의 GRU로만 했다.

에폭, lr, num_layer도 바꿔보면서 그 중 가장 좋은 것으로 채택했다.

 

모델 부분을 마무리하니 private score가 0.107까지 됐다 ㅎ.ㅎ

 

4. 마무리

약간 아쉬웠던 점은, 위의 변수 선택 후 다중회귀모델을 적합시켰을 때 '사과를 제외하고는' 결정계수가 0.93 이상이었다고 했는데, 사과 품목에서 채택된 변수들의 결정계수를 높이기 위해 데이터 전처리를 더 해볼걸 하는 후회도 있다.

교수님께서 하신 내용을 보니 사과 품목에서 품종을 조금 변형하는 과정을 거치셨던데, 이것이 좀 더 도움이 되지 않을까 한다!

그리고 덧붙여서 이런 농산물 가격에 어떤 항목이 영향을 끼치는지 더 찾아보고 그 열에 가중치를 더 두는.. 방식으로 하는 것도 말씀해주셨는데, 이것도 해보고 싶다.

 

이 텀프는 오늘 끝났다. 발표도 했다 ㅎㅅㅎ 

이 챌린지를 고른 9팀 중에 1등을 했다! 또 대회 public 등수는 29등이라 꽤나 만족스럽다.

요즘 정말 느낀 것이지만, 데이터 전처리가 얼마나 중요한지, 그리고 내가 이 과정을 얼마나 좋아하는지를 알게 됐다.

앞으로 데이콘 대회에도 관심을 가지고 참여해봐야겠다.~~!!

 

'AI > 대회' 카테고리의 다른 글

[DSC 2024 BigData/AI 해커톤] 취준생을 위한  (10) 2024.12.03