Agricultural Product Price Prediction AI Contest

Algorithm | Structured | Regression | Crops | RMSE

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. 평가

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. 대회문의

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