2021 농산물 가격예측 AI 경진대회

알고리즘 | 정형 | 회귀 | 농작물 | NMAE

  • moneyIcon 상금 : 2,600만원
  • 2,003명 마감

1. 평가

1차 평가에서 6팀을 선발하여 이들을 대상으로 2차 평가 진행

1차 계량 평가(90%)와 2차 비계량 평가(10%) 점수를 합산하여 최종 순위 결정

① 1차 평가

ⅰ) 평가 산식: NMAE (Normalized Mean Absolute Error)

import numpy as np
import pandas as pd


def nmae(answer_df, submission_df):
    answer = answer_df.iloc[:,1:].to_numpy()
    submission = submission_df.iloc[:,1:].to_numpy()
    target_idx = np.where(answer!=0)
    
    true = answer[target_idx]
    pred = submission[target_idx]
    
    score = np.mean(np.abs(true-pred)/true)
    
    return score


def at_nmae(answer_df, submission_df):
    week_1_answer = answer_df.iloc[0::3]
    week_2_answer = answer_df.iloc[1::3]
    week_4_answer = answer_df.iloc[2::3]
    
    idx_col_nm = answer_df.columns[0]
    week_1_submission = submission_df[submission_df[idx_col_nm].isin(week_1_answer[idx_col_nm])]
    week_2_submission = submission_df[submission_df[idx_col_nm].isin(week_2_answer[idx_col_nm])]
    week_4_submission = submission_df[submission_df[idx_col_nm].isin(week_4_answer[idx_col_nm])]
    
    score1 = nmae(week_1_answer, week_1_submission)
    score2 = nmae(week_2_answer, week_2_submission)
    score4 = nmae(week_4_answer, week_4_submission)
    
    score = (score1+score2+score4)/3
    
    return score

ⅱ) 예측 대상: 21개 품목 및 품종의 1주 후, 2주 후, 4주 후 가격

*대상품목(16): 배추, 무, 양파, 건고추, 마늘, 대파, 얼갈이배추, 양배추, 깻잎, 시금치, 미나리, 당근, 파프리카, 새송이, 팽이버섯, 토마토
*대상품종(5): 청상추, 백다다기, 애호박, 캠벨얼리, 샤인마스캇

ⅲ) 가격 산출 기준 : 전국 도매시장 (총 거래금액)/(총 거래량) (원/kg)

※ 거래 취소내역(음수로 집계)은 미반영

ⅳ) Public Score: Private Score 평가 전에 자신의 모델 성능을 확인해볼 수 있는 점수

  • 예측 대상: 2020년 10월 6일(화) ~ 2020년 11월 12일(목) 기간 내 품목별 1주, 2주, 4주 후 가격
  • 리더보드 업데이트 : 제출 후 실시간 업데이트

ⅴ) Private Score: 최종 점수에 반영되는 Score

  • 예측 대상: 2021년 10월 5일(화) ~ 2021년 11월 11일(목) 기간 내 품목별 1주, 2주, 4주 후 가격
  • 답안 제출 기간: 2021년 9월 28일(화) ~ 2021년 11월 4일(목)
  • 리더보드 업데이트: 2021년 10월 6일(수) ~ 2021년 11월 12일(금) 내 1일 1회 업데이트

※ Private 리더보드 업데이트 시기는 시장 상황에 따라 변동 가능. (일반적으로 가격 자료 수집까지 하루 소요)

※ 답안 제출 기간 동안 매일 자정까지 답안을 제출해야함. API 사용하여 자동화 가능.

ⅵ) 2차 평가 대상 선발: 수상 제외 및 실격 사유에 해당하지 않는 팀 중에서 Private Score가 높은 상위 6팀

ⅶ) 참고 사진:

② 2차 평가

ⅰ) 일시: 2021년 12월 1일(수)

ⅱ) 평가 방식: 온라인 발표 평가

ⅲ) 평가 대상: 1차 평가에서 선발된 6팀

ⅳ) 평가 기준: 과제 이해도, 기술 우수성, 적용 가능성, 부정제출 여부



2. 코드 제출

ⅰ) 제출 대상: 대회 종료 직후 Private 1~10위 팀

ⅱ) 제출물: Private 리더보드 점수를 복원할 수 있는 소스 코드

ⅲ) 제출 메일: dacon@dacon.io

ⅳ) 제출 기간: 2021년 11월 15일(월) ~ 2021년 11월 19일(금)

ⅴ) 코드 검증 기간: 2021년 11월 22일(월) ~ 2021년 11월 26일(금)

※ 코드 미제출시 수상 및 2차 평가 대상에서 제외



3. 개인 또는 팀 참여 규칙

ⅰ) 개인 또는 팀을 이루어 참여 가능

