Day 87: 캡스톤 프로젝트 선정 및 범위 정의 (Selecting a Capstone Project and defining scope)
학습 목표
- 어제 브레인스토밍한 아이디어들을 바탕으로 최종 캡스톤 프로젝트 주제 선정.
- 선택한 프로젝트의 목표(Goals)와 기대 결과물(Deliverables)을 명확히 정의.
- 프로젝트의 범위(Scope)를 현실적으로 설정하여 제한된 시간 내에 달성 가능하도록 계획.
- 프로젝트 성공을 위한 주요 평가 지표(Evaluation Metrics) 설정.
1. 캡스톤 프로젝트 주제 선정 과정
가. 아이디어 검토 및 우선순위화
- 어제 브레인스토밍한 아이디어 리스트를 다시 한번 살펴봅니다.
- 각 아이디어에 대해 다음 기준을 적용하여 평가하고 우선순위를 매깁니다:
- 개인적인 흥미도 및 동기 부여: 얼마나 이 주제에 대해 열정을 가지고 임할 수 있는가?
- 기술적 실현 가능성: 현재 보유한 지식과 남은 기간 동안 학습할 내용을 고려했을 때, 현실적으로 구현 가능한가? 너무 어렵거나 너무 쉽지는 않은가?
- 데이터 확보의 용이성 및 적절성: 프로젝트 수행에 필요한 데이터를 쉽게 구할 수 있는가? 데이터의 양과 질은 충분한가?
- 학습 목표 달성 기여도: 이 프로젝트를 통해 무엇을 배우고 성장할 수 있는가? 지금까지 배운 내용을 잘 활용할 수 있는가?
- 예상 소요 시간 및 노력: 남은 챌린지 기간(약 2주) 내에 의미 있는 결과물을 만들 수 있는가?
- (선택) 독창성 및 차별성: 기존에 많이 다뤄지지 않았거나, 자신만의 새로운 시각을 더할 수 있는가?
나. 최종 주제 선정
- 위 평가 기준을 바탕으로 가장 적합하다고 판단되는 프로젝트 주제를 1개 최종 선택합니다.
- 선택 과정에서 어려움이 있다면, 2~3개의 후보를 두고 각 후보에 대해 아래 “프로젝트 목표 및 범위 정의” 과정을 미리 간략하게 진행해보면서 비교하는 것도 좋은 방법입니다.
예시 프로젝트 주제 선정 (가상 시나리오):
여러 아이디어를 검토한 결과, “영화 리뷰 감성 분석 모델 개선 및 API 배포” 프로젝트를 진행하기로 결정.
- 흥미도: NLP와 모델 배포에 관심이 많음.
- 실현 가능성: 기본적인 감성 분석 모델 구축 경험이 있고, API 배포도 최근 학습함. 심화된 모델이나 새로운 데이터셋 적용은 도전적이지만 가능할 것으로 판단.
- 데이터 확보: 기존 IMDB 데이터셋 외에, 추가적으로 네이버 영화 리뷰 데이터를 수집하여 한국어 처리 능력도 향상시키고 싶음. (웹 크롤링 또는 공개 API 활용)
- 학습 목표: 다양한 감성 분석 기법 비교, 한국어 NLP 처리, 모델 서빙 API의 완성도 향상, Docker를 이용한 배포 경험.
2. 프로젝트 목표 (Goals) 및 기대 결과물 (Deliverables) 정의
가. 프로젝트 목표 설정
- 프로젝트를 통해 궁극적으로 달성하고자 하는 바를 명확하고 구체적으로 기술합니다.
- SMART 원칙(Specific, Measurable, Achievable, Relevant, Time-bound)을 참고하여 목표를 설정하면 좋습니다.
- 예시 (위 가상 시나리오 기반):
- 주 목표: 다양한 머신러닝/딥러닝 모델(예: Logistic Regression, LSTM, BERT 기반 모델)을 사용하여 영화 리뷰 감성 분류 정확도를 85% 이상 달성하고, 최적 모델을 Docker 컨테이너 기반의 REST API로 배포한다.
- 부 목표:
- 영어(IMDB) 및 한국어(네이버 영화 리뷰) 데이터셋 모두에 적용 가능한 감성 분석 파이프라인 구축.
- 한국어 전처리(형태소 분석, 토큰화) 기법 적용 및 효과 분석.
- API에 기본적인 입력 유효성 검사 및 로깅 기능 구현.
- 프로젝트 과정 및 결과를 GitHub 저장소에 문서화.
나. 기대 결과물 정의
- 프로젝트 완료 시 만들어낼 구체적인 산출물을 나열합니다.
- 예시:
- 소스 코드:
- 데이터 수집 및 전처리 스크립트 (Python).
- 모델 학습 및 평가 스크립트 (Python, Jupyter Notebook).
- Flask/FastAPI 기반 예측 API 서버 코드 (Python).
- Dockerfile 및 (선택) docker-compose.yml 파일.
- 학습된 모델 파일: 직렬화된 최종 모델 파일 (예:
.pkl,.h5,pytorch_model.bin). - API 문서: (선택) Swagger/OpenAPI 명세 또는 간단한 Markdown 형식의 API 사용법.
- 프로젝트 보고서/문서:
- 프로젝트 개요, 목표, 사용 데이터, 적용 방법론.
- 실험 과정 및 결과 (모델 성능 비교, 분석 등).
- API 배포 과정 및 테스트 결과.
- 결론 및 향후 개선 방향.
- (형식은 자유롭게: README.md 상세 작성, 별도 문서 등)
- GitHub 저장소: 위 모든 결과물을 포함하는 공개 GitHub 저장소.
- (선택) 데모: 간단한 웹 UI 또는 API 호출 시연 영상/스크린샷.
- 소스 코드:
3. 프로젝트 범위 (Scope) 정의
- 프로젝트의 경계를 명확히 하여 무엇을 하고 무엇을 하지 않을지를 결정합니다.
- 제한된 시간과 자원 내에서 현실적으로 달성 가능한 범위를 설정하는 것이 매우 중요합니다. “범위蔓延(Scope Creep)“을 방지해야 합니다.
가. 포함할 내용 (In-Scope)
- 프로젝트 목표 달성을 위해 반드시 수행해야 할 핵심 작업들을 구체적으로 나열합니다.
- 예시:
- 영어(IMDB) 리뷰 데이터 전처리 및 TF-IDF, Word2Vec 임베딩 생성.
- 한국어(네이버 영화) 리뷰 데이터 수집(크롤링 범위 제한), KoNLPy를 이용한 형태소 분석 및 토큰화.
- 최소 2개 이상의 분류 모델(예: Logistic Regression, LSTM) 학습 및 비교 평가.
- 선택된 최적 모델을 Flask API로 구현 (예측 엔드포인트 1개).
- Dockerfile 작성 및 로컬 환경에서 Docker 컨테이너 실행 및 테스트.
- GitHub 저장소에 코드 및 간략한 README 문서 작성.
나. 제외할 내용 (Out-of-Scope)
- 시간 제약이나 기술적 어려움 등으로 인해 이번 프로젝트에서는 다루지 않을 내용을 명시합니다.
- 이를 통해 프로젝트의 초점을 명확히 하고, 불필요한 작업에 시간을 낭비하는 것을 막습니다.
- 예시:
- 실시간 스트리밍 데이터 처리.
- 복잡한 사용자 인터페이스(UI) 개발 (간단한 테스트용 UI는 가능).
- 클라우드 플랫폼(AWS, GCP 등)으로의 완전 자동화된 배포 파이프라인 구축 (로컬 Docker 배포까지만).
- A/B 테스팅 및 고급 모니터링 시스템 구축.
- 매우 큰 규모의 데이터셋 처리 (개인 PC 환경 고려).
- 모든 가능한 하이퍼파라미터 조합에 대한 완전 탐색 (시간 제약).
다. 최소 기능 제품 (MVP, Minimum Viable Product) 정의 (선택 사항)
- 프로젝트의 가장 핵심적인 기능을 구현한 최소한의 결과물을 정의합니다.
- 만약 시간이 부족할 경우, 최소한 MVP는 달성하는 것을 목표로 할 수 있습니다.
- 예시 MVP: IMDB 데이터셋에 대한 LSTM 기반 감성 분석 모델 학습 및 Flask API (로컬 실행) 구현.
4. 주요 평가 지표 (Evaluation Metrics) 설정
- 프로젝트의 성공 여부를 판단하거나, 모델의 성능을 객관적으로 측정하기 위한 지표를 설정합니다.
- 문제 유형(분류, 회귀, NLP 등)에 맞는 적절한 평가지표를 선택합니다.
- 예시 (감성 분석 분류 문제):
- 정확도 (Accuracy): 전체 예측 중 올바르게 예측한 비율.
- 정밀도 (Precision), 재현율 (Recall), F1 점수 (F1-Score): 특히 클래스 불균형이 있을 경우 중요. 긍정/부정 클래스 각각에 대해 계산하거나 평균(macro/micro) 사용.
- ROC AUC: 모델의 전반적인 분류 성능.
- (API 배포 관련) 응답 시간 (Latency), 처리량 (Throughput) - 간단한 테스트로 측정.
5. 다음 단계: 세부 계획 수립
- 오늘 정의한 프로젝트 목표, 범위, 결과물, 평가지표를 바탕으로, 남은 기간 동안 각 작업을 어떻게 수행할지 세부적인 일정을 계획합니다.
- 각 작업 단계별로 필요한 시간, 자원, 예상되는 어려움 등을 고려합니다.
- 예:
- 1일차: 데이터 수집 및 EDA
- 2-3일차: 데이터 전처리 및 특징 공학
- 4-6일차: 모델 학습 및 평가 (여러 모델 시도)
- 7-8일차: API 개발
- 9-10일차: Docker 패키징 및 테스트
- 11-12일차: 문서화 및 최종 정리
팁: 프로젝트를 진행하면서 계획은 변경될 수 있습니다. 중요한 것은 주기적으로 진행 상황을 점검하고, 필요에 따라 계획을 유연하게 수정하는 것입니다. 혼자 진행하는 프로젝트이므로, 스스로에게 현실적인 기대치를 설정하고 과정을 즐기는 것이 중요합니다.
다음 학습 내용
- Day 88: 프로젝트를 위한 데이터 수집 및 전처리 (Data Collection and Preprocessing for the project) - 선택한 프로젝트에 필요한 데이터를 실제로 수집하고, 모델 학습에 적합한 형태로 가공하는 작업 시작.