Post

데이터 엔지니어링과 ML 기본기 한 번에 복습하기

데이터 전처리부터 편향·분산, 정규화, 평가 지표, S3/EC2/IAM/SageMaker Studio까지 ML 파이프라인 기초를 한 번에 복습하는 요약 노트

데이터 엔지니어링과 ML 기본기 한 번에 복습하기

이 글은 Udemy 강의에 흩어져 있던 데이터 전처리·ML 기본 개념·AWS 기초 서비스를 한 번에 묶어 정리한 요약 노트다. 모델 실습을 시작하기 전에 “기초 개념을 빠르게 리프레시”하는 용도로 설계했으며, 강의 이론 파트를 매번 처음부터 다시 보지 않아도 되도록 구성했다.

현업 ML 파이프라인을 구성하려면 “데이터 처리 → 모델 선택 → 평가 → 배포” 흐름이 명확해야 한다. 이 글은 그중 데이터 처리·모델 개념·기초 평가 지표·AWS 기반 환경 이해를 압축적으로 복습한다.

이번 글 핵심 키워드

  • 결측치 처리
  • 범주형 인코딩(라벨/원핫)
  • 스케일링(표준화·정규화)
  • 피처 엔지니어링
  • 편향/분산
  • L1/L2 정규화
  • 과적합/과소적합
  • PCA(차원 축소)
  • RMSE, MAE, R²
  • Precision/Recall/F1, ROC-AUC
  • S3, EC2, IAM, SageMaker Studio

데이터 전처리 핵심 패턴

전처리는 “모델에 넣기 전에 데이터를 모델이 이해 가능한 형태로 만드는 과정”이다. 비유하면 요리 재료 손질에 해당한다. 손질이 엉망이면 아무리 좋은 레시피(모델)를 써도 맛이 없다.


1) 결측치 처리(Missing Values)

언제 문제가 되는가?

  • 센서 데이터 누락, 수기 입력 오류, 크롤링 중 일부 값이 없음 등
  • 대부분의 ML 알고리즘(XGBoost 제외)에서 결측치는 학습 불가

대표적 처리법

  • 삭제: 결측치가 매우 적고 패턴이 없을 때
  • 대치(Imputation): 평균/중앙값/최빈값, 혹은 간단한 모델 기반 대치
  • 특별 값으로 채우기: 0 또는 “unknown”과 같이 별도 카테고리 생성

실무용 의사코드

1
2
df = df.fillna(df.mean())      # 수치형 평균 대치
df = df.fillna("unknown")      # 범주형 결측치 처리

2) 범주형 변수 인코딩(Categorical Encoding)

언제 문제가 되는가?

  • 문자열 형태의 데이터(도시명, 보험등급 등)를 모델이 숫자로만 처리할 수 있기 때문
  • 선형 모델은 범주 간 거리 개념이 없기 때문에 잘못된 인코딩은 성능 저하로 이어짐

대표적 처리법

  • Label Encoding: 순서가 있거나 카테고리가 많은 경우
  • One-Hot Encoding: 일반적인 범주형
  • Target Encoding: 고카디널리티(수천 개)에서 자주 사용

의사코드

1
df = pd.get_dummies(df, columns=['city'])

3) 스케일링 / 정규화(Scaling / Normalization)

언제 문제가 되는가?

  • 피처 간 크기 차이가 큰 경우(키 170 vs 연봉 5,000,000)
  • 거리 기반 모델(KNN)이나 경사하강 기반 모델(선형 회귀, 로지스틱 등)의 성능에 큰 영향

대표적 처리법

  • 표준화(Standardization): 평균 0, 표준편차 1
  • 정규화(Min-Max Scaling): 0~1 범위로 스케일링

의사코드

1
2
3
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df_scaled = scaler.fit_transform(df)

4) 피처 엔지니어링(Feature Engineering)

