티스토리 뷰

반응형

핵심 요약

"좋은 데이터가 좋은 AI를 만든다"는 AI 업계의 불변의 진리입니다.
아무리 뛰어난 알고리즘이라도 데이터셋 구성이 잘못되면 실패합니다.
Training set(60-80%), Validation set(10-20%), Test set(10-20%)의 올바른 분할, 철저한 데이터 전처리(결측치, 이상치, 정규화), 그리고 정확한 데이터 라벨링이 AI 프로젝트 성공의 80%를 차지합니다.
이 포스팅에서는 Kaggle 우승팀이 사용하는 데이터셋 구성 전략부터 무료 라벨링 도구, 실전 전처리 코드까지 완벽하게 설명합니다.


📍 목차

  1. 데이터 수집 방법과 출처
  2. Training/Validation/Test set의 역할과 분할 비율
  3. 데이터 전처리와 정제 과정
  4. 데이터 라벨링(Labeling)이란?
  5. 실전 데이터셋 구성 체크리스트

1. 데이터 수집 방법과 출처

1-1. 데이터 수집의 중요성

AI 프로젝트의 80% 시간은 데이터 수집과 전처리에 사용됩니다.

AI 프로젝트 단계 소요 시간 비율 설명
데이터 수집 30% 적합한 데이터 찾기, 수집, 저장
데이터 전처리 50% 정제, 변환, 라벨링
모델 개발 15% 알고리즘 선택, 학습
평가 및 배포 5% 테스트, 최적화, 배포

결론: 데이터 수집과 전처리가 전체 프로젝트의 80%를 차지합니다.

1-2. 데이터 수집 5가지 방법

1️⃣ 공개 데이터셋 활용

가장 빠르고 쉬운 방법입니다. 이미 정제되고 라벨링된 데이터를 무료로 사용할 수 있습니다.

주요 공개 데이터셋 플랫폼:

플랫폼 URL 특징 데이터 종류
Kaggle Datasets kaggle.com/datasets 50,000개 이상 데이터셋 이미지, 텍스트, 정형
AI Hub (한국) aihub.or.kr 한국어 데이터 풍부 음성, 텍스트, 이미지
UCI ML Repository archive.ics.uci.edu 학술 연구용 정형 데이터 위주
ImageNet image-net.org 1,400만 장 이미지 이미지 분류
Google Dataset Search datasetsearch.research.google.com 구글의 데이터셋 검색 엔진 모든 종류
Hugging Face Datasets huggingface.co/datasets NLP 데이터셋 풍부 텍스트, 음성

장점:

  • ✅ 무료
  • ✅ 즉시 사용 가능
  • ✅ 이미 정제되고 라벨링됨
  • ✅ 벤치마크 비교 가능

단점:

  • ❌ 특정 프로젝트에 맞지 않을 수 있음
  • ❌ 경쟁사도 같은 데이터 사용
  • ❌ 저작권 제한 있을 수 있음

2️⃣ 웹 스크래핑(Web Scraping)

인터넷에서 데이터를 자동으로 수집하는 방법입니다.

Python 웹 스크래핑 예시:

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 웹페이지 가져오기
url = 'https://example.com/products'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 데이터 추출
products = []
for item in soup.find_all('div', class_='product'):
    name = item.find('h2', class_='title').text
    price = item.find('span', class_='price').text
    products.append({'name': name, 'price': price})

# DataFrame으로 저장
df = pd.DataFrame(products)
df.to_csv('products.csv', index=False)

추천 라이브러리:

  • BeautifulSoup: HTML 파싱
  • Scrapy: 대규모 스크래핑 프레임워크
  • Selenium: 동적 웹페이지 스크래핑

주의사항:

  • ⚠️ robots.txt 확인 (스크래핑 허용 여부)
  • ⚠️ 저작권 존중
  • ⚠️ 서버에 과부하 주지 않기 (요청 간격 두기)

3️⃣ API 활용

공식 API를 통해 데이터를 수집하는 방법입니다.

인기 API:

API 용도 무료 제한
Twitter API 소셜 미디어 데이터 월 500,000 트윗
YouTube Data API 영상 메타데이터 일 10,000 쿼터
OpenWeatherMap 날씨 데이터 일 1,000회
Google Maps API 지도 데이터 월 $200 크레딧
Reddit API 커뮤니티 데이터 무제한 (Rate limit 있음)

Python API 사용 예시:

import requests

# OpenWeatherMap API 예시
api_key = 'YOUR_API_KEY'
city = 'Seoul'
url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}'

