데이콘 두 대회에서 팀이 택한 방법: 손글씨 분류와 잡케어 추천 정리 | DAKER 커뮤니티

대회 후기를 읽을 때 가장 아쉬운 점은 결과만 남고, 왜 그런 선택을 했는지가 빠지는 경우가 많다는 데 있습니다. 이번 글은 2022년 TAVE 팀의 발표 영상을 바탕으로, 데이콘 두 대회를 어떤 기준으로 골랐고 어떤 방식으로 접근했는지를 확인된 내용만 추려 정리한 기록입니다.

특히 손글씨 숫자 분류에서 회전 증강을 40도로 제한한 이유, 잡케어 추천에서 CatBoost와 OOF를 택한 배경처럼 실험의 판단 기준이 비교적 또렷하게 드러납니다. 새 모델 소개가 아니라, 스터디에서 배운 내용을 실제 대회에 옮길 때 무엇을 먼저 봤는지 살펴보는 글입니다.

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

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

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

왜 데이콘이었는가

팀은 데이터 분석 스터디에서 배운 내용을 실제 대회에 적용할 플랫폼으로 데이콘을 골랐습니다. 발표에서 든 이유는 네 가지였습니다. 제출 뒤 리더보드가 바로 돌아와 피드백이 빠르다는 점, 코드 공유가 있어 다음 실험 방향을 잡기 쉽다는 점, 서로 다른 분야의 데이터를 만날 수 있다는 점, 그리고 해외 플랫폼과 달리 대회가 우리말로 열려 설명을 바로 읽을 수 있다는 점입니다.

팀이 데이콘을 고른 이유는 빠른 피드백, 코드 공유, 다양한 데이터, 한국어로 읽히는 대회 설명이었습니다.

이 선택 기준은 발표 팀의 판단이며, 모든 참가자에게 같은 정답으로 제시된 것은 아닙니다.

첫 번째 대회: 손 글씨 숫자 분류 AI 해커톤

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

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

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

이미지를 펼치지 않고 공간 정보를 남기는 쪽으로 갔습니다

발표는 먼저 DNN을 설명합니다. 여러 층을 쌓아 레이블을 분류하는 방식이지만, 이미지를 한 줄 벡터로 바꿔 넣으면 이웃 픽셀이 원래 어떤 위치 관계였는지 정보가 빠집니다. 팀은 이 지점을 문제로 봤고, 이후 CNN으로 방향을 옮겼습니다. CNN은 합성곱 층과 풀링 층을 함께 쓰며 이미지를 펼치지 않고 입력하므로 공간 정보를 유지할 수 있다는 설명입니다.

이미지를 한 줄 벡터로 펼치면 이웃 픽셀의 관계가 사라지기 때문에, 팀은 DNN에서 CNN으로 옮겼습니다.

발표가 짚은 문제는 세 가지였습니다. 입력이 고차원이라는 점, 과적합이 생긴다는 점, 연산량과 매개변수 수가 크다는 점입니다. 해결 방법으로는 드롭아웃, 데이터 증강, 1곱하기 1 합성곱을 들었습니다.

드롭아웃은 연결된 뉴런을 확률적으로 꺼서 과적합을 줄이는 방식으로 설명했습니다. 데이터 증강은 자르기, 회전, 확대처럼 학습 이미지의 변화를 늘리는 방법으로 소개했습니다. 다만 숫자 6과 9는 많이 돌리면 서로 뒤집힌 모양이 될 수 있기 때문에, 회전 범위를 40도로 묶었다고 발표했습니다.

숫자 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였습니다.

범주형 열의 통계를 다룰 때 데이터 누수가 생기면 학습 점수는 높고 테스트 점수는 떨어질 수 있어, 팀은 CatBoost로 옮겼습니다.

발표가 든 CatBoost 선택 이유는 이렇습니다. 트리를 너비 우선으로 키워 연산이 빠르고, 순서 있는 타깃 통계로 해당 행을 빼고 통계를 내므로 누수를 줄일 수 있으며, 범주형 열을 그대로 넣기 쉽다는 점입니다. 조정할 파라미터가 많다는 점도 함께 언급했습니다. 그중 od_wait는 과적합을 감지하고 기다리는 횟수이며, 발표에서는 이 값을 500에서 1,000 사이로 두었다고 말합니다.

탐색은 Optuna, 예측 안정화는 OOF로 진행했습니다

하이퍼파라미터 탐색은 Optuna로 했습니다. 최적화하고 싶은 값을 목적 함수로 두고 범위를 정한 뒤, 검증 점수를 높이는 방향으로 탐색했다는 설명입니다.

그다음 단계는 OOF입니다. K-fold로 접을 나누고, 접마다 테스트 예측을 만든 뒤 산술 평균을 냈습니다. 발표는 한 번의 학습·검증 분할보다 이렇게 접을 나눈 예측을 평균하는 쪽이 더 안정적이라고 말했습니다.

한 번의 분할보다 K-fold로 만든 예측을 평균하는 쪽이 더 안정적이라고 팀은 판단했습니다.

이어 순열 특성 중요도도 확인했습니다. 한 피처의 값을 섞었을 때 점수가 얼마나 떨어지는지로 그 피처의 영향을 보는 방식입니다. 다만 발표 시점에는 대회가 끝나지 않았기 때문에, 이후 더 튜닝할 항목을 메모로 남겼을 뿐 이 글은 그 메모를 최종 성적으로 바꾸지 않습니다.

이 글이 다루지 않는 것들

이 글은 DAKER 신규 기능 안내가 아닙니다. 다른 주제의 글과 합치지도 않습니다. 원문은 2022년 TAVE 팀이 데이콘 두 대회를 어떻게 풀었는지에 관한 발표입니다.

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

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

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

남는 포인트는 무엇인가

이 발표에서 남는 포인트는 거창한 비법보다, 데이터와 평가 방식에 맞춰 기본기를 조정한 과정에 있습니다. 손글씨 분류에서는 이미지를 펼치지 않고 공간 정보를 살리는 쪽으로 갔고, 증강에서는 라벨이 뒤집히지 않도록 회전 상한을 정했습니다. 잡케어 추천에서는 범주형 데이터의 누수를 줄이는 방향으로 모델을 바꾸고, K-fold 기반 평균 예측으로 안정성을 높이려 했습니다.

이미지는 공간 정보를 남기고, 숫자는 라벨이 뒤집히지 않게 증강하며, 범주형 열은 누수를 줄이는 방식으로 다루고, 예측은 접을 나눠 평균하는 것이 이 발표의 핵심입니다.

참고 자료

데이콘 경진대회 도전기
TAVE
손 글씨 (숫자) 분류 AI 해커톤
잡케어 추천 알고리즘 경진대회
http://yann.lecun.com/exdb/mnist/

비슷한 대회를 준비해 보셨다면, 이 팀의 선택 가운데 가장 공감되는 지점은 무엇이었는지 궁금합니다.