언제 문제가 되는가?

  • 기존 피처만으로는 모델이 충분한 패턴을 찾기 어려울 때
  • 실제 업무에서는 “피처가 곧 성능”이다.

대표적 처리법

  • 피처 조합: A×B, A/B, 로그 변환 등
  • 날짜 피처 분해: 년/월/일/요일/근무일 여부 등
  • 구간화(Binning): 연속형을 범주형으로 변환

의사코드

1
2
df['income_per_age'] = df['income'] / df['age']
df['log_income'] = np.log1p(df['income'])

스스로 점검 질문

  • 숫자형/범주형/결측 데이터를 각각 어떤 방식으로 처리해야 하는지 말할 수 있는가?
  • 스케일링이 “왜 필요한지”를 단순 암기 아닌 직관으로 설명할 수 있는가?

ML 기본 개념 정리: 편향·분산·정규화·과적합

ML의 성능을 결정하는 본질 요소는 편향(Bias), 분산(Variance), 정규화(Regularization)다. 비유하면, 모델은 “패턴을 찾는 학생”이고 데이터는 “연습 문제집”이다.


편향(Bias) vs 분산(Variance)

  • 편향: 모델이 너무 단순해서 복잡한 패턴을 못 잡음 → 언더피팅
  • 분산: 모델이 너무 예민해서 데이터의 잡음까지 학습 → 오버피팅

직관적 비유:

  • 편향이 크면 “문제를 건성으로 풀고 틀리는 학생”
  • 분산이 크면 “푸는 문제마다 풀이 방식이 달라지는 학생”

L1 vs L2 정규화

정규화는 “과적합을 방지하기 위해 모델의 복잡도를 억제하는 규제 장치”다.

항목L1 (Lasso)L2 (Ridge)
패널티가중치 절댓값가중치 제곱
특징일부 가중치를 0으로 만듦 → 특징 선택 효과가중치를 균등하게 줄여 안정적
사용 상황피처가 많고 불필요한 게 섞여 있을 때대부분의 회귀 문제에서 기본 선택

과적합 / 과소적합

  • 과적합: 학습 데이터에만 지나치게 맞춰진 상태

    • 그래프 비유: 데이터 점을 지그재그로 정확히 따라가는 선
  • 과소적합: 모델이 너무 단순하여 패턴을 잡지 못한 상태

    • 그래프 비유: 모든 점을 직선 하나로 설명하려 하는 경우

강의와 연결

  • 회귀 파트: 편향/분산 개념 이해 필수
  • XGBoost: L1/L2 규제 포함 → 모델 튜닝 시 중요한 요소
  • PCA: 분산(variance)을 기준으로 축을 줄이는 개념과 직접 연결됨

스스로 점검 질문

  • L1이 왜 피처 선택 효과를 가지는가?
  • 과적합을 확인하고 해결하는 방법을 최소 2가지 이상 말할 수 있는가?

평가 지표 총정리: 회귀 vs 분류

평가 지표는 “모델이 얼마나 잘했는지”를 숫자로 표현한다. 데이터 유형에 따라 지표의 의미가 크게 달라진다.


회귀 지표

지표정의언제 유용한가강의 등장
MSE오차 제곱 평균큰 오차에 민감선형 회귀
RMSEMSE의 제곱근직관적(원 단위 유지)선형 회귀
MAE절대 오차 평균이상치 영향 최소화회귀 실습
MAPE실제값 대비 오차 비율비율 해석이 중요할 때실무 응용 사례
설명력(0~1)모델이 설명한 변동 비율기본 회귀
Adjusted R²피처 수 보정한 R²피처가 많을 때고급 회귀

현업 팁:

  • 오차의 “절대 크기”가 중요하면 RMSE/MAE
  • 피처가 많고 모델 비교가 목적이면 R²/Adjusted R²

분류 지표

