데이콘 해커톤 도전기 | DAKER 커뮤니티

오늘은 새 모델 발표가 아닙니다. 스터디 팀이 데이콘 두 대회를 고른 이유와, 손글씨 숫자 이미지에서 회전을 40도로 묶은 이유를 발표한 영상입니다.

스터디 팀이 노트북으로 손글씨 숫자 격자를 보며 회전 증강을 40도로 묶는 장면

참고 영상은 4차 산업혁명 동아리 TAVE 채널의 데이콘 경진대회 도전기입니다. 채널 주소는 @4tave712입니다. yt-dlp가 읽은 게시일은 2022년 1월 21일입니다. 길이는 1,002초입니다. 이 글에는 주소만 둡니다. iframe은 넣지 않습니다. 첫 화면의 팀 이름은 데이콘 프로젝트 1팀 김별이뜰입니다. 이름표는 8기 김오성, 김한성, 이승현, 이유진입니다. 자동 자막은 많이 깨집니다. 이 글의 대회 이름과 데이터 규격은 데이콘 공식 페이지를 따릅니다. 발표가 말한 방법만 본문으로 옮깁니다. 자막이 깨진 등수는 이 글에 적지 않습니다.

0부터 9까지 적힌 숫자 격자 연습지

데이콘을 고른 네 가지입니다

팀은 데이터 분석 스터디에서 배운 내용을 실제 대회에 적용하려고 참가 플랫폼을 골랐습니다. 발표가 든 이유는 네 가지입니다. 제출 뒤 리더보드가 바로 돌아와 피드백이 빠릅니다. 코드 공유가 있어 다음 실험을 정하기 쉽습니다. 분야가 다른 데이터를 만날 수 있습니다. 해외 플랫폼과 달리 대회가 우리말로 열려 설명이 바로 읽힙니다. 이 네 가지는 발표의 선택 이유입니다. 모든 팀의 정답이 아닙니다.

오늘 숙제는 플랫폼을 바꾸는 일이 아닙니다. 지금 참가 중인 대회에서 공식 베이스라인 하나를 읽고, 그 다음 실험 하나를 노트에 적는 일입니다.

첫 대회는 손글씨 숫자 분류입니다

발표의 첫 대회는 손 글씨 (숫자) 분류 AI 해커톤입니다. 공식 페이지의 주제는 손글씨 이미지에 적힌 숫자가 0부터 9 중 무엇인지 맞히는 일입니다. 평가는 Accuracy입니다. 주최와 주관은 데이콘입니다. 학습에 쓸 수 있는 데이터는 대회가 준 학습 데이터뿐입니다. 공식 규칙은 주어진 학습 데이터 이외의 데이터, 테스트 데이터를 학습에 쓰는 일, 외부에 공개된 원본 데이터, 사전 학습 모델을 모두 부정행위로 적습니다. 일일 제출은 최대 3회입니다. 마감 기준 참가 완료는 491명입니다. 입문용 베이스라인 코드 2개와 탐색 코드 1개가 제공됩니다.

공식 데이터 설명은 이렇습니다. 학습 이미지는 train0001.png부터 train5000.png까지 5,000장입니다. 학습 표는 train_data.csv이고, 열 이름은 file_namelabel입니다. 테스트 이미지는 idx0001.png부터 idx5000.png까지 5,000장입니다. 데이터 출처는 MNIST입니다. 주소는 yann.lecun.com/exdb/mnist입니다. Public 점수는 테스트의 20퍼센트, Private 점수는 80퍼센트입니다.

발표가 슬라이드에서 말한 규격은 공식 설명과 맞습니다. 한 장은 28곱하기 28입니다. 채널은 1개입니다. 0부터 9까지 숫자가 각각 500장씩입니다. 이미지를 한 줄로 펼치면 피처는 784개입니다. 팀은 데이콘이 준 베이스라인을 먼저 읽고 전처리를 한 뒤 모델을 골랐습니다.

펼친 벡터가 버린 공간 정보를 합성곱으로 유지했습니다