response = requests.get(url)
weather_data = response.json()

print(f"온도: {weather_data['main']['temp']}K")
print(f"날씨: {weather_data['weather'][0]['description']}")

4️⃣ 센서 및 IoT 데이터

하드웨어 센서로 직접 데이터 수집하는 방법입니다.

예시:

  • 스마트폰 센서: 가속도계, 자이로스코프, GPS
  • IoT 기기: 온습도 센서, 카메라, 마이크
  • 웨어러블: 심박수, 걸음 수, 수면 패턴

Arduino 센서 데이터 수집 예시:

import serial
import csv

# Arduino와 시리얼 연결
ser = serial.Serial('/dev/ttyUSB0', 9600)

# 데이터 수집
with open('sensor_data.csv', 'w') as f:
    writer = csv.writer(f)
    writer.writerow(['timestamp', 'temperature', 'humidity'])

    for i in range(1000):
        line = ser.readline().decode('utf-8').strip()
        timestamp, temp, humidity = line.split(',')
        writer.writerow([timestamp, temp, humidity])

5️⃣ 크라우드소싱

다수의 사람들에게 데이터를 수집하는 방법입니다.

크라우드소싱 플랫폼:

  • Amazon Mechanical Turk: 미국 중심
  • 크라우드웍스 (한국): 한국어 데이터 수집
  • Google Forms: 설문 조사
  • Figure Eight (Appen): 데이터 라벨링 전문

비용:

  • 이미지 라벨링: 개당 $0.01~0.10
  • 텍스트 분류: 개당 $0.05~0.20
  • 음성 녹음: 분당 $1~5

1-3. 데이터 수집 시 법적 고려사항

GDPR, 개인정보보호법 준수:

항목 설명 예시
개인정보 익명화 이름, 주민번호 등 제거 "홍길동" → "사용자_1234"
동의 획득 데이터 수집 전 동의 "데이터 수집 동의" 체크박스
목적 명시 사용 목적 명확히 "AI 학습용"
저장 기간 제한 불필요한 데이터 삭제 프로젝트 종료 후 1년

2. Training/Validation/Test set의 역할과 분할 비율

2-1. 3가지 데이터셋의 역할

AI 학습은 시험 공부와 비슷합니다.

데이터셋 시험 공부 비유 AI 학습 역할
Training set 📚 교과서 모델이 패턴을 학습하는 데이터
Validation set 📝 모의고사 모델 성능을 중간 평가하고 하이퍼파라미터 조정
Test set 🎓 수능 최종 모델 성능을 평가 (절대 학습에 사용 안 함)

2-2. Training Set (훈련 데이터)

역할: 모델이 패턴을 학습하는 데이터

예시:

from sklearn.model_selection import train_test_split

# 데이터 로드
X = [[1, 2], [3, 4], [5, 6], [7, 8]]  # 입력 데이터
y = [0, 0, 1, 1]  # 정답 레이블

# Training과 나머지 분할 (80:20)
X_train, X_temp, y_train, y_temp = train_test_split(
    X, y, test_size=0.2, random_state=42
)

print(f"Training set 크기: {len(X_train)}")  # 80%

특징:

  • ✅ 전체 데이터의 60~80%
  • ✅ 모델이 이 데이터를 반복해서 학습
  • ✅ 많을수록 좋음 (단, 과적합 주의)

2-3. Validation Set (검증 데이터)

역할: 모델의 중간 성능 평가 및 하이퍼파라미터 조정

하이퍼파라미터 튜닝 예시:

from sklearn.model_selection import GridSearchCV
from sklearn.ensemble import RandomForestClassifier

# 하이퍼파라미터 후보
param_grid = {
    'n_estimators': [10, 50, 100],
    'max_depth': [5, 10, 20]
}

# Grid Search (내부적으로 Validation set 사용)
model = RandomForestClassifier()
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)

print(f"최적 하이퍼파라미터: {grid_search.best_params_}")

특징:

  • ✅ 전체 데이터의 10~20%
  • ✅ 학습 중 모델 성능 모니터링
  • ✅ 과적합 조기 발견

Early Stopping 예시 (딥러닝):

from tensorflow.keras.callbacks import EarlyStopping

# Validation loss가 5 epoch 동안 개선 없으면 학습 중단
early_stop = EarlyStopping(monitor='val_loss', patience=5)

model.fit(
    X_train, y_train,
    validation_data=(X_val, y_val),
    epochs=100,
    callbacks=[early_stop]
)