지표정의사용 상황강의 등장
Accuracy전체 중 맞춘 비율클래스 불균형 없을 때기본 분류
Precision예측한 Positive 중 실제 Positive금융·의료 false positive 비용 높을 때XGBoost
Recall실제 Positive 중 맞춘 비율의료·안전 분야 false negative 방지 필요건강 예측
F1-scorePrecision·Recall 조화 평균불균형 데이터에서 균형 평가분류 전반
ROC-AUC분류 성능의 전체적 면적임계값 무관 평가고급 분류

현업 팁:

  • 비대칭 위험이 있을 땐 Accuracy는 거의 의미 없음
  • 의료 예측 문제에서는 Recall 또는 F1 우선
  • 대규모 서비스에서는 ROC-AUC로 전반적 성능 비교

스스로 점검 질문

  • Precision과 Recall을 직관적으로 구분해 설명할 수 있는가?
  • 회귀 문제에서 RMSE vs MAE를 선택하는 기준이 무엇인가?

PCA 직관과 쓰임새

PCA는 고차원 데이터를 “정보 손실을 최소화하며” 더 적은 차원으로 압축하는 기술이다. 비유하면 “여러 각도에서 찍은 사진을 가장 정보가 많은 방향으로 눌러 평면에 투영하는 것”과 같다.


핵심 직관

  • 데이터의 “분산(흩어진 정도)”이 가장 큰 축을 1번 주성분으로 선택
  • 그 다음 큰 축을 2번 주성분으로 선택
  • 이렇게 축을 재정렬해 차원을 줄임

수학적으로는 고유값/고유벡터를 사용하지만, 실무에서는 “데이터가 가장 활발히 변하는 방향을 고르는 과정” 정도만 이해하면 충분하다.


왜 필요한가?

  • 차원이 너무 높으면 모델 학습이 느려지고 과적합 위험 증가
  • 시각화(2D/3D) 필요 시 유용
  • 불필요한 잡음을 제거하는 효과

강의와 연결

  • 심혈관 질환 예측 프로젝트에서 고차원 피처 정리 목적으로 등장
  • XGBoost 이전에 차원을 줄여 데이터 품질 개선에 활용

스스로 점검 질문

  • PCA는 정보를 “없애는” 기술인가 “압축하는” 기술인가?
  • PCA를 적용하면 모델 성능이 반드시 좋아지는가?

AWS 기초 서비스: S3, EC2, IAM, SageMaker Studio

강의에서 가장 많이 등장하는 AWS 구성요소 4개를 정리한다.


S3

  • 강의 내 사용: 데이터 파일, 전처리 결과, 모델 아티팩트 저장소
  • 주의점: 잘못된 IAM 권한 또는 공개 설정으로 인한 보안 사고가 가장 흔함

EC2

  • 강의 내 사용: AWS 기본 컴퓨팅 개념 소개용, 로컬 개발 확장
  • 주의점: 인스턴스 종료를 잊으면 과금 발생

IAM

  • 강의 내 사용: SageMaker Execution Role을 통해 S3 접근
  • 주의점: 과도한 권한 부여(AdministratorAccess)는 금물

SageMaker Studio

  • 강의 내 사용: Notebook에서 데이터 탐색·학습·실험 관리
  • 주의점: Studio 인스턴스도 실시간 과금 → 종료 습관 필요

이 글을 기반으로 강의 실습 들어가기 전에 볼 체크리스트

  • 결측치/범주형/스케일링 처리 방식을 구분해 말할 수 있는가
  • 편향·분산·정규화(L1/L2) 개념을 그림 없이 설명할 수 있는가
  • 회귀/분류 지표의 차이와 실무 선택 기준을 알고 있는가
  • PCA가 필요한 상황과 효과를 말할 수 있는가
  • S3, IAM Role, Studio의 역할을 각각 명확히 분리할 수 있는가
  • 전처리 → 모델 → 평가 → 배포 흐름이 머릿속에서 그려지는가
  • Endpoint 비용이 학습 비용보다 높을 수 있다는 사실을 기억하는가

This post is licensed under CC BY 4.0 by the author.