발표는 먼저 DNN을 설명합니다. 여러 층을 쌓아 레이블을 나누는 방식입니다. 이미지를 한 줄 벡터로 바꿔 넣으면, 이웃 픽셀이 붙어 있던 정보가 빠집니다. 발표는 이 지점을 문제로 말합니다. CNN은 합성곱 층과 풀링 층을 같이 씁니다. 이미지를 펼치지 않고 넣으므로 공간 정보를 유지합니다. 팀은 DNN으로 시작했고, 이후 CNN으로 바꿨습니다.

발표가 맞은 문제는 세 가지입니다. 입력이 고차원입니다. 과적합이 납니다. 연산과 매개변수 수가 큽니다. 해결로 말한 기법은 세 가지입니다. 드롭아웃은 연결된 뉴런을 확률로 꺼서 과적합을 줄입니다. 데이터 증강은 자르고 돌리고 확대해 학습 이미지의 변화를 늘립니다. 다만 숫자 6과 9는 많이 돌리면 서로 뒤집힌 모양이 됩니다. 그래서 회전 범위를 40도로 묶었습니다. 세 번째는 1곱하기 1 합성곱입니다. 합성곱 다음에 풀링만 두지 않고, 1곱하기 1 합성곱을 한 번 더 넣어 차원을 줄입니다. 발표가 말한 숫자는 매개변수 약 13만 개에서 약 8만 개입니다. 줄인 비율은 약 40퍼센트입니다.

발표는 이 대회의 마무리를 상위 10퍼센트로 말했습니다. 자동 자막의 등수 숫자는 깨져 있습니다. 이 글은 그 등수를 새로 만들지 않습니다. 공식 마감 인원 491명을 이 팀의 등수 분모로 바꾸지도 않습니다. 확인된 문장은 상위 10퍼센트입니다.

두 번째 대회는 잡케어 추천입니다

발표의 두 번째 대회는 잡케어 추천 알고리즘 경진대회입니다. 주최는 한국고용정보원입니다. 주관은 데이콘입니다. 목적은 잡케어 서비스에 쓸 수 있는 개인별 맞춤 콘텐츠 추천 모델을 만드는 일입니다. 평가는 Macro F1 score입니다. 마감 기준 참가 완료는 1,651명입니다. 상금은 1,000만 원입니다. 공식 일정은 대회 시작 12월 6일, 팀 병합 마감 1월 21일, 대회 종료 1월 28일, 코드 제출 마감 2월 2일입니다. 영상 게시일은 2022년 1월 21일입니다. 발표 시점에 이 대회는 아직 끝나지 않았습니다. 이 글은 이 팀의 최종 등수를 적지 않습니다.

발표는 12월 22일부터 준비를 시작했다고 말합니다. 전처리와 앙상블을 더 공부할 필요가 있었고, 코드 공유와 데이터 정제가 잘 되어 있어 그 기법을 실행해 볼 수 있겠다고 판단했습니다. 목표는 개인별 맞춤 콘텐츠 추천입니다. 눈에 띈 특징은 학습 데이터의 대부분이 범주형이라는 점입니다. 진행 순서는 전처리, 모델, 앙상블, 결과입니다.

전처리는 속성 코드와 컬럼 이름을 맞추고, 불필요한 열을 빼고, 같은 전처리 함수를 학습과 검증에 각각 적용하는 일이었습니다. 첫 후보 모델은 랜덤 포레스트입니다. 여러 의사결정 나무의 분류를 모아 최종 답을 정합니다. 팀은 그리드 서치로 하이퍼파라미터를 찾았습니다. 발표가 버린 이유는 세 가지입니다. 시간이 많이 들고 점수 변화가 거의 없었습니다. 리스트로 넣어 본 값만 찾기 때문에 범위가 주관적입니다. 열이 범주형이라 예측이 높지 않았습니다.