2-4. Test Set (테스트 데이터)

역할: 최종 모델의 일반화 성능 평가

중요 원칙:

  • ⚠️ 절대 학습에 사용하지 않음
  • ⚠️ 단 한 번만 평가
  • ⚠️ Test set 성능을 보고 모델 수정하면 데이터 누수(Data Leakage)

Test set 평가 예시:

# 최종 모델 평가 (딱 한 번!)
test_accuracy = model.score(X_test, y_test)
print(f"Test Accuracy: {test_accuracy:.2%}")

# ❌ 잘못된 사용: Test set 성능을 보고 모델 재학습
# if test_accuracy < 0.9:
#     model.fit(X_train + X_test, y_train + y_test)  # 절대 금지!

2-5. 데이터셋 분할 비율

전통적 비율 (데이터 < 100,000):

데이터 크기 Training Validation Test
1,000개 60% (600) 20% (200) 20% (200)
10,000개 60% (6,000) 20% (2,000) 20% (2,000)
100,000개 60% (60,000) 20% (20,000) 20% (20,000)

빅데이터 시대 비율 (데이터 > 1,000,000):

데이터 크기 Training Validation Test 이유
1,000,000개 98% (980,000) 1% (10,000) 1% (10,000) Validation/Test에 10,000개면 충분
10,000,000개 99.5% (9,950,000) 0.25% (25,000) 0.25% (25,000) 더 많은 데이터를 학습에 활용

핵심 원칙:

  • 절대적 개수가 중요 (비율이 아님)
  • Validation/Test는 각 10,000개 정도면 충분
  • 나머지는 모두 Training에 사용

2-6. K-Fold Cross Validation

데이터가 부족할 때 사용하는 기법입니다.

작동 방식:

전체 데이터를 K개(보통 5 or 10)로 나눔

Fold 1: [Test] [Train] [Train] [Train] [Train]
Fold 2: [Train] [Test] [Train] [Train] [Train]
Fold 3: [Train] [Train] [Test] [Train] [Train]
Fold 4: [Train] [Train] [Train] [Test] [Train]
Fold 5: [Train] [Train] [Train] [Train] [Test]

→ 각 Fold의 성능 평균을 최종 성능으로 사용

Python 구현:

from sklearn.model_selection import cross_val_score
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

# 5-Fold Cross Validation
scores = cross_val_score(model, X, y, cv=5)

print(f"각 Fold 점수: {scores}")
print(f"평균 점수: {scores.mean():.2%}")
print(f"표준편차: {scores.std():.2%}")

장점:

  • ✅ 모든 데이터를 Training과 Test에 활용
  • ✅ 과적합 방지
  • ✅ 안정적인 성능 평가

단점:

  • ❌ 학습 시간 K배 증가 (5-Fold면 5번 학습)

3. 데이터 전처리와 정제 과정

3-1. 데이터 전처리란?

데이터 전처리(Data Preprocessing)원시 데이터를 AI가 학습할 수 있는 형태로 변환하는 과정입니다.

전처리 파이프라인:

원시 데이터
   ↓
1. 데이터 정제 (결측치, 이상치, 중복 제거)
   ↓
2. 데이터 변환 (정규화, 인코딩)
   ↓
3. 데이터 증강 (Data Augmentation)
   ↓
학습 가능한 데이터

3-2. 데이터 정제 (Data Cleansing)

1️⃣ 결측치 처리

결측치(Missing Values)는 데이터가 비어 있는 경우입니다.

Python 결측치 확인:

import pandas as pd
import numpy as np

# 샘플 데이터
df = pd.DataFrame({
    'name': ['Alice', 'Bob', 'Charlie', 'David'],
    'age': [25, np.nan, 30, 35],
    'salary': [50000, 60000, np.nan, 70000]
})

# 결측치 확인
print(df.isnull().sum())

출력:

name      0
age       1
salary    1
dtype: int64

결측치 처리 방법:

방법 설명 코드 장점 단점
삭제 결측치가 있는 행 제거 df.dropna() 간단 데이터 손실
평균 대체 평균값으로 채우기 df.fillna(df.mean()) 간단 분산 감소
중앙값 대체 중앙값으로 채우기 df.fillna(df.median()) 이상치에 강함 분산 감소
최빈값 대체 가장 많이 나타난 값 df.fillna(df.mode()[0]) 범주형 데이터에 적합 편향 발생
예측 모델 다른 변수로 예측 scikit-learn SimpleImputer 정확함 복잡함

