동서발전 태양광 발전량 예측 AI 경진대회

알고리즘 | 정형 | 회귀 | 에너지 | NMAE

  • moneyIcon 상금 : 1,600만원
  • 1,564명 마감

1. 참가

  • 대회 참가 시 [개인], [스타트업] 선택, 참가 후 변동 불가
  • 스타트업은 팀명을 ******(주) 또는 (주)******으로 표기 (개인 사업자 불가)
  • Private 평가 종료 후 스타트업 수상 후보는 사업자등록증, 등기부등본, 팀 구성원 건강보험자격득실조회 제출


2. 평가

  • 심사 기준 : NMAE-10(Normalized Mean Absolute Error)
  • Public 평가 :
  • 학습용 제공 데이터를 이용하여 미래 한 달간 발전량 예측 후 평가
  • Private 평가 :
  • 대회 종료 시점부터 30일간 실제 발전량을 하루씩 평가
  • 1일 1회 채점 후 누적 결과 리더보드 반영
  • Private 평가 기간 제출물 업데이트 가능 (※제출 후 선택 파일 확인을 반드시 해주시기 바랍니다.)
import pandas as pd
import numpy as np


def sola_nmae(answer_df, submission_df):
    submission = submission_df[submission_df['time'].isin(answer_df['time'])]
    submission.index = range(submission.shape[0])
    
    # 시간대별 총 발전량
    sum_submission = submission.iloc[:,1:].sum(axis=1)
    sum_answer = answer_df.iloc[:,1:].sum(axis=1)
    
    # 발전소 발전용량
    capacity = {
        'dangjin_floating':1000, # 당진수상태양광 발전용량
        'dangjin_warehouse':700, # 당진자재창고태양광 발전용량
        'dangjin':1000, # 당진태양광 발전용량
        'ulsan':500 # 울산태양광 발전용량
    }
    
    # 총 발전용량
    total_capacity = np.sum(list(capacity.values()))
    
    # 총 발전용량 절대오차
    absolute_error = (sum_answer - sum_submission).abs()
    
    # 발전용량으로 정규화
    absolute_error /= total_capacity
    
    # 총 발전용량의 10% 이상 발전한 데이터 인덱스 추출
    target_idx = sum_answer[sum_answer >= total_capacity * 0.1].index
    
    # NMAE(%)
    nmae = 100 * absolute_error[target_idx].mean()
    
    return nmae


3. 개인 또는 팀 참여 규칙

  • 개인 또는 팀을 이루어 참여할 수 있습니다.
  • 단체 혹은 기관 참여시 별도의 절차가 필요합니다. (More > 공지사항> 게시글 확인)
  • 개인 참가 방법: 팀 신청 없이, 자유롭게 제출 창에서 제출 가능
  • 팀 구성 방법: 팀 페이지(https://www.dacon.io/competitions/official/235720/team/)에서 팀 구성 안내 확인
  • 팀 최대 인원: 5 명

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


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

  • 예측일 전날 자정까지 확인이 가능한 데이터만 학습 및 추론 과정에서 사용 가능

ex) 2021년 6월 11일 예측 -> 2021년 6월 10일 24:00까지 획득 가능한 데이터만 사용

(6월 10일 기상 관측 정보, 6월10일에 예보한 6월 11일 예보 등...)

  • 예측 이전 시점의 데이터만 사용 가능
  • 공공데이터와 같이 누구나 얻을 수 있고 법적 제약이 없는 외부 데이터 허용
  • 사전학습 모델의 경우 사전학습에 사용된 데이터를 명시해야함
  • 대회 진행 중 data leakage 및 규칙 위반 사항이 의심되는 경우 코드 제출 요청을 할 수 있으며 요청 2일 이내 코드 미제출 혹은 외부 데이터 사용이 확인되었을 경우 리더보드 기록 삭제
  • 최종 평가시 외부데이터 및 출처 제출


5. 유의 사항

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


6. 대회문의

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

대회 주요 일정

  1. 04.07

    대회 시작

  2. 05.30

    팀 병합 마감

  3. 06.08

    퍼블릭 평가 종료

  4. 06.10

    프라이빗 평가 시작

  5. 07.09

    프라이빗 평가 종료

  1. 07.14

    코드 제출 마감

  2. 07.23

    최종 순위 발표

