콘텐츠로 이동

Chapter 13: 프로젝트 완성하기

한 줄 요약: 기획한 프로젝트를 처음부터 끝까지 직접 만들고, 막히면 스스로 해결하며 완성하는 실전 경험!


🎯 이 장에서 배우는 것

  • [ ] 전체 머신러닝 파이프라인을 독립적으로 구현할 수 있다
  • [ ] 발생하는 오류를 스스로 해결할 수 있다
  • [ ] 결과를 해석하고 개선점을 찾을 수 있다
  • [ ] 프로젝트 과정을 문서화할 수 있다

💡 왜 이걸 배우나요?

지금까지 우리는 분류, 회귀, 군집, 텍스트 분석까지 다양한 머신러닝 기법을 배웠어. 하나씩 따라해봤고, 개념도 이해했지.

그런데 진짜 실력은 뭘까?

❌ "이 코드가 뭘 하는지 설명할 수 있어요"
⭕ "새로운 문제를 만나면 스스로 해결할 수 있어요"

이번 장은 보조 바퀴를 떼는 시간이야.

🚲 자전거 배우기 비유

지금까지:  [선생님이 잡아줌] → [보조 바퀴 달고] → [천천히 따라감]

이번 장:   [혼자서 타보기] → [넘어지면 일어나고] → [목적지 도착!]

실제 회사에서, 대회에서, 연구에서 하는 일이 바로 이거야. "아무도 정답을 안 알려주는 상황에서 스스로 완성하기"

막히면 어떡하냐고? 그래서 우리에게는 3가지 무기가 있어:

  1. 이전 챕터 - 언제든 돌아가서 참고
  2. AI 도구 - Claude, ChatGPT에게 질문
  3. 검색 - 에러 메시지 그대로 검색

이 장을 끝내면: "나도 혼자서 ML 프로젝트를 완성할 수 있구나!" 하는 자신감이 생겨.


📚 핵심 개념

개념 1: 독립적 프로젝트 수행

비유로 시작: 요리 학원에서 레시피 따라하기만 했다면, 이제 "손님이 뭘 원하는지 듣고, 재료 고르고, 요리하고, 맛보고, 담아내기"까지 혼자 해보는 거야.

정확히 말하면: 독립적 프로젝트 수행이란 문제 정의부터 데이터 준비, 모델 학습, 평가, 개선까지 전 과정을 스스로 결정하고 실행하는 것이야.

예를 들어: - 선생님: "타이타닉 생존 예측해봐, 이 컬럼 써" - 독립: "어떤 문제를 풀지? 어떤 데이터로? 어떤 방법으로?"

쉽게 말하면: 가이드 없이 처음부터 끝까지 내가 결정하고 만드는 것!


개념 2: 디버깅 마인드셋

비유로 시작: 게임에서 보스를 못 잡으면? "왜 죽었지? → 패턴 분석 → 다시 도전" 이 과정을 반복하잖아. 코딩도 똑같아.

정확히 말하면: 디버깅 마인드셋이란 에러를 "실패"가 아니라 "힌트"로 보고, 체계적으로 원인을 찾아 해결하는 사고방식이야.

예를 들어:

😰 잘못된 마인드셋:
"에러 났다... 나는 재능이 없나봐..."

😎 디버깅 마인드셋:
"에러 났다 → 뭐라고 하지? → 여기가 문제구나 → 수정!"

쉽게 말하면: 에러는 적이 아니라, 문제점을 알려주는 친절한 선생님!

🎮 에러 대응 레벨

Level 1: 에러 보고 당황 😱
Level 2: 에러 메시지 읽기 🤔
Level 3: 에러 위치 찾기 🔍
Level 4: 원인 파악하기 💡
Level 5: 해결하고 배우기 🎯 ← 목표!

개념 3: 반복적 개선 (Iteration)

비유로 시작: 처음 그린 그림이 완벽할 순 없어. 스케치 → 수정 → 채색 → 수정 → 완성. 이렇게 여러 번 다듬어 가는 거지.

정확히 말하면: 반복적 개선이란 한 번에 완벽을 추구하지 않고, "작동하는 버전"을 빠르게 만든 후 점진적으로 개선해 나가는 방법이야.

예를 들어:

Version 1: 일단 돌아가게 (정확도 60%)
    ↓
Version 2: 데이터 정리 (정확도 70%)
    ↓
Version 3: 모델 튜닝 (정확도 78%)
    ↓
Version 4: 피처 추가 (정확도 82%)

쉽게 말하면: 처음부터 완벽할 필요 없어. 일단 돌아가게 → 점점 좋게!


🔨 따라하기

🎪 이번 장의 특별한 진행 방식

이번 장은 다른 챕터와 달라. 스스로 만드는 것이 목표니까, 단계별 가이드만 제공하고 상세 코드는 네가 직접 작성하는 거야.

📋 프로젝트 진행 로드맵

