많은 데이터 세트는 테이블(그리드)에 데이터를 저장합니다(예: 쉼표로 구분된 값(CSV)으로 저장하거나 스프레드시트 또는 데이터베이스 테이블에서 직접 가져옴). 테이블은 머신러닝 모델의 직관적인 입력 형식입니다. 표의 각 행을 예시로, 각 열을 잠재적 특성 또는 라벨로 생각할 수 있습니다. 하지만 데이터 세트는 로그 파일 및 프로토콜 버퍼를 비롯한 다른 형식에서 파생될 수도 있습니다.
형식과 관계없이 ML 모델의 성능은 학습에 사용되는 데이터의 품질을 뛰어넘을 수 없습니다. 이 섹션에서는 주요 데이터 특성을 살펴봅니다.
데이터 유형
데이터 세트에는 다음을 포함하되 이에 국한되지 않는 다양한 유형의 데이터 유형이 포함될 수 있습니다.
- 수치 데이터(별도 단원에서 다루는 내용)
- 범주형 데이터(별도 단원에서 다루는 내용)
- 개별 단어와 문장부터 전체 텍스트 문서에 이르기까지 인간의 언어
- 멀티미디어 (예: 이미지, 동영상, 오디오 파일)
- 다른 ML 시스템의 출력
- 임베딩 벡터: 이후 단원에서 다룹니다.
데이터 양
대략적인 경험 법칙으로, 모델은 학습 가능한 매개변수보다 최소 1~2배 더 많은 예시를 사용하여 학습해야 합니다. 하지만 좋은 모델은 일반적으로 그보다 훨씬 더 많은 예시를 사용하여 학습합니다.
특징이 적은 대규모 데이터 세트에서 학습된 모델은 일반적으로 특징이 많은 소규모 데이터 세트에서 학습된 모델보다 성능이 우수합니다. Google은 대규모 데이터 세트에서 간단한 모델을 학습시키는 데 큰 성공을 거두었습니다.
머신러닝 프로그램에 따라 데이터 세트가 다르면 유용한 모델을 빌드하는 데 필요한 예시의 양이 크게 달라질 수 있습니다. 비교적 간단한 문제의 경우 수십 개의 예시로 충분할 수 있습니다. 다른 문제의 경우 1조 개 예시도 충분하지 않을 수 있습니다.
동일한 스키마의 대량 데이터로 이미 학습된 기존 모델을 조정하는 경우 소규모 데이터 세트에서 우수한 결과를 얻을 수 있습니다.
데이터의 품질 및 신뢰성
누구나 낮은 품질보다 높은 품질을 선호하지만 품질은 너무 모호한 개념이어서 여러 가지 방식으로 정의할 수 있습니다. 이 과정에서는 품질을 실용적으로 정의합니다.
고품질 데이터 세트는 모델이 목표를 달성하는 데 도움이 됩니다. 품질이 낮은 데이터 세트는 모델이 목표를 달성하는 데 방해가 됩니다.
고품질 데이터 세트는 일반적으로 신뢰할 수 있습니다. 신뢰성은 데이터를 신뢰할 수 있는 정도를 나타냅니다. 신뢰할 수 있는 데이터 세트에서 학습된 모델은 신뢰할 수 없는 데이터에서 학습된 모델보다 유용한 예측을 산출할 가능성이 높습니다.
안정성을 측정할 때는 다음을 결정해야 합니다.
- 라벨 오류는 얼마나 자주 발생하나요? 예를 들어 사람이 데이터에 라벨을 지정하는 경우, 사람 평가자가 실수를 하는 빈도는 얼마나 되나요?
- 지형지물에 노이즈가 있나요? 즉, 지형지물의 값에 오류가 있나요? 현실적으로 데이터 세트에서 모든 노이즈를 제거할 수는 없습니다. 약간의 노이즈는 정상입니다. 예를 들어 위치의 GPS 측정값은 매주 항상 약간 변동합니다.
- 문제에 맞게 데이터가 적절하게 필터링되었나요? 예를 들어 데이터 세트에 봇의 검색어를 포함해야 하나요? 스팸 감지 시스템을 빌드하는 경우 답변은 '예'일 가능성이 높습니다. 하지만 사람을 위한 검색 결과를 개선하려는 경우는 그렇지 않습니다.
다음은 데이터 세트에서 데이터가 신뢰할 수 없는 일반적인 원인입니다.
- 값 누락 예를 들어 사용자가 주택의 연령을 실수로 입력하지 않았을 수 있습니다.
- 중복 예시 예를 들어 서버에서 동일한 로그 항목을 실수로 두 번 업로드했을 수 있습니다.
- 잘못된 특성 값 예를 들어 사용자가 숫자를 실수로 입력했거나 온도계를 햇빛에 두었을 수 있습니다.
- 잘못된 라벨 예를 들어 사용자가 참나무 사진에 실수로 단풍나무 라벨을 지정했을 수 있습니다.
- 잘못된 데이터 섹션 예를 들어 특정 기능은 네트워크가 계속 비정상 종료된 하루를 제외하고는 매우 안정적입니다.
자동화를 사용하여 신뢰할 수 없는 데이터를 신고하는 것이 좋습니다. 예를 들어 외부 공식 데이터 스키마를 정의하거나 이를 사용하는 단위 테스트는 정의된 범위를 벗어나는 값에 플래그를 지정할 수 있습니다.
완전한 예시와 불완전한 예시
이상적인 경우 각 예시는 완전합니다. 즉, 각 예시에는 각 특성의 값이 포함됩니다.
안타깝게도 실제 예시에는 누락된 부분이 많습니다. 즉, 하나 이상의 특성 값이 누락되어 있습니다.
불완전한 예시로 모델을 학습시키지 마세요. 대신 다음 중 하나를 수행하여 불완전한 예시를 수정하거나 삭제하세요.
- 불완전한 예시를 삭제합니다.
- 누락된 값을 Impute합니다. 즉, 누락된 값에 대해 타당한 추측을 제공하여 불완전한 예시를 완전한 예시로 변환합니다.
데이터 세트에 유용한 모델을 학습하는 데 충분한 완전한 예시가 포함되어 있으면 불완전한 예시를 삭제해 보세요. 마찬가지로 하나의 특성에서만 상당한 양의 데이터가 누락되고 이 특성이 모델에 큰 도움이 되지 않을 수 있는 경우 모델 입력에서 해당 특성을 삭제하고 삭제 시 품질이 얼마나 저하되는지 확인해 보세요. 이 기능 없이도 모델이 거의 또는 완전히 동일하게 작동하면 좋습니다. 반대로 유용한 모델을 학습하기에 충분한 완전한 예가 없는 경우 누락된 값을 보충하는 것이 좋습니다.
쓸모 없거나 중복된 예시를 삭제하는 것은 좋지만 중요한 예시를 삭제하는 것은 좋지 않습니다. 안타깝게도 쓸모없는 예와 유용한 예를 구분하기는 쉽지 않습니다. 삭제할지 아니면 보간할지 결정할 수 없는 경우 불완전한 예시를 삭제하여 생성된 데이터 세트와 보간하여 생성된 데이터 세트 두 개를 만드는 것이 좋습니다. 그런 다음 더 나은 모델을 학습시키는 데이터 세트를 결정합니다.
일반적인 알고리즘 중 하나는 평균 또는 중앙값을 대입된 값으로 사용하는 것입니다. 따라서 숫자형 특성을 Z 점수로 나타낼 때는 일반적으로 0이 삽입됩니다 (0이 일반적으로 평균 Z 점수이기 때문).
연습문제: 이해도 확인
다음은 Timestamp
로 정렬된 데이터 세트의 두 열입니다.
타임스탬프 | 온도 |
---|---|
2023년 6월 8일 9시 | 12 |
2023년 6월 8일 10시 | 18 |
2023년 6월 8일 11:00 | 결측치 |
2023년 6월 8일 12:00 | 24 |
2023년 6월 8일 13:00 | 38 |
다음 중 누락된 Temperature 값을 보충하는 데 적절한 값은 무엇인가요?