| 분류 | 머신러닝에서 예제를 모아 둔 구조화된 자료 묶음[1] |
|---|---|
| 구성 요소 | 입력 데이터(특징)와 선택적 목표값(레이블 또는 응답)[1] |
| 기본 분할 | 학습·검증·테스트 데이터[2] [3] |
| 대표 예시 | Iris(150행), MNIST, ImageNet, Common Crawl[1] |
| 주요 저장 형식 | CSV, JSON/JSONL, Parquet, Apache Arrow, TFRecord, HDF5[4] |
| 대표 공유 카탈로그 | Hugging Face Hub(2026년 8월 기준 약 98만 3천 개 데이터셋)[5] |
쉽게 말하면, 데이터셋은 플래시카드가 가득 든 커다란 상자와 같다. 각 카드 앞면에는 질문(특징, 예를 들어 동물 사진이나 문장)이 있고 뒷면에는 정답(레이블, 예를 들어 '고양이'나 '행복')이 있다. 컴퓨터는 대부분의 카드로 공부하고(학습 데이터), 공부하는 동안 작은 묶음으로 문제를 풀어 보며(검증 데이터), 마지막에는 한 번도 본 적 없는 카드 묶음(테스트 데이터)으로 실제로 얼마나 배웠는지 확인한다. 공부할 때 마지막 묶음을 미리 엿보게 하면 실전에서는 무너지므로, 사람들은 상자를 나누는 방식을 조심스럽게 정한다.[1]
1. 개요
머신러닝에서 데이터셋(dataset)은 모델을 맞추고(fit), 조정하고(tune), 평가하는 데 쓰는 예제들의 구조화된 모음이다. 각 예제는 입력 데이터(특징)와 선택적 목표값(레이블 또는 응답)을 짝지어 담는다. 데이터셋은 입문 통계 수업에서 쓰는 150행짜리 Iris 파일부터 현대 언어 모델 뒤에 있는 수 테라바이트 규모의 웹 크롤까지 크기가 다양하다. 보통 학습·검증·테스트 세 부분으로 나눠, 한 부분으로 학습하고 모델이 한 번도 보지 않은 데이터로 성능을 잰다. 거의 모든 머신러닝 결과의 신뢰도는 데이터셋을 어떻게 만들고 기록하고 나누었는지에 달려 있으며, 분할 사이의 누출은 실서비스에서 측정 정확도가 무너지는 가장 흔한 원인 중 하나다.[1]
데이터셋이라는 말은 느슨하게 쓰인다. 때로는 CSV 파일 하나를, 때로는 MNIST처럼 레이블이 붙은 벤치마크를, 때로는 공개 웹에서 긁어 모은 원시 텍스트 말뭉치를 가리킨다. 이 문서는 데이터셋을 일반 개념으로 다룬다. Hugging Face의 datasets 라이브러리는 대규모 데이터를 불러오고 처리하기 위해 Apache Arrow 위에 만든 파이썬 패키지다.[1]
2. 구조
가장 기본적인 수준에서 데이터셋은 표다. 행은 예제(샘플, 인스턴스, 레코드라고도 함)이고, 열은 특징(속성, 변수라고도 함)이며, 하나 이상의 열이 모델이 맞히도록 배우는 목표가 된다. scikit-learn 등 대부분의 교육 자료를 따라, 특징 행렬은 X, 레이블 벡터는 y로 표기하는 것이 관례다.[1]
- 수치 특징: 나이나 픽셀 밝기처럼 연속 또는 이산 숫자를 담는다.
- 범주형 특징: 국가나 상품 코드처럼 이산 라벨을 담으며, 원-핫 벡터나 학습된 임베딩으로 인코딩하는 경우가 많다.
- 텍스트 특징: 학습 전에 토크나이저로 처리할 수 있는 토큰 열이다.
- 이미지 특징: 보통 (높이, 너비, 채널) 형태의 픽셀 값 배열이다.
- 오디오 특징: 파형이나 스펙트로그램이다.
- 시계열 특징: 타임스탬프 인덱스를 가진 순서가 있는 열이다.[1]
실제 데이터셋은 여러 형식을 섞는 경우가 많다. 예를 들어 상품 카탈로그는 숫자형 가격 열, 범주형 브랜드 열, 짧은 설명 텍스트, 상품 사진을 함께 가질 수 있다. 멀티모달 모델은 같은 행이 같은 상품을 가리키도록 모달리티를 정확히 맞춘 데이터셋에 의존한다.[1]
3. 학습·검증·테스트 분할
데이터셋 하나를 통째로 쓰는 경우는 드물다. 새 입력에도 일반화되는 모델을 만들기 위해 실무자들은 데이터 분할을 통해 역할이 다른 세 부분집합을 만든다. 아래 표는 각 부분의 일반적인 비율과 용도를 요약한 것이다.[2][3]
| 구분 | 일반적 비율 | 용도 |
|---|---|---|
| 학습 데이터 | 60~80% | 경사 하강법 등 최적화 방법으로 모델 매개변수를 맞추는 데 쓴다.[2] [3] |
| 검증 데이터 | 10~20% | 개발 중 하이퍼파라미터를 조정하고 구조를 고르며, 조기 종료로 과적합을 찾는 데 쓴다.[2] [3] |
| 테스트 데이터 | 10~20% | 프로젝트 끝에 한 번만 써서, 선택한 모델이 새 데이터에서 어떻게 작동할지 추정한다.[2] [3] |
비율은 관례일 뿐 규칙이 아니다. 매우 큰 데이터셋에서는 테스트 세트가 상대적으로 작아도 수만 개의 예제를 담을 수 있다. 작은 데이터셋에서는 평가용으로 30%를 떼어 두면 학습 신호를 너무 많이 버릴 수 있어, 연구자들은 흔히 k-폴드 교차 검증을 쓴다. 데이터를 k개의 겹으로 나누고, 매번 k-1개 겹으로 모델을 학습하는 과정을 k번 반복해 성능을 평균낸다. scikit-learn은 이런 방식을 위해 train_test_split과 KFold 도구를 제공한다.[6][1]
용어는 제각각이다. 일부 논문은 검증 세트를 'dev set'이라 부르고, 일부 커뮤니티는 '테스트'라는 말을 프로젝트 끝에 한 번만 평가하는 별도 벤치마크에만 쓴다.[1]
4. 데이터 누출과 오염
분할은 제대로 하기 어렵다. 데이터 누출은 학습 세트 바깥의 정보, 특히 테스트 세트의 정보가 학습 중에 모델에 새어 들어가는 것이다.[7] 흔한 패턴은 두 가지다. 하나는 타깃 누출로, 특징이 정답을 드러내는 경우다(예: 결과가 확정된 뒤에야 채워지는 열). 다른 하나는 학습-테스트 오염으로, 특징 스케일링, 결측치 대체, 특징 선택 같은 전처리를 분할 전에 전체 데이터셋에 맞추는 경우다. 정규화에 쓰는 평균과 표준편차는 학습 부분에서만 가져와야 한다.[1]
누출은 개발 중 측정 성능을 부풀리고 실서비스에서는 무너뜨린다. scikit-learn 문서는 이를 이 분야의 가장 흔한 함정 중 하나로 지적하고, 교차 검증 폴드 안에서 전처리를 함께 맞추는 파이프라인을 권장한다.[6] 시계열에서는 시간 순서를 지켜 나눠야 하며, 과거를 예측할 때 미래 데이터를 보면 안 된다.[1]
대규모 언어 모델에서 관련된 위험은 벤치마크 오염이다. 평가 문제가 사전 학습 말뭉치에 들어 있는 것이다. Common Crawl처럼 웹 규모의 말뭉치는 많은 공개 벤치마크와 겹치기 때문에, 학습 전 오염 제거 필터링이 표준 절차가 되었다.[1]
5. 저장 파일 형식
데이터셋은 크기, 속도, 도구 지원을 기준으로 고른 여러 형식으로 저장된다. 주요 형식은 아래 표와 같다.[4]
| 형식 | 출처 | 장점 | 전형적 용도 |
|---|---|---|---|
| CSV | 일반 텍스트, 수십 년 된 형식 | 사람이 읽기 쉽고 어떤 도구로도 열림 | 작은 표 형식 데이터, 교육, 공유[4] |
| JSON / JSONL | 웹 표준 | 스키마가 없어 확장이 쉬움 | 한 줄이 예제 하나인 자연어 처리 데이터셋[4] |
| Parquet | Apache 재단, 열 단위 저장 | 압축, 일부 열만 읽기, 빠른 스캔 | 대용량 표 데이터와 분석 작업[4] |
| Apache Arrow / Feather | Apache 재단, 메모리 내 열 단위 | 복사 없는 읽기, 메모리 매핑 | 언어 간 데이터 교환, Hugging Face 캐시[4] |
| TFRecord | Google, 프로토콜 버퍼 | 스트리밍 가능한 샤드, TensorFlow에 기본 지원 | 대규모 이미지·오디오 파이프라인[4] |
| HDF5 | NCSA, 계층형 이진 | 고차원 배열을 한 파일에 저장 | 과학 데이터, 대용량 이미지 스택[4] |
| WebDataset | tar 기반 | 객체 스토리지에서 스트리밍, 샤드 구조와 잘 맞음 | 웹 규모 비전·오디오 학습[4] |
CSV는 텍스트라 어디서나 열리기 때문에 여전히 널리 쓰이지만, 스키마가 없고 기본적으로 압축되지 않으며 대규모에서는 파싱이 느리다는 실질적 한계가 있다. Parquet은 값을 열 단위로 저장해 리더가 필요 없는 열을 건너뛰고 열마다 효율적으로 압축할 수 있게 한다. TFRecord는 예제를 직렬화된 프로토콜 버퍼로 묶고 샤딩을 지원하며, 여러 학습 워커가 같은 데이터를 병렬로 읽을 때 중요하다.[1]
HDF5는 표 형태에 맞지 않는 고차원 배열을 다루는 과학 계산에서 널리 쓰이지만, 동시 읽기에서 잘 알려진 문제가 있다.[4] Apache Arrow는 부분적으로 이런 문제를 해결하려고 설계되었다.[8] Hugging Face datasets 라이브러리는 디스크 캐시를 Arrow 테이블로 저장하며, 이 덕분에 거대한 파일을 메모리 매핑하고 전부 RAM에 올리지 않고도 GPU에 무작위 샘플을 전달할 수 있다.[1]
6. 데이터의 출처
1987년 박사과정 학생 David Aha가 FTP 아카이브로 만든 UCI 머신러닝 저장소는 Iris, Wine, Adult Census 같은 고전 벤치마크를 거의 40년 동안 보관해 왔다. 2026년 8월 기준 이곳에는 689개의 데이터셋이 등록되어 있으며, 이는 2024년과 같은 수치다. 교육용 예제를 찾을 때 기본으로 가는 곳이기도 하다.[1][9]
Kaggle은 2010년 경쟁 플랫폼으로 출발했고, 지금은 사용자, 정부, 기업이 기여한 공개 데이터셋의 큰 카탈로그를 운영한다. 실제 산업 문제 중 다수는 Kaggle 대회를 통해 처음 넓은 청중에게 알려진다.[1]
Hugging Face Hub는 현대 NLP, 비전, 오디오 데이터셋의 사실상 공유 계층이 되었다. 각 데이터셋에는 출처, 라이선스, 알려진 편향을 설명하는 README 기반 데이터셋 카드가 함께 붙는다.[10] Hub에는 2025년 중반 기준 공개 데이터셋이 45만 개를 넘었고, 2026년 중에 73만 개를 넘었으며, 2026년 8월 기준 약 98만 3천 개가 등록되어 있다. 머신러닝 데이터셋의 단일 카탈로그로는 가장 큰 규모다.[5]
TensorFlow Datasets와 torchvision.datasets는 한 줄의 코드로 일반적인 벤치마크를 내려받고 검증하며 분할하는 큐레이션 카탈로그를 제공해, 연구실 사이의 재현 결과를 일관되게 유지하도록 돕는다.[1]
data.gov, EU 오픈 데이터, 국가 통계청 같은 정부 공개 데이터 포털과 Zenodo, Figshare 같은 학술 아카이브도 연구 논문에서 쓰이는 데이터셋을 담고 있으며, 흔히 영구 DOI가 붙어 있다.[1]
7. 대표 데이터셋
분야를 형성하는 데 기여해 계속 인용되는 데이터셋이 몇 있다. 1994년 무렵 얀 르쿤(Yann LeCun), 코리나 코르테스(Corinna Cortes), 크리스토퍼 버지스(Christopher Burges)가 기존 NIST 자료를 바탕으로 만든 MNIST는 손글씨 숫자 이미지 학습용 6만 장과 테스트용 1만 장을 담고 있으며, 해상도는 28×28 회색조다.[11] 숫자는 20×20 상자 안에 크기가 정규화되고, 28×28 영역 안에서 질량 중심 기준으로 가운데 정렬되었다. 이 전처리 방식은 원본 MNIST 페이지에 기록되어 있다.[11] 약 20년 동안 숫자 인식의 기본 벤치마크였다.[1]
CIFAR-10과 CIFAR-100은 2009년 알렉스 크리제프스키(Alex Krizhevsky), 비노드 네어(Vinod Nair), 제프리 힌턴(Geoffrey Hinton)이 80 Million Tiny Images 컬렉션의 레이블 붙은 부분집합으로 발표했다.[12] CIFAR-10은 10개 클래스에 걸친 32×32 컬러 이미지 6만 장을 담고, CIFAR-100은 같은 총량을 100개 클래스로 나누며 이를 20개 상위 클래스로 묶는다.[13] 이들은 MNIST와 더 어려운 자연 이미지 벤치마크를 잇는 역할을 했다.[1]
페이페이 리(Fei-Fei Li)가 2006년에 구상하고 2008~2010년에 약 4만 9천 명의 Mechanical Turk 작업자의 도움을 받아 레이블을 붙인 ImageNet은 WordNet 계층 아래 21,841개 synset에 걸쳐 약 1,400만 장의 이미지를 담는다.[14] ImageNet Large Scale Visual Recognition Challenge는 2010년부터 2017년까지 1,000개 클래스 부분집합으로 열렸다.[14] 2012년 결과에서 AlexNet은 top-5 오류율을 15.3%로 낮춰, 2위의 26.2%보다 크게 앞섰다. 이 결과는 흔히 딥러닝 시대의 시작으로 꼽힌다.[15]
Gil Elbaz가 2007년에 설립한 Common Crawl은 공개 웹의 월간 스냅숏을 발행하며, 각 스냅숏은 보통 약 20억~25억 페이지를 담는다. 2023년까지 누적 30억 페이지가 넘게 수집했다.[16] Common Crawl은 Anthropic, OpenAI, Google DeepMind 등의 대규모 언어 모델 뒤에 있는 주요 원시 말뭉치 중 하나다. 보통 강한 필터링을 거친 뒤 C4나 RefinedWeb 같은 큐레이션 부분집합과 함께 쓰인다. 2024년 Mozilla 재단의 연구에 따르면 2019년부터 2023년 사이에 공개된 대규모 언어 모델 47개 가운데 최소 64%가 Common Crawl의 필터링 버전으로 학습되었다.[17]
그 밖에 자주 인용되는 데이터셋으로는 질의응답용 SQuAD, 객체 탐지용 COCO, 음성 인식용 LibriSpeech, 오픈 언어 모델 사전 학습용 The Pile과 RedPajama가 있다.[1]
8. 전처리와 특징 공학
원시 데이터셋이 곧바로 모델에 들어가는 경우는 드물다. 전처리는 결측치를 정리하고, 중복을 제거하며, 범주형 변수를 인코딩하고, 수치 특징의 스케일을 조정한다. 특징 공학은 예측 과제를 쉽게 만드는 새 열을 만드는 일이다. 예를 들어 타임스탬프에서 시각을 뽑거나, 위도와 경도를 합쳐 도시 군집으로 만든다.[1]
딥러닝에서는 전처리 로직이 대개 학습 파이프라인에 내장되어 실행 중에 돌아간다. 토큰화, 이미지 증강(무작위 자르기, 뒤집기, 색상 흔들기(color jitter)), mixup이 전형적인 단계다. 각 변환은 재현 가능해야 하며, 같은 무작위 시드에서는 같은 입력이 같은 출력을 내야 한다.[1]
9. 버전 관리와 재현성
1년 뒤 결과의 재현성을 확보하려면 같은 코드, 같은 모델 가중치, 같은 데이터가 필요하다. 코드는 Git에 두고, 가중치는 아티팩트 저장소에 두지만, 데이터는 Git에 두기 어렵다. 너무 크거나 새 예제가 들어오면서 바뀔 수 있기 때문이다. DVC(Data Version Control), Git LFS, lakeFS 같은 도구는 각 데이터셋 버전의 해시를 Git에 추적하고 실제 파일은 클라우드나 로컬 객체 저장소에 두어 이 문제를 푼다. DVC의 dvc.yaml과 dvc.lock 파일은 어떤 원데이터와 어떤 파이프라인이 특정 실험을 만들었는지 기록하므로, 동료가 dvc repro를 실행해 결과물을 재생성할 수 있다.[1][18]
문서화도 재현성의 별도 축이다. Datasheets for Datasets 틀은 2018년 Gebru 등이 제안했고 2021년 12월 Communications of the ACM에 실렸으며, 데이터셋의 출처, 의도된 용도, 수집 과정, 알려진 한계에 관한 표준화된 질문을 제시했다.[19] 저자들은 전자 산업의 부품 데이터시트에 빗대어, 모든 데이터셋에 동기, 구성, 수집 과정, 권장 용도를 기록한 데이터시트를 붙여야 한다고 주장했다.[19] Hugging Face 데이터셋 카드도 같은 생각을 바탕으로 하며, 각 공개 데이터셋은 내용, 분할, 라이선스, 윤리적 고려 사항을 담은 README를 함께 두도록 되어 있다.[1] Yang, Liang, Zou의 연구(ICLR 2024)는 Hugging Face의 데이터셋 카드 7,433개 전체를 대규모로 분석해, 문서 품질이 크게 차이 나며 다운로드가 많은 상위 100개 데이터셋 중 86.0%가 모든 절을 채운 반면 롱테일로 갈수록 채움률이 급격히 떨어진다고 밝혔다.[20]
10. Hugging Face datasets 라이브러리
datasets 파이썬 패키지(흔히 huggingface/datasets로 불림)는 현대 AI 데이터셋을 가장 널리 쓰는 로더다. load_dataset("glue", "sst2") 같은 한 번의 호출로 Hub의 공개 데이터셋을 가져와 Dataset 또는 DatasetDict 객체를 돌려주며, 이 객체는 map, filter, train_test_split을 지원하고 PyTorch와 TensorFlow 데이터 로더와 연동된다.[21]
내부적으로는 예제를 Apache Arrow 테이블로 저장하고 메모리 매핑하므로, 수백 기가바이트 규모의 말뭉치에서도 RAM 사용량이 낮게 유지된다. 공식 문서는 모든 데이터셋이 Apache Arrow 기반의 직렬화 비용이 거의 없는 백엔드로 메모리 매핑된다고 설명하며, 이 덕분에 기기 메모리가 비교적 작은 환경에서도 큰 데이터셋을 다룰 수 있다고 밝힌다.[22] 스트리밍 모드(streaming=True)는 한 걸음 더 나아가 원격 저장소에서 예제를 지연 로드하므로, 데이터 다운로드가 끝나기 전에 학습을 시작할 수 있다. 이 라이브러리는 데이터셋이라는 넓은 개념과 구별된다. 개념이 먼저 있었고, 라이브러리는 데이터셋을 불러오고 처리하는 방식의 한 인기 구현이다.[1]
각주·출처 22개
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 ↩11 ↩12 ↩13 ↩14 ↩15 ↩16 ↩17 ↩18 ↩19 ↩20 ↩21 ↩22 ↩23 ↩24 ↩25 ↩26 ↩27 ↩28 AI Wiki: Datasets (2026-08-01 수정본) · CC BY 4.0 · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 Training, validation, and test data sets · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 Machine Learning Crash Course: Dividing the original dataset · 확인 2026-10-11
- ↩1 ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10 Guide to File Formats for Machine Learning · 확인 2026-10-11
- ↩1 ↩2 Datasets · 확인 2026-10-11
- ↩1 ↩2 traintestsplit · 확인 2026-10-11
- ↩1 What is Data Leakage in Machine Learning? · 확인 2026-10-11
- ↩1 Apache Arrow project · 확인 2026-10-11
- ↩1 UCI Machine Learning Repository · 확인 2026-10-11
- ↩1 Dataset Cards · 확인 2026-10-11
- ↩1 ↩2 THE MNIST DATABASE of handwritten digits (AI Wiki 인용) · 확인 2026-10-11
- ↩1 Krizhevsky, A. "Learning Multiple Layers of Features from Tiny Images." Technical Report, University of Toronto, 2009. (AI Wiki 참고문헌) · 확인 2026-10-11
- ↩1 CIFAR-10 · 확인 2026-10-11
- ↩1 ↩2 ImageNet · 확인 2026-10-11
- ↩1 ImageNet Classification with Deep Convolutional Neural Networks · 확인 2026-10-11
- ↩1 Common Crawl · 확인 2026-10-11
- ↩1 Training Data for the Price of a Sandwich: Common Crawl's Impact on Generative AI · 확인 2026-10-11
- ↩1 DVC documentation · 확인 2026-10-11
- ↩1 ↩2 Datasheets for Datasets · 확인 2026-10-11
- ↩1 Navigating Dataset Documentations in AI: A Large-Scale Analysis of Dataset Cards on Hugging Face · 확인 2026-10-11
- ↩1 Datasets documentation · 확인 2026-10-11
- ↩1 Datasets and Apache Arrow · 확인 2026-10-11