Baseline Model 구현
가장 먼저 구현할 모델이다.
이 모델에서는 최소한의 faeture 즉, user_id와 store_id만을 사용한다.
이를 통해 모델은 사용자와 가게의 기본적인 관계를 학습한다.
추후 다른 feature를 추가하여 점진적 복잡성을 구현한다.
이러한 순서로 진행하는 이유는 아래와 같다.
1. 최소한의 성능 기준 확보
최소한의 모델을 성능 기준으로 삼음으로써, 추후 여러 feature들이 추가되었을 때 그 feature가 모델 성능을 얼마나 향상시켰는지를 측정할 수 있다.
2. 디버깅 용이성
모델이 혹시라도 제대로 학습되지 않을 때, 원인이 user_id와 store_id 사이의 관계 문제인지, 아니면 다른 피처의 문제인지 찾아내기 쉽다.

모델의 핵심 구성은 위와 같다.
user_id와 store_id만을 인자로 받는다.

학습 데이터로 학습한 결과이다.
Loss Graph - 빨간 선
첫번째 epoch에서 손실이 가장 낮았고, 미세하게 증가했다.
더이상 학습이 무의미하다는 판단 하에 조기종료가 작동하였다. (첫번째 epoch에서 거의 모든 것 학습하였음)
Accuracy Graph - 빨간 선
정확도가 꾸준히 상승하여 12.4%까지 도달했다.
테스트 데이터를 통해 구한 Top-10 Accuracy는 약 8.5%이다.
즉, user_id와 store_id만 사용하는 모델은 8.5% 확률로 상위 10개 목록에 실제 정답 가게가 포함된다.
중간 회고
- 프로젝트 초반에 가장 많은 시간을 소요하게 한 원인이었다. 최신 버전의 TensorFlow, Keras, TensorFlow-Recommenders 간의 미세한 호환성 차이로 인해 AttributeError, TypeError 등 예측하기 어려운 내부 오류가 반복적으로 발생했다.
- 내가 작성한 코드에서 metrics 인자를 리스트([])로 감싸지 않아 발생한 오류, FactorizedTopK에 tf.constant를 전달하여 발생한 is_exact 오류 등은 모두 코드의 결함이 아니라 라이브러리 버전 간의 API 사용법 차이 때문에 발생했다.
위 문제를 해결하기 위해 최신 버전이 아닌, 이전 버전으로 변경했더니 문제가 해결되었다.
이를 통해 venv를 통한 버전 프로젝트별 버전 관리의 중요성을 느끼게 되었다.
개발 일정
0. 모델 선정 및 설계
1. 데이터 전처리
- 개발 환경 구축
- 세부 시간 feature 생성
- KcELECTRA(예정)를 이용한 선호 여부 라벨링
- 학습 데이터, 테스트 데이터 분할 및 저장
2. 모델 구조 설계 및 구현 (현재)
- 데이터 파이프라인 구축
- User Tower, Item Tower 클래스 구현
3. 모델 학습 및 평가 (현재)
- 모델 컴파일 및 학습
- 테스트 데이터셋을 이용한 성능 평가
4. 배포 준비 (Item Vector 사전 계산)
- 학습된 Item Tower를 이용해 모든 가게의 벡터 생성
- FAISS 인덱스 구축 및 저장
5. 실시간 추천 API 구현
- 서버 구성
- 모델 및 FAISS 인덱스 로드
- API 엔드포인트 생성
6. API 로직 완성 및 최종 테스트
- User Vector 생성 → FAISS 검색 → 결과 반환 로직 구현
- 통합 테스트
'Project > [AI] Deep Learning Model' 카테고리의 다른 글
| [추천 모델] 05. FAISS 인덱스, FastAPI 서버 구축 (0) | 2025.10.23 |
|---|---|
| [추천 모델] 04. 모델 구현 및 평가 (3): 모델 구현 마무리 (0) | 2025.10.17 |
| [추천 모델] 03. 모델 구현 및 평가 (2): Exp 2, 3 / Trouble Shooting (0) | 2025.10.16 |
| [추천 모델] 01. 데이터 전처리 (0) | 2025.10.14 |
| [추천 모델] 00. 모델 선정 및 설계 (0) | 2025.10.04 |