Chapter 12: 나만의 프로젝트 기획하기¶
한 줄 요약: 관심 있는 주제를 정하고, 데이터를 찾아서, 나만의 프로젝트 계획서를 작성해봐요!
🎯 이 장에서 배우는 것¶
- [ ] 머신러닝으로 해결할 수 있는 문제를 발견할 수 있다
- [ ] 적절한 데이터셋을 찾고 선택할 수 있다
- [ ] 프로젝트 계획서를 작성할 수 있다
- [ ] 프로젝트의 실현 가능성을 평가할 수 있다
💡 왜 이걸 배우나요?¶
지금까지 분류, 회귀, 군집, 텍스트 분석까지 배웠어. 하지만 항상 "준비된 데이터"와 "정해진 문제"를 풀었지?
실제 세상에서는 아무도 문제를 정해주지 않아.
"이 데이터로 분류해봐"가 아니라, "뭘 해볼까?"부터 시작해야 해.
지금까지:
주어진 문제 → 주어진 데이터 → 배운 기법 적용
앞으로:
내가 궁금한 것 → 데이터 찾기 → 적절한 기법 선택
이게 바로 진짜 프로젝트야.
취미로 분석해도 좋고, 학교 발표에 써도 좋고, 포트폴리오로 만들어도 좋아. 중요한 건 "내가 진짜 궁금한 것"을 풀어보는 거야.
📚 핵심 개념¶
개념 1: 좋은 프로젝트 주제란?¶
좋은 프로젝트 주제는 마치 "맛있는 레시피" 와 같아요. 재료(데이터)가 구할 수 있어야 하고, 내 실력(기술)으로 만들 수 있어야 하고, 완성하면 뭔가 의미(가치)가 있어야 해요.
정확히 말하면, 좋은 프로젝트는 세 가지 조건을 만족해요:
┌─────────────────┐
│ 좋은 프로젝트 │
└─────────────────┘
│
┌──────────┼──────────┐
│ │ │
┌────▼────┐ ┌───▼───┐ ┌────▼────┐
│ 관심 │ │ 데이터 │ │ 기술 │
│ 있는가? │ │ 있는가?│ │ 되는가? │
└─────────┘ └───────┘ └─────────┘
1. 관심 (Interest): 내가 진짜 궁금한가? - 억지로 하면 중간에 포기해 - "남들이 멋있어 보일 것 같아서"는 동기가 약해
2. 데이터 (Data): 분석할 데이터가 있는가? - 아무리 재밌는 주제도 데이터가 없으면 못 해 - 구할 수 있는 데이터인지 먼저 확인
3. 기술 (Skill): 내 실력으로 할 수 있는가? - 처음부터 너무 어려운 건 좌절감만 줘 - 조금 도전적이되, 불가능하진 않은 수준
쉽게 말하면: 관심 있고 + 데이터 있고 + 할 수 있으면 = 좋은 프로젝트!
개념 2: 문제 유형 정하기¶
우리가 배운 머신러닝 기법들, 기억나지?
┌─────────────────────────────────────────────────────────┐
│ 문제 유형 선택 가이드 │
├─────────────────────────────────────────────────────────┤
│ │
│ 예측하고 싶은 게 뭐야? │
│ │ │
│ ├── "A인지 B인지" → 분류 (Classification) │
│ │ 예) 스팸인지 아닌지, 합격인지 불합격인지 │
│ │ │
│ ├── "얼마나 될지" → 회귀 (Regression) │
│ │ 예) 가격 예측, 점수 예측, 수요 예측 │
│ │ │
│ ├── "비슷한 것끼리" → 군집 (Clustering) │
│ │ 예) 고객 유형 분류, 음악 장르 그룹핑 │
│ │ │
│ └── "텍스트에서 의미" → 텍스트 분석 │
│ 예) 감성 분석, 키워드 추출 │
│ │
└─────────────────────────────────────────────────────────┘
예를 들어:
| 궁금한 것 | 문제 유형 | 왜? |
|---|---|---|
| 이 영화 리뷰가 긍정인지 부정인지 | 분류 | 두 가지 중 하나 |
| 이 집 가격이 얼마일지 | 회귀 | 연속적인 숫자 |
| 비슷한 취향의 사람들 그룹 | 군집 | 정답이 없이 묶기 |
| 뉴스 기사의 주제 파악 | 텍스트 분석 | 텍스트 데이터 |
쉽게 말하면: "뭘 예측하고 싶은지"에 따라 기법이 정해져!
개념 3: 데이터셋을 찾는 곳¶
데이터셋을 찾는 건 마치 도서관에서 책 찾기와 같아요. 어디에 어떤 책이 있는지 알면 훨씬 빨리 찾을 수 있죠.
대표적인 데이터 출처:
┌─────────────────────────────────────────────────────────┐
│ 데이터 찾기 지도 │
├─────────────────────────────────────────────────────────┤
│ │
│ 🌐 Kaggle (kaggle.com/datasets) │
│ → 세계 최대 데이터 플랫폼 │
│ → 영어, 다양한 주제, 품질 좋음 │
│ │
│ 🇰🇷 공공데이터포털 (data.go.kr) │
│ → 한국 정부 공식 데이터 │
│ → 한글, 한국 관련 주제 │
│ │
│ 📊 서울 열린데이터광장 (data.seoul.go.kr) │
│ → 서울시 데이터 │
│ → 교통, 환경, 문화 등 │
│ │
│ 🏫 UCI ML Repository │
│ → 머신러닝 교육용 데이터 │
│ → 깨끗하고 잘 정리됨 │
│ │
│ 📈 Google Dataset Search │
│ → 구글이 인덱싱한 데이터셋 검색 │
│ │
└─────────────────────────────────────────────────────────┘
쉽게 말하면: Kaggle이 가장 쉽고, 한국 데이터는 공공데이터포털에서!
🔨 따라하기¶
Step 1: 관심 분야 탐색하기¶
목표: 내가 진짜 궁금한 주제 3개 찾기
프로젝트의 시작은 "나는 뭐가 궁금하지?" 라는 질문이야.
아이디어 발굴 질문들:
# === 나만의 관심사 찾기 ===
# 아래 질문에 답해보며 아이디어를 찾아봐!
관심_질문들 = [
"평소에 자주 보는 유튜브 주제는?",
"친구들이랑 자주 하는 얘기는?",
"뉴스에서 관심 가는 기사는?",
"취미로 하는 게 뭐야?",
"학교에서 가장 재밌는 과목은?",
"요즘 빠진 게임/드라마/음악은?",
"미래에 하고 싶은 일은?",
"세상에서 바꾸고 싶은 것은?"
]
# 예시 답변:
# - 게임 → 게임 데이터 분석
# - 음악 → 인기곡 예측, 장르 분류
# - 스포츠 → 경기 결과 예측
# - 환경 → 대기오염 분석
주제 아이디어 예시:
| 관심 분야 | 프로젝트 아이디어 | 문제 유형 |
|---|---|---|
| 게임 | 리그오브레전드 승률 예측 | 분류 |
| 음악 | 스포티파이 인기곡 특징 분석 | 회귀/군집 |
| 영화 | 넷플릭스 영화 평점 예측 | 회귀 |
| 스포츠 | 축구 경기 결과 예측 | 분류 |
| 건강 | 수면 패턴과 성적 관계 | 회귀 |
| 환경 | 미세먼지 농도 예측 | 회귀 |
| 패션 | 의류 이미지 분류 | 분류 |
| 음식 | 레시피 재료로 요리 분류 | 분류 |
| 동물 | 동물 사진 종류 분류 | 분류 |
| SNS | 트위터 감성 분석 | 텍스트 분석 |
여기서 잠깐! 🤔
"멋있어 보이는 주제" vs "내가 진짜 궁금한 주제"
멋있어 보여서 시작하면 힘들 때 포기하기 쉬워. 진짜 궁금한 건 어려워도 끝까지 가게 돼. "이거 결과 나오면 진짜 궁금하다!" 느낌이 드는 걸 골라.
Step 2: 데이터셋 찾기¶
목표: 선택한 주제에 맞는 데이터셋 찾기
이제 Kaggle에서 실제로 데이터를 찾아보자!
코드: Kaggle 데이터셋 검색 시뮬레이션
```python
=== Kaggle 데이터셋 탐색하기 ===¶
실제로는 kaggle.com에서 검색하지만,¶
어떤 데이터가 있는지 미리 알아보자!¶
--- 인기 있는 초보자 친화적 데이터셋 ---¶
인기_데이터셋 = { "타이타닉 생존자": { "설명": "타이타닉 승객의 생존 여부 예측", "크기": "891행 x 12열", "문제유형": "분류", "난이도": "⭐ (입문)", "검색어": "titanic" }, "집값 예측": { "설명": "주택 특성으로 가격 예측", "크기": "1460행 x 81열", "문제유형": "회귀", "난이도": "⭐⭐ (초급)", "검색어": "house prices" }, "스포티파이 노래": { "설명": "노래의 특성과 인기도 분석", "크기": "수만 행", "문제유형": "회귀/분류", "난이도": "⭐⭐ (초급)", "검색어": "spotify" }, "포켓몬": { "설명": "포켓몬 스탯으로 타입/전설 예측", "크기": "800행 x 13열", "문제유형": "분류", "난이도": "⭐ (입문)", "검색어": "pokemon" }, "넷플릭스 영화": { "설명": "넷플릭스 콘텐츠 정보", "크기": "8000행+", "문제유형": "분류/텍스트", "난이도": "⭐⭐ (초급)", "검색어": "netflix" }, "아이리스 꽃": { "설명": "꽃 측정값으로 종류 분류", "크기": "150행 x 5열", "문제유형": "분류", "난이도": "⭐ (입문)", "검색어": "iris" } }
출력해보기¶
print("="