예시 코드:

# 방법 1: 삭제
df_clean = df.dropna()

# 방법 2: 평균 대체
df['age'].fillna(df['age'].mean(), inplace=True)

# 방법 3: 예측 모델 (scikit-learn)
from sklearn.impute import SimpleImputer

imputer = SimpleImputer(strategy='mean')
df[['age', 'salary']] = imputer.fit_transform(df[['age', 'salary']])

2️⃣ 이상치 처리

이상치(Outliers)비정상적으로 크거나 작은 값입니다.

이상치 탐지 방법:

1. IQR (Interquartile Range) 방법:

import pandas as pd

# 샘플 데이터
df = pd.DataFrame({'salary': [30000, 35000, 40000, 45000, 50000, 1000000]})

# IQR 계산
Q1 = df['salary'].quantile(0.25)
Q3 = df['salary'].quantile(0.75)
IQR = Q3 - Q1

# 이상치 경계
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 이상치 제거
df_clean = df[(df['salary'] >= lower_bound) & (df['salary'] <= upper_bound)]
print(f"이상치 제거 전: {len(df)}개")
print(f"이상치 제거 후: {len(df_clean)}개")

2. Z-Score 방법:

from scipy import stats
import numpy as np

# Z-Score 계산
z_scores = np.abs(stats.zscore(df['salary']))

# Z-Score > 3이면 이상치로 간주
df_clean = df[z_scores < 3]

3️⃣ 중복 데이터 제거

# 중복 확인
print(f"중복 개수: {df.duplicated().sum()}")

# 중복 제거
df_clean = df.drop_duplicates()

3-3. 데이터 변환 (Data Transformation)

1️⃣ 정규화 (Normalization)

정규화는 데이터를 0~1 범위로 조정합니다.

공식:
[
X_{norm} = \frac{X - X_{min}}{X_{max} - X_{min}}
]

Python 구현:

from sklearn.preprocessing import MinMaxScaler

# 샘플 데이터
df = pd.DataFrame({'salary': [30000, 50000, 70000, 90000]})

# Min-Max 정규화
scaler = MinMaxScaler()
df['salary_normalized'] = scaler.fit_transform(df[['salary']])

print(df)

출력:

   salary  salary_normalized
0   30000                0.0
1   50000          0.333333
2   70000          0.666667
3   90000                1.0

2️⃣ 표준화 (Standardization)

표준화는 데이터를 평균 0, 표준편차 1로 조정합니다.

공식:
[
X_{std} = \frac{X - \mu}{\sigma}
]

Python 구현:

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
df['salary_standardized'] = scaler.fit_transform(df[['salary']])

print(df)

정규화 vs 표준화:

항목 정규화 (Min-Max) 표준화 (Z-Score)
범위 0 ~ 1 평균 0, 표준편차 1
이상치 영향 크다 작다
사용 시기 이미지 (픽셀 0~255) 일반적인 수치 데이터

3️⃣ 범주형 데이터 인코딩

범주형 데이터(성별, 색상 등)를 숫자로 변환해야 AI가 학습할 수 있습니다.

1. Label Encoding:

from sklearn.preprocessing import LabelEncoder

df = pd.DataFrame({'color': ['red', 'blue', 'green', 'red']})

# Label Encoding
encoder = LabelEncoder()
df['color_encoded'] = encoder.fit_transform(df['color'])

print(df)

출력:

   color  color_encoded
0    red              2
1   blue              0
2  green              1
3    red              2

2. One-Hot Encoding:

# One-Hot Encoding
df_encoded = pd.get_dummies(df['color'], prefix='color')

print(df_encoded)

출력:

   color_blue  color_green  color_red
0           0            0          1
1           1            0          0
2           0            1          0
3           0            0          1

언제 어떤 인코딩을 사용할까?

상황 추천 방법 이유
순서가 있는 범주 (소/중/대) Label Encoding 숫자로 순서 표현 가능
순서가 없는 범주 (색상) One-Hot Encoding 숫자 크기가 의미 없음
범주가 많음 (> 10개) Target Encoding One-Hot은 차원 폭발

3-4. 데이터 증강 (Data Augmentation)

이미지 데이터의 양을 인위적으로 늘리는 기법입니다.

Python 구현 (TensorFlow):

from tensorflow.keras.preprocessing.image import ImageDataGenerator

