데이콘 경진대회 1등 솔루션

다양한 분야의 데이터를 분석하면서 발견하는 데이터 인사이트와 분석 노하우

다양한 분야의 데이터 분석을 통한 데이터 인사이트와 분석 노하우를 소개합니다

금융, 스포츠, 기상, 지구과학 등 다양한 데이터를 가지고 문제를 해결하는 데이콘(https://www.dacon.io/) 경진대회 중 다섯 대회에서 우승한 팀의 솔루션을 소개합니다. 문제 소개부터 시작해, 도메인 분석, 환경 구축, 데이터 탐색, 전처리, 모델 구축과 검증, 앙상블(ensemble)에 이르는 데이터 분석의 전 과정을 꼼꼼하게 살펴볼 수 있습니다.

  • KBO 타자 OPS 예측(김민수1906): 프로야구 선수의 내년 성적(출루율, 장타율) 예측
  • 반도체 박막 두께 분석(Context_KKP): 파이토치를 활용한 반사율 스펙트럼 분석
  • 퇴근시간 버스 승차인원 예측(제주감귤): 교통카드, 날씨, 금융 데이터와 지오코딩 활용
  • 상점 신용카드 매출 예측(DB분석가): 파이썬과 R 언어, 자기회귀누적이동평균(ARIMA) 모델을 활용
  • KBO 외국인 투수 스카우팅 최적화(TNT): 팬그래프와 KBO 데이터를 활용해 투수의 제구력을 평가

 

도서 소개 이미지

김민수1906 팀

일산 지역 데이터 분석 스터디 모임에서 경진대회 참가를 위해 만들어진 팀이다. 연세대학교 정보대학원 비즈니스 빅데이터 트랙 석사과정 김민수, 경북대학교 통계학과 서동진으로 구성하고 있다. 머신러닝, 딥러닝 등을 함께 공부하며 여러 경진대회에 참가하고 있다.

Context_KKP 팀

딥러닝 모델은 흔히 ‘블랙박스’라고 표현이 되는데, ‘입력에 대한 블랙박스의 출력은 어떻게 나오는 것일까?’에 대한 궁금증을 해소하기 위해 맥락(context)을 공부하자는 의미로 팀 이름을 정했다. 서로 처음 알게 되었을 때는 각자 직장인, 대학원생으로 직업이 달랐지만 지금은 3명 모두 대학원생으로 학업에 집중하며 간간히 대회에도 참여하고 있다.

DB분석가 팀

데이터 사이언스에 흥미를 느끼던 경영학도 2명이 실전 빅데이터를 경험하며 성장하기 위해 결성한 팀이다. 상점 신용카드 매출 예측 경진대회에서 1등을 했으며 데이콘 공공데이터 활용 온도 추정 AI경진대회에서 6위에 올랐다.

제주감귤 팀

국민대학교 빅데이터경영통계전공 학생들로 이뤄진 팀이다. 통계적 지식과 경영학적 인사이트를 기반으로 데이터 분석을 하고 있다. 데이터 분석을 통해 더 나은 세상을 만들고자 한다.

TNT 팀

성균관대학교 교내 데이터 분석 학회인 TNT(Train and Test)의 회원으로 구성된 팀이다. 각기 다른 전공생끼리 모여 여러 도메인의 문제 해결을 위해 데이터 분석 및 인공지능 기법을 적용하는 것을 목표로 한다. (https://skku-tnt.github.io/)

  • ▣ 01장: KBO 타자 OPS 예측
    • 1.1 문제 정의
      • 1.1.1 경진대회 소개
      • 1.1.2 평가척도
      • 1.1.3 도메인 조사
      • 1.1.4 문제 해결을 위한 접근 방식 소개
      • 1.1.5 분석환경 구축
    • 1.2 탐색적 데이터 분석
      • 1.2.1 프리시즌 데이터 분석
      • 1.2.2 정규시즌 데이터 분석
      • 1.2.3 일별 데이터 분석
      • 1.2.4 탐색적 데이터 분석 요약
    • 1.3 데이터 전처리
      • 1.3.1 결측치 처리 및 데이터 오류 처리
      • 1.3.2 규정 타수 정의
      • 1.3.3 시간변수
      • 시간 반영 함수 정의와 변수 생성
      • 변수 선택 & 시간 범위
      • 1.3.4 추가 변수 생성
      • 1.3.5 데이터 사후 처리
      • 1.3.6 SLG 데이터 전처리
    • 1.4 모델 구축과 검증
      • 1.4.1 데이터 분할
      • 1.4.2 모델 선택
      • 릿지와 라쏘
      • 랜덤 포레스트
      • XGBoost(eXtra Gradient Boost)
      • 알고리즘별 성능 비교
      • 1.4.3 결과 해석 및 평가
      • 랜덤 포레스트
      • 라쏘와 릿지 회귀 모델
    • 1.5 성능 향상을 위한 방법
      • 1.5.1 앙상블
      • 1.5.2 단순화된 모델 생성
      • 1.5.3 테스트 데이터 정제
      • OBP
      • SLG
      • 1.5.4 반발계수의 변화
    • 1.6 정리
    •  
  • ▣ 02장: 반도체 박막 두께 분석
    • 2.1 문제 정의
      • 2.1.1 경진대회 소개
      • 2.1.2 평가척도
      • 2.1.3 문제 해결을 위한 접근 방식
      • 2.1.4 분석환경 구축
    • 2.2 탐색적 데이터 분석
      • 2.2.1 데이터 분석 및 통계
      • 연속형, 수치형 데이터
      • 데이터 기초 통계
      • 데이터 시각화
    • 2.3 데이터 전처리
      • 2.3.1 결측치 처리
      • 2.3.2 데이터 파이프라인
      • 2.3.3 커스텀 데이터 클래스
    • 2.4 모델 구축과 검증
      • 2.4.1 모델 탐색
      • 회귀 문제에 대한 머신러닝 모델
      • 회귀 문제에 대한 신경망 모델
      • 2.4.2 신경망 모델 구축
      • 모델 소개
      • 베이스라인 모델 및 대표 모델
      • 모델 레이어 구성 살펴보기
      • 2.4.3 모델 검증
    • 2.5 성능 향상을 위한 방법
      • 2.5.1 정규화 기법 적용하기
      • 2.5.2 추가 실험하기
      • 옵티마이저 및 스케줄러 조정
      • 하이퍼파라미터(배치 크기, 은닉층 노드 개수, 레이어 구성 조정)
      • 2.5.3 앙상블
    • 2.6 정리
    •  
  • ▣ 03장: 퇴근시간 버스 승차인원 예측
    • 3.1 문제 정의
      • 3.1.1 경진대회 소개
      • 3.1.2 평가척도
      • 3.1.3 문제 해결을 위한 접근 방식 소개
      • 주의할 점
      • 3.1.4 분석환경 구축
      • 데이콘 데이터 내려받기
      • 깃허브에서 데이터 내려받기
      • 라이브러리 설치
    • 3.2 탐색적 데이터 분석
      • 데이터 경로 설정
      • 3.2.1 데이터 설명
      • train.csv와 test.csv
      • bus_bts.csv
      • jeju_financial_life_data.csv
      • weather.csv
      • rain.csv
      • 3.2.2 데이터 시각화를 통한 탐색적 데이터 분석
      • 타깃 변수 분포 확인하기
      • 단일 변수에 따른 타깃 변수의 변화
      • 요일에 따른 퇴근시간 평균 탑승객 수
      • 버스 종류에 따른 탑승객 수
      • 일별 출퇴근 시간 탑승객 수
    • 3.3 데이터 전처리
      • 3.3.1 내부 데이터를 통한 변수 생성
      • 탐색적 데이터 분석을 통한 변수
      • 도메인 조사를 통한 변수
      • 시간대를 활용한 변수
      • bus_bts를 활용한 변수
      • 좌표를 활용한 변수
      • 3.3.2 외부 데이터를 통한 변수 생성
      • 날씨를 활용한 변수
      • jeju_financial_life_data를 활용한 변수
      • 3.3.3 라벨 인코딩과 원핫 인코딩 변수
      • 라벨 인코딩 변수
      • 원핫 인코딩 변수
      • 3.3.4 전체 변수 정리
    • 3.4 모델 구축과 검증
      • 3.4.1 머신러닝 모델
      • 배깅 방식 앙상블 모델
      • 부스팅 방식 앙상블 모델
      • 3.4.2 모델 검증
      • 교차검증
      • 3.4.3 변수 선택
      • 최종 데이터 구축
      • 그리드 탐색
      • 임의탐색
      • 3.4.5 최종 모델 구축
      • 주 모델 선택
      • 최종 모델 구축
    • 3.5 성능 향상을 위한 방법
      • 3.5.1 submission 간 앙상블
      • 결괏값 간 상관계수 확인
      • 여러 가지 앙상블 기법
    • 3.6 정리
    •  
  • ▣ 04장: 상점 신용카드 매출 예측
    • 4.1 문제 정의
      • 4.1.1 경진대회 소개
      • 4.1.2 평가척도
      • 4.1.3 대회 관련 사전 조사
      • 4.1.4 문제 해결을 위한 접근 방식 소개
      • 데이터 살펴보기
      • 데이터의 노이즈
      • 분석 방향
      • 4.1.5 분석환경 구축
      • 아나콘다 가상환경 구축
      • 주피터 노트북 설치
      • rpy2(파이썬에서 R 객체 사용)
      • pmdarima(시계열 분석)
      • statsmodels(통계 분석)
      • seaborn, tqdm 패키지 설치
      • 주피터 노트북에 가상환경 커널 추가하기
    • 4.2 데이터 전처리
      • 4.2.1 노이즈 제거
      • 4.2.2 다운 샘플링
      • 4.2.3 날짜 지정 범위 생성과 시리즈 객체 변환
    • 4.3 탐색적 데이터 분석
      • 4.3.1 상점별 매출 특성
      • 계절성이 있는 상점
      • 추세가 있는 상점
      • 휴업 중인 상점
      • 4.3.2 시계열 데이터의 정상성
      • ADF-Test
    • 4.4 모델 구축과 검증
      • 4.4.1 파이썬에서 R 시계열 패키지 forecast를 통한 모델링
      • 4.4.2 시계열 모델 선택과 검증
      • 자기회귀누적이동평균 모델
      • 지수평활법
      • STL 분해를 적용한 지수평활법
    • 4.5 성능 향상을 위한 방법
      • 4.5.1 상점 매출액의 로그 정규화
      • 4.5.2 파이썬에서 R 시계열 패키지 forecastHybrid를 통한 앙상블
    •  
  • ▣ 05장: KBO 외국인 투수 스카우팅 최적화
    • 5.1 문제 정의
      • 5.1.1 경진대회 소개
      • 5.1.2 평가척도
      • 5.1.3 도메인 조사
      • 5.1.4 문제 해결을 위한 접근 방식 소개
      • 5.1.5 분석환경 구축
    • 5.2 탐색적 데이터 분석
      • 5.2.1 KBO/팬그래프 데이터에 기록된 야구 지표 분석
      • 5.2.2 스탯캐스트 데이터에 기록된 야구 지표 분석
    • 5.3 데이터 전처리
      • 5.3.1 가설을 확인하기 위한 투수 집단 선정하기
      • 5.3.2 유효한 데이터 선정하기
    • 5.4 모델 구축과 검증
      • 5.4.1 선형회귀분석
      • 5.4.2 아웃 확률 추정하기
    • 5.5 성능 향상을 위한 방법
      • 5.5.1 볼 배합 지표
      • 5.5.2 배럴 타구 허용 비율
    • 5.6 정리
    •  
  • ▣ 06장: 부록
    • A.1 아나콘다 다운로드와 설치
      • A.1.1 아나콘다 다운로드
      • A.1.2 아나콘다 설치
    • A.2 파이썬 패키지 확인과 추가 설치
      • A.2.1 아나콘다 프롬프트 실행
      • A.2.2 기본 설치된 패키지 확인
      • A.2.3 파이썬 패키지 추가 설치
    • A.3 장별 실습에 필요한 패키지를 일괄 설치
      • A.3.1 requirements.txt를 사용해 패키지를 일괄 설치
      • A.3.2 environment.yml로 가상 환경을 구성하고 패키지를 일괄 설치
    • A.4 주피터 노트북
      • A.4.1 주피터 노트북 시작
      • A.4.2 주피터 노트북 사용
      • A.4.3 주피터 노트북 종료