발표는 범주형 열을 숫자로 바꿀 때 생기는 데이터 누수를 문제로 말합니다. 학습과 테스트에서 같은 범주의 통계가 달라지면, 학습에서 본 평균이 테스트에 그대로 쓰입니다. 그 결과 학습 점수는 높고 테스트 점수는 떨어집니다. 팀이 옮긴 모델은 CatBoost입니다. 발표가 든 이유는 이렇습니다. 트리를 너비 우선으로 키워 연산이 빠릅니다. 순서 있는 타깃 통계로 해당 행을 빼고 통계를 내므로 누수를 줄입니다. 범주형 열을 그대로 넣기 쉽습니다. 조정할 파라미터가 많습니다. 그중 od_wait는 과적합을 감지하고 기다리는 횟수입니다. 발표는 이 값을 500에서 1,000 사이로 두었습니다.

하이퍼파라미터 탐색은 Optuna로 했습니다. 최적화하고 싶은 값을 목적 함수로 두고 범위를 정한 뒤, 검증 점수를 키우는 방향으로 탐색했습니다. 그다음 단계는 OOF입니다. K-fold로 접을 나누고, 접마다 테스트 예측을 만든 뒤 산술 평균을 냅니다. 한 번의 학습 검증 분할보다 접을 나눈 예측을 평균하는 쪽이 더 안정적이라고 말했습니다. 이어서 순열 특성 중요도를 봤습니다. 한 피처의 값을 섞었을 때 점수가 얼마나 떨어지는지로 그 피처의 영향을 봅니다. 발표 시점에는 대회가 끝나지 않아, 더 튜닝할 항목을 메모로 남겼습니다. 이 글은 그 메모를 최종 성적으로 바꾸지 않습니다.

이 글이 아닌 것입니다

DAKER 신규 기능 안내가 아닙니다. 오늘 아침 유튜브 글인 WebMCP 글과도 주제를 합치지 않습니다. 그 글은 페이지가 도구를 등록하는 일입니다. 오늘 원문은 2022년 TAVE 팀이 데이콘 두 대회를 어떻게 풀었는지입니다.

같은 동아리의 다른 코드 공유를 이 팀 성적으로 옮기지 않습니다. 잡케어 게시판의 테이브팀 코드 공유는 public 38위, private 68위를 적습니다. 작성자는 하이투비입니다. 오늘 영상의 팀 이름과 다릅니다. 그 숫자를 이 글의 헤드라인으로 쓰지 않습니다. 손글씨 대회의 공식 마감 491명을 자막의 깨진 숫자와 섞어 등수를 만들지도 않습니다.

없는 정확도와 없는 제출 횟수와 없는 상금 수령을 만들지 않습니다. 잡케어 상금 1,000만 원은 대회 공식 페이지의 총상금입니다. 이 팀이 받았다는 뜻이 아닙니다. 손글씨 대회의 데이콘 후드도 코드 공유 호응 특별상입니다. 이 팀이 받았다고 적지 않습니다.

유튜브 화면을 이 글에 넣지 않습니다. 주소만 둡니다. iframe은 쓰지 않습니다. 자막이 깨진 문장을 그대로 인용하지 않습니다. 확인된 방법 이름과 공식 페이지의 숫자만 남깁니다.

배포가 제출입니다. 올린 링크가 제출입니다. 로컬에서만 맞춘 노트북을 제출로 부르지 마십시오. 리더보드에 올라간 제출 파일이 제출입니다.

오늘 할 일입니다

오늘 범위는 새 대회를 여는 일이 아닙니다. 지금 참가 중인 데이콘 또는 데이커 과제에서 공식 베이스라인 하나를 읽고, 아래 실험 하나를 재현하는 일입니다. 모델 전체를 다시 만들지 않습니다.

한 줄로 줄이면 이렇습니다. 이미지를 한 줄로 펼치기 전에 공간 정보를 남깁니다. 6과 9가 뒤집히지 않게 회전 상한을 정합니다. 범주형 열은 누수가 없는 통계로 넣습니다. 접을 나눈 예측을 평균합니다.

원문: 데이콘 경진대회 도전기 · TAVE · 손 글씨 (숫자) 분류 AI 해커톤 · 잡케어 추천 알고리즘 경진대회