1. 참가

  • 대회 참가 시 [개인], [스타트업] 선택, 참가 후 변동 불가
  • 스타트업은 팀명을 ******(주) 또는 (주)******으로 표기 (개인 사업자 불가)
  • Private 평가 종료 후 스타트업 수상 후보는 사업자등록증, 등기부등본, 팀 구성원 건강보험자격득실조회 제출


2. 평가

  • 심사 기준 : NMAE-10(Normalized Mean Absolute Error)
  • Public 평가 :
  • 학습용 제공 데이터를 이용하여 미래 한 달간 발전량 예측 후 평가
  • Private 평가 :
  • 대회 종료 시점부터 30일간 실제 발전량을 하루씩 평가
  • 1일 1회 채점 후 누적 결과 리더보드 반영
  • Private 평가 기간 제출물 업데이트 가능 (※제출 후 선택 파일 확인을 반드시 해주시기 바랍니다.)
import pandas as pd
import numpy as np


def sola_nmae(answer_df, submission_df):
    submission = submission_df[submission_df['time'].isin(answer_df['time'])]
    submission.index = range(submission.shape[0])
    
    # 시간대별 총 발전량
    sum_submission = submission.iloc[:,1:].sum(axis=1)
    sum_answer = answer_df.iloc[:,1:].sum(axis=1)
    
    # 발전소 발전용량
    capacity = {
        'dangjin_floating':1000, # 당진수상태양광 발전용량
        'dangjin_warehouse':700, # 당진자재창고태양광 발전용량
        'dangjin':1000, # 당진태양광 발전용량
        'ulsan':500 # 울산태양광 발전용량
    }
    
    # 총 발전용량
    total_capacity = np.sum(list(capacity.values()))
    
    # 총 발전용량 절대오차
    absolute_error = (sum_answer - sum_submission).abs()
    
    # 발전용량으로 정규화
    absolute_error /= total_capacity
    
    # 총 발전용량의 10% 이상 발전한 데이터 인덱스 추출
    target_idx = sum_answer[sum_answer >= total_capacity * 0.1].index
    
    # NMAE(%)
    nmae = 100 * absolute_error[target_idx].mean()
    
    return nmae


3. 개인 또는 팀 참여 규칙

  • 개인 또는 팀을 이루어 참여할 수 있습니다.
  • 단체 혹은 기관 참여시 별도의 절차가 필요합니다. (More > 공지사항> 게시글 확인)
  • 개인 참가 방법: 팀 신청 없이, 자유롭게 제출 창에서 제출 가능
  • 팀 구성 방법: 팀 페이지(https://www.dacon.io/competitions/official/235720/team/)에서 팀 구성 안내 확인
  • 팀 최대 인원: 5 명

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


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

  • 예측일 전날 자정까지 확인이 가능한 데이터만 학습 및 추론 과정에서 사용 가능

ex) 2021년 6월 11일 예측 -> 2021년 6월 10일 24:00까지 획득 가능한 데이터만 사용

(6월 10일 기상 관측 정보, 6월10일에 예보한 6월 11일 예보 등...)

  • 예측 이전 시점의 데이터만 사용 가능
  • 공공데이터와 같이 누구나 얻을 수 있고 법적 제약이 없는 외부 데이터 허용
  • 사전학습 모델의 경우 사전학습에 사용된 데이터를 명시해야함
  • 대회 진행 중 data leakage 및 규칙 위반 사항이 의심되는 경우 코드 제출 요청을 할 수 있으며 요청 2일 이내 코드 미제출 혹은 외부 데이터 사용이 확인되었을 경우 리더보드 기록 삭제
  • 최종 평가시 외부데이터 및 출처 제출


5. 유의 사항

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


6. 대회문의

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

대회 주요 일정

  1. 04.07

    대회 시작
  2. 05.30

    팀 병합 마감
  3. 06.08

    퍼블릭 평가 종료
  4. 06.10

    프라이빗 평가 시작
  5. 07.09

    프라이빗 평가 종료
  6. 07.14

    코드 제출 마감
  7. 07.23

    최종 순위 발표