# 데이터 증강 설정
datagen = ImageDataGenerator(
    rotation_range=20,       # 20도 회전
    width_shift_range=0.2,   # 좌우 20% 이동
    height_shift_range=0.2,  # 상하 20% 이동
    horizontal_flip=True,    # 좌우 반전
    zoom_range=0.2           # 20% 확대/축소
)

# 원본 이미지 로드
from tensorflow.keras.preprocessing import image
img = image.load_img('cat.jpg', target_size=(224, 224))
img_array = image.img_to_array(img)
img_array = img_array.reshape((1,) + img_array.shape)

# 증강된 이미지 생성
i = 0
for batch in datagen.flow(img_array, batch_size=1):
    i += 1
    if i > 5:  # 5개 생성
        break

효과:

  • ✅ 데이터 양 10배 이상 증가
  • ✅ 과적합 방지
  • ✅ 모델의 일반화 성능 향상

4. 데이터 라벨링(Labeling)이란?

4-1. 데이터 라벨링의 정의

데이터 라벨링(Labeling)원시 데이터에 정답 표시를 붙이는 작업입니다.

예시:

원시 데이터 (이미지) 라벨 (정답)
🐶 사진 "개"
🐱 사진 "고양이"
🚗 사진 "자동차"

4-2. 라벨링 유형

1️⃣ 분류(Classification) 라벨링

전체 데이터에 하나의 레이블을 붙입니다.

예시:

  • 이메일: "스팸" or "정상"
  • 리뷰: "긍정" or "부정"
  • 이미지: "고양이", "개", "새"

2️⃣ 객체 탐지(Object Detection) 라벨링

이미지 내 객체의 위치를 표시합니다.

바운딩 박스(Bounding Box):

이미지: 거리 사진
라벨:
- 자동차: (x=100, y=150, w=200, h=150)
- 사람: (x=300, y=200, w=80, h=180)
- 신호등: (x=500, y=50, w=40, h=100)

3️⃣ 시맨틱 세그멘테이션(Semantic Segmentation)

픽셀 단위로 레이블을 붙입니다.

예시:

자율주행차 이미지
- 도로: 파란색
- 차량: 빨간색
- 보행자: 초록색
- 건물: 회색

4️⃣ 텍스트 라벨링

텍스트에 의미를 표시합니다.

개체명 인식(NER) 예시:

문장: "삼성전자가 서울에서 스마트폰을 출시했다."
라벨:
- 삼성전자: [조직]
- 서울: [장소]
- 스마트폰: [제품]

4-3. 라벨링 도구

무료 오픈소스 도구:

도구 용도 URL 특징
Labelbox 이미지, 비디오 labelbox.com 클라우드 기반, 협업 기능
CVAT 컴퓨터 비전 cvat.org 객체 탐지, 세그멘테이션
LabelImg 이미지 GitHub 바운딩 박스, 오프라인
Doccano 텍스트 doccano.github.io NER, 문장 분류
Label Studio 모든 타입 labelstud.io 이미지, 텍스트, 오디오

한국 라벨링 플랫폼:

플랫폼 URL 특징
AI Hub aihub.or.kr 한국 정부 지원, 무료
에이모 (AIMMO) aimmo.ai 자동화 라벨링
크라우드웍스 crowdworks.kr 크라우드소싱

4-4. 라벨링 실전 팁

1️⃣ 라벨링 가이드라인 작성

일관성을 위해 명확한 규칙을 정의하세요.

예시:

이미지 분류 가이드라인

1. 개 vs 고양이
   - 귀 모양이 뾰족하면 → 고양이
   - 귀 모양이 둥글면 → 개

2. 애매한 경우
   - 동물이 2종류 이상 → "기타"로 분류
   - 흐릿한 이미지 → "불명확"으로 분류

3. 품질 기준
   - 바운딩 박스는 객체를 정확히 포함
   - 여백은 최소 5픽셀 이하

2️⃣ 품질 검증

라벨링 품질을 확인하세요.

방법:

  • 전체 데이터의 10% 샘플링
  • 2명 이상이 동일하게 라벨링 (Inter-annotator agreement)
  • 일치율 95% 이상 목표
from sklearn.metrics import cohen_kappa_score

# 두 라벨러의 결과
labeler1 = [0, 1, 1, 0, 1]
labeler2 = [0, 1, 1, 1, 1]

# Cohen's Kappa 계산 (일치도)
kappa = cohen_kappa_score(labeler1, labeler2)
print(f"일치도: {kappa:.2f}")  # 0.75 (상당히 일치)