┌─────────────────────────────────────────────────────────┐
│  Phase 1: 준비하기 (5분)                                │
│  ├── 문제 정의 확인                                      │
│  └── 데이터 준비 확인                                    │
├─────────────────────────────────────────────────────────┤
│  Phase 2: 기초 구축 (10분)                              │
│  ├── 데이터 로드 & 탐색                                  │
│  └── 기본 전처리                                         │
├─────────────────────────────────────────────────────────┤
│  Phase 3: 모델링 (10분)                                 │
│  ├── 데이터 분할                                         │
│  ├── 모델 선택 & 학습                                    │
│  └── 예측 수행                                           │
├─────────────────────────────────────────────────────────┤
│  Phase 4: 평가 & 개선 (10분)                            │
│  ├── 성능 측정                                           │
│  ├── 결과 시각화                                         │
│  └── 개선 아이디어 도출                                  │
└─────────────────────────────────────────────────────────┘

Step 1: 프로젝트 선택하기

목표: 지난 챕터에서 기획한 프로젝트를 선택하고, 구체적으로 정의하기

먼저 어떤 프로젝트를 할지 정해야 해. 지난 챕터(Chapter 12)에서 기획한 게 있다면 그걸 쓰면 되고, 없다면 아래에서 골라봐.

📦 프로젝트 선택지

분류 프로젝트 - 옵션 A: 붓꽃(Iris) 품종 분류 - 초급 - 옵션 B: 와인 품질 등급 분류 - 중급 - 옵션 C: 고객 이탈 예측 - 중급

회귀 프로젝트 - 옵션 D: 보스턴 집값 예측 - 초급 - 옵션 E: 학생 성적 예측 - 중급 - 옵션 F: 자전거 대여량 예측 - 중급

군집 프로젝트 - 옵션 G: 고객 세분화 - 중급 - 옵션 H: 이미지 색상 군집화 - 중급

어떤 걸 선택해도 이 장의 과정은 동일하게 적용돼!

지금 할 것:

┌────────────────────────────────────────────────────────┐
│ 📝 프로젝트 정의서 작성                                 │
├────────────────────────────────────────────────────────┤
│                                                        │
│ 1. 프로젝트 이름: _______________________              │
│                                                        │
│ 2. 문제 유형: □ 분류  □ 회귀  □ 군집                   │
│                                                        │
│ 3. 예측/분석 대상: _______________________             │
│    (무엇을 예측하거나 분석할 것인가?)                   │
│                                                        │
│ 4. 사용할 데이터: _______________________              │
│    (어디서 가져올 것인가?)                              │
│                                                        │
│ 5. 성공 기준: _______________________                  │
│    (어느 정도면 만족할 것인가?)                         │
│                                                        │
└────────────────────────────────────────────────────────┘

예시 (와인 품질 분류 프로젝트):

1. 프로젝트 이름: 와인 품질 등급 분류기
2. 문제 유형: ☑ 분류
3. 예측 대상: 와인의 품질 등급 (good/bad)
4. 사용할 데이터: UCI Wine Quality Dataset
5. 성공 기준: 정확도 75% 이상


Step 2: 프로젝트 뼈대 세우기

목표: 빈 칸만 남긴 전체 코드 구조 만들기

아래는 프로젝트 템플릿이야. 이걸 복사해서 시작하고, 빈 칸을 채워나가면 돼.

# === 나의 ML 프로젝트 ===
# 프로젝트명: [여기에 작성]
# 작성일: [여기에 작성]
# 문제 유형: [분류/회귀/군집]

# --- 1. 라이브러리 불러오기 ---
# TODO: 필요한 라이브러리 import


# --- 2. 데이터 불러오기 ---
# TODO: 데이터 로드


# --- 3. 데이터 탐색 ---
# TODO: shape, info, describe, 결측치 확인


# --- 4. 데이터 전처리 ---
# TODO: 결측치 처리, 인코딩, 스케일링 등


# --- 5. 학습/테스트 데이터 분리 ---
# TODO: train_test_split


# --- 6. 모델 학습 ---
# TODO: 모델 선택 및 fit


# --- 7. 예측 ---
# TODO: predict


# --- 8. 평가 ---
# TODO: 성능 지표 계산


# --- 9. 시각화 ---
# TODO: 결과 시각화


# --- 10. 결론 ---
# TODO: 결과 해석, 개선점 기록

여기서 잠깐! 🤔

이 템플릿을 보면 "아, ML 프로젝트는 이런 흐름이구나"가 보이지? 모든 프로젝트는 이 10단계를 거쳐. 외워두면 어떤 프로젝트든 시작할 수 있어!


Step 3: Phase 1 - 데이터 준비

목표: 데이터를 불러오고 기본 정보 파악하기

이제 직접 코드를 작성해볼 시간이야. 아래 체크리스트를 보면서 하나씩 완성해봐.

``` ✅ Phase 1 체크리스트

□ 필요한 라이브러리 import 했다 - pandas, numpy - 시각화 (matplotlib, seaborn)
- sklearn 관련 모듈

□ 데이터를 불러왔다 - csv 파일 또는 sklearn.datasets 사용

□ 기본 정보를 확인했다 - df.shape → 행, 열 개수 - df.head() → 데이터 모양 - df.info() → 컬럼 타입 - df.describe() → 통계 요약

□ 결측치를 확인했다 - df.isnull().sum()