ⅱ) 동일인이 개인 또는 복수팀에 중복하여 등록 불가

ⅲ) 팀 병합 후 해체시 개인 참여 및 팀 등록 불가

ⅳ) 개인 참가 방법: 팀 신청 없이, 자유롭게 제출 창에서 제출 가능

ⅴ) 팀 구성 방법: '팀 페이지' - '팀 구성 안내' 참고

ⅵ) 팀 최대 인원: 5명


4. 외부 데이터 및 사전학습 모델

ⅰ) 예측일 전날 자정까지 확인이 가능한 데이터만 학습 및 추론 과정에서 사용 가능(Data Leakage 관련 토크 게시글 참고)

ⅱ) 공공데이터와 같이 누구나 얻을 수 있고 법적 제약이 없는 외부 데이터 허용(코드 제출시 출처 명시)

ⅲ) 사전학습 모델 사용 가능(코드 제출시 사전학습에 사용된 데이터 명시)

ⅳ) 추천 외부 데이터



5. 유의 사항

  •  사용 가능 언어 : Python, R
  • 최종 순위는 선택된 파일 중에서 채점되므로 참가자는 제출창에서 자신이 최종적으로 채점 받고 싶은 파일을 선택해야 함(최대 2개 선택)
  • 대회 직후 공개되는 Private 랭킹은 최종 순위가 아니며 코드 검증 후 수상자가 결정됨
  • 데이콘은 부정 제출 행위를 금지하고 있으며 데이콘 대회 부정 제출 이력이 있는 경우 평가가 제한됩니다. 자세한 사항은 아래의 링크를 참고해주시기 바랍니다.

https://dacon.io/notice/notice/13



6. 대회문의

  • 대회 운영 및 데이터 이상에 관련된 질문 외에는 답변을 드리지 않고 있습니다. 기타 질문은 토론 페이지를 통해 자유롭게 토론해주시기 바랍니다.
  • 데이콘 답변을 희망하는 경우 [자유게시판] 페이지에 질문을 올려주시기 바랍니다.




대회 주요 일정

  1. 08.30

    대회 시작

  2. 09.21

    팀 병합 마감

  3. 09.28

    private 제출 시작

  4. 11.04

    private 제출 종료

  5. 11.12

    대회 종료

  1. 11.19

    코드 제출 마감

  2. 12.01

    2차 평가

  3. 12.03

    최종 순위 발표

  4. 12.10

    시상식

1. 평가

1차 평가에서 6팀을 선발하여 이들을 대상으로 2차 평가 진행

1차 계량 평가(90%)와 2차 비계량 평가(10%) 점수를 합산하여 최종 순위 결정

① 1차 평가

ⅰ) 평가 산식: NMAE (Normalized Mean Absolute Error)

import numpy as np
import pandas as pd


def nmae(answer_df, submission_df):
    answer = answer_df.iloc[:,1:].to_numpy()
    submission = submission_df.iloc[:,1:].to_numpy()
    target_idx = np.where(answer!=0)
    
    true = answer[target_idx]
    pred = submission[target_idx]
    
    score = np.mean(np.abs(true-pred)/true)
    
    return score


def at_nmae(answer_df, submission_df):
    week_1_answer = answer_df.iloc[0::3]
    week_2_answer = answer_df.iloc[1::3]
    week_4_answer = answer_df.iloc[2::3]
    
    idx_col_nm = answer_df.columns[0]
    week_1_submission = submission_df[submission_df[idx_col_nm].isin(week_1_answer[idx_col_nm])]
    week_2_submission = submission_df[submission_df[idx_col_nm].isin(week_2_answer[idx_col_nm])]
    week_4_submission = submission_df[submission_df[idx_col_nm].isin(week_4_answer[idx_col_nm])]
    
    score1 = nmae(week_1_answer, week_1_submission)
    score2 = nmae(week_2_answer, week_2_submission)
    score4 = nmae(week_4_answer, week_4_submission)
    
    score = (score1+score2+score4)/3
    
    return score

ⅱ) 예측 대상: 21개 품목 및 품종의 1주 후, 2주 후, 4주 후 가격

*대상품목(16): 배추, 무, 양파, 건고추, 마늘, 대파, 얼갈이배추, 양배추, 깻잎, 시금치, 미나리, 당근, 파프리카, 새송이, 팽이버섯, 토마토
*대상품종(5): 청상추, 백다다기, 애호박, 캠벨얼리, 샤인마스캇

ⅲ) 가격 산출 기준 : 전국 도매시장 (총 거래금액)/(총 거래량) (원/kg)

※ 거래 취소내역(음수로 집계)은 미반영