3️⃣ 액티브 러닝 (Active Learning)

모델이 확신 없는 데이터만 사람이 라벨링하는 기법입니다.

프로세스:

1. 일부 데이터 수동 라벨링 (1,000개)
2. 모델 학습
3. 모델이 예측 (확률값 포함)
4. 확신도 낮은 데이터만 추가 라벨링 (200개)
5. 모델 재학습
6. 반복

효과:

  • ✅ 라벨링 비용 50~70% 절감
  • ✅ 적은 데이터로 높은 성능

5. 실전 데이터셋 구성 체크리스트

데이터 수집 단계

  • 프로젝트 목표에 맞는 데이터 출처 확인
  • 최소 10,000개 이상 데이터 확보
  • 저작권 및 개인정보 문제 없는지 확인
  • 데이터 다양성 확보 (다양한 상황, 각도, 조명)

데이터 분할 단계

  • Training/Validation/Test set 비율 결정
    • 데이터 < 100,000: 60/20/20
    • 데이터 > 1,000,000: 98/1/1
  • Stratified Split 사용 (클래스 비율 유지)
  • Test set은 절대 학습에 사용하지 않음

데이터 전처리 단계

  • 결측치 확인 및 처리
  • 이상치 탐지 및 제거
  • 중복 데이터 제거
  • 정규화/표준화 수행
  • 범주형 데이터 인코딩
  • 데이터 증강 (이미지/텍스트)

데이터 라벨링 단계

  • 라벨링 가이드라인 작성
  • 라벨링 도구 선택
  • 샘플 라벨링 후 품질 검증
  • 전체 라벨링 수행
  • 최종 품질 검증 (10% 샘플)

최종 확인

  • 각 클래스별 데이터 균형 확인
  • 라벨 분포 시각화
  • 샘플 데이터 육안 확인
  • 데이터 저장 및 백업

FAQ: 초보자가 자주 묻는 질문

Q1. 데이터가 부족하면 어떻게 하나요?

A. 세 가지 방법이 있습니다: (1) 데이터 증강(Augmentation): 이미지 회전, 확대 등으로 인위적으로 늘리기, (2) 전이 학습(Transfer Learning): 다른 데이터로 사전 학습된 모델 활용, (3) 크라우드소싱: Amazon MTurk, 크라우드웍스로 데이터 수집.

Q2. Training과 Test set의 분포가 달라도 되나요?

A. 절대 안 됩니다. 이를 "데이터 드리프트(Data Drift)"라고 하며, 모델이 실제 환경에서 제대로 작동하지 않습니다. Training과 Test는 같은 분포에서 랜덤 샘플링해야 합니다.

Q3. Validation set이 꼭 필요한가요?

A. Yes. Validation 없이 Test set으로만 평가하면, Test set에 과적합될 수 있습니다. Validation은 "모의고사", Test는 "수능"이라고 생각하세요.

Q4. 라벨링 비용이 너무 비쌉니다. 대안이 있나요?

A. (1) 약한 지도학습(Weak Supervision): Snorkel 같은 도구로 자동 라벨링, (2) Self-supervised Learning: 라벨 없이 학습 (BERT, GPT), (3) Semi-supervised Learning: 소량만 라벨링하고 나머지는 자동 예측.

Q5. 정규화와 표준화 중 뭘 써야 하나요?

A. 이미지(픽셀 0~255): Min-Max 정규화 (0~1로 변환). 일반 수치 데이터: Z-Score 표준화 (이상치에 강함). 정답은 없으니 둘 다 시도해보고 성능 비교하세요.


외부 참고 자료 (SEO 최적화)

데이터셋 구성을 더 깊게 배우고 싶다면:


정리: 이 글에서 배운 것

데이터 수집: Kaggle, AI Hub, 웹 스크래핑, API, 크라우드소싱
데이터 분할: Training(60-80%) / Validation(10-20%) / Test(10-20%)
데이터 전처리: 결측치, 이상치, 정규화, 인코딩, 증강
데이터 라벨링: Labelbox, CVAT, 가이드라인 작성, 품질 검증
핵심 원칙: Test set은 절대 학습 금지, 데이터 품질이 모델 성능 결정

다음 편에서는 "신경망의 시작 - 퍼셉트론에서 딥러닝까지"에 대해 자세히 알아봅니다. 특히 단층 퍼셉트론, 다층 퍼셉트론, 역전파 알고리즘을 수식과 코드로 완벽 설명하겠습니다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
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
글 보관함