ⅳ) Public Score: Private Score 평가 전에 자신의 모델 성능을 확인해볼 수 있는 점수

  • 예측 대상: 2020년 10월 6일(화) ~ 2020년 11월 12일(목) 기간 내 품목별 1주, 2주, 4주 후 가격
  • 리더보드 업데이트 : 제출 후 실시간 업데이트

ⅴ) Private Score: 최종 점수에 반영되는 Score

  • 예측 대상: 2021년 10월 5일(화) ~ 2021년 11월 11일(목) 기간 내 품목별 1주, 2주, 4주 후 가격
  • 답안 제출 기간: 2021년 9월 28일(화) ~ 2021년 11월 4일(목)
  • 리더보드 업데이트: 2021년 10월 6일(수) ~ 2021년 11월 12일(금) 내 1일 1회 업데이트

※ Private 리더보드 업데이트 시기는 시장 상황에 따라 변동 가능. (일반적으로 가격 자료 수집까지 하루 소요)

※ 답안 제출 기간 동안 매일 자정까지 답안을 제출해야함. API 사용하여 자동화 가능.

ⅵ) 2차 평가 대상 선발: 수상 제외 및 실격 사유에 해당하지 않는 팀 중에서 Private Score가 높은 상위 6팀

ⅶ) 참고 사진:

② 2차 평가

ⅰ) 일시: 2021년 12월 1일(수)

ⅱ) 평가 방식: 온라인 발표 평가

ⅲ) 평가 대상: 1차 평가에서 선발된 6팀

ⅳ) 평가 기준: 과제 이해도, 기술 우수성, 적용 가능성, 부정제출 여부



2. 코드 제출

ⅰ) 제출 대상: 대회 종료 직후 Private 1~10위 팀

ⅱ) 제출물: Private 리더보드 점수를 복원할 수 있는 소스 코드

ⅲ) 제출 메일: dacon@dacon.io

ⅳ) 제출 기간: 2021년 11월 15일(월) ~ 2021년 11월 19일(금)

ⅴ) 코드 검증 기간: 2021년 11월 22일(월) ~ 2021년 11월 26일(금)

※ 코드 미제출시 수상 및 2차 평가 대상에서 제외



3. 개인 또는 팀 참여 규칙

ⅰ) 개인 또는 팀을 이루어 참여 가능

ⅱ) 동일인이 개인 또는 복수팀에 중복하여 등록 불가

ⅲ) 팀 병합 후 해체시 개인 참여 및 팀 등록 불가

ⅳ) 개인 참가 방법: 팀 신청 없이, 자유롭게 제출 창에서 제출 가능

ⅴ) 팀 구성 방법: '팀 페이지' - '팀 구성 안내' 참고

ⅵ) 팀 최대 인원: 5명


4. 외부 데이터 및 사전학습 모델

ⅰ) 예측일 전날 자정까지 확인이 가능한 데이터만 학습 및 추론 과정에서 사용 가능(Data Leakage 관련 토크 게시글 참고)

ⅱ) 공공데이터와 같이 누구나 얻을 수 있고 법적 제약이 없는 외부 데이터 허용(코드 제출시 출처 명시)

ⅲ) 사전학습 모델 사용 가능(코드 제출시 사전학습에 사용된 데이터 명시)

ⅳ) 추천 외부 데이터



5. 유의 사항

  •  사용 가능 언어 : Python, R
  • 최종 순위는 선택된 파일 중에서 채점되므로 참가자는 제출창에서 자신이 최종적으로 채점 받고 싶은 파일을 선택해야 함(최대 2개 선택)
  • 대회 직후 공개되는 Private 랭킹은 최종 순위가 아니며 코드 검증 후 수상자가 결정됨
  • 데이콘은 부정 제출 행위를 금지하고 있으며 데이콘 대회 부정 제출 이력이 있는 경우 평가가 제한됩니다. 자세한 사항은 아래의 링크를 참고해주시기 바랍니다.

https://dacon.io/notice/notice/13



6. 대회문의

  • 대회 운영 및 데이터 이상에 관련된 질문 외에는 답변을 드리지 않고 있습니다. 기타 질문은 토론 페이지를 통해 자유롭게 토론해주시기 바랍니다.
  • 데이콘 답변을 희망하는 경우 [자유게시판] 페이지에 질문을 올려주시기 바랍니다.




대회 주요 일정

  1. 08.30

    대회 시작
  2. 09.21

    팀 병합 마감
  3. 09.28

    private 제출 시작
  4. 11.04

    private 제출 종료
  5. 11.12

    대회 종료
  6. 11.19

    코드 제출 마감
  7. 12.01

    2차 평가
  8. 12.03

    최종 순위 발표
  9. 12.10

    시상식