본문 바로가기

Project/Deep Learning Model7

[추천 모델] 06. 백엔드 서버 연동 및 테스트 (完) 구성NestJS 백엔드 프로젝트에 recommendations 폴더를 생성하였다.Controller → Service → FastAPI 서버 순서로 API 호출이 진행된다.ModuleController와 Service를 묶어주는 모듈 구성이다.HttpModule을 등록하여 RecommendationService가 외부 서버인 FastAPI서버와 HTTP 통신을 할 수 있도록 설정한다.Controller - 클라이언트가 GET 방식으로 /recommendations 경로로 API를 요청하면 해당 컨트롤러가 요청을 받는다.- 이때, @GetUser() 데코레이터를 통해 로그인된 사용자의 ID 정보를 가져온다.- 가져온 사용자 ID와 현재 시각을 Service계층의 getPersonalizedRecommend.. 2025. 11. 1.
[추천 모델] 05. FAISS 인덱스, FastAPI 서버 구축 FAISS의 정의, 선택 이유FAISS란?Facebook Ai Similarity Search의 약자로, Meta의 AI 연구소에서 개발한 유사 벡터 검색 라이브러리.FAISS를 사용하는 이유도서관에서 책 A와 비슷한 책 10권을 찾고자 하는 경우에 비유하자면,일반적인 검색 방식은 모든 책을 책 A와 일일히 비교해야 한다.만약 책이 수십, 수백만권이면 굉장히 오래 걸릴 것이다. FAISS 방식으로 A와 비슷한 책 10권을 찾는 경우에는,미리 도서관의 모든 책의 핵심 내용을 요약하여 색인을 만들어 둔다.이후 색인을 활용해 A와 가장 비슷한 책 10권을 빠르게 찾아낸다. 현재 프로젝트에서 도서관의 책들은 가게 벡터(Item Vector)이고, 책 A는 사용자 벡터(User Vector)이다.즉 FAISS는 .. 2025. 10. 23.
[추천 모델] 04. 모델 구현 및 평가 (3): 모델 구현 마무리 Review Data 변경에 따른 재학습기존 리뷰 데이터는 user_id가 약 20종류, review수가 2,000여개였다.새로운 리뷰 데이터는 user_id가 약 370종류, review수가 3,700여개이다. 새로운 리뷰 데이터 바탕으로 지금까지의 모든 과정을 다시 진행해보겠다. 먼저, Baseline 모델이다.테스트 정확도는 6.79%이다. Exp2 모델이다.테스트 정확도는 12.25%이다.Baseline 모델에 비해 5.46%의 성능 향상을 보였다. Exp3 모델이다.이전 데이터셋을 통한 학습에서는 성능 감소 즉, 노이즈로 인식했었다. 테스트 정확도는 15.73%이다.Exp2 모델에 비해 3.48%의 성능 향상을 보였다. 이전 데이터셋에서는 meal_time 피처가 사용자의 선호를 학습하기에 불충.. 2025. 10. 17.
[추천 모델] 03. 모델 구현 및 평가 (2): Exp 2, 3 / Trouble Shooting Exp 2: category 추가기존 Baseline 모델에 category feature를 추가했다. 분석학습 데이터로 학습한 결과이다. Loss Graph - 빨간 선Baseline 모델과 같이 매우 안정적이다.epoch 2에서 가장 낮은 손실값을 기록했으며, 이후로 미세하게 증가하며 overfitting의 조짐을 보였다. Accuracy Graph - 빨간 선첫 epoch부터 10%를 넘는 정확도를 보였으며, 최종적으로 14%까지 상승했다.이를 통해 category feature를 통해 사용자의 취향을 더 잘 파악할 수 있게 되었다. 테스트 데이터를 통해 구한 Top-10 Accuracy는 약 15.6%이다.Baseline 모델에 비해 7.1% 향상되었다. (14% 개선)즉, 이 모델은 15.6% .. 2025. 10. 16.
[추천 모델] 02. 모델 구현 및 평가 (1): Baseline Model Baseline Model 구현가장 먼저 구현할 모델이다.이 모델에서는 최소한의 faeture 즉, user_id와 store_id만을 사용한다.이를 통해 모델은 사용자와 가게의 기본적인 관계를 학습한다.추후 다른 feature를 추가하여 점진적 복잡성을 구현한다. 이러한 순서로 진행하는 이유는 아래와 같다.1. 최소한의 성능 기준 확보최소한의 모델을 성능 기준으로 삼음으로써, 추후 여러 feature들이 추가되었을 때 그 feature가 모델 성능을 얼마나 향상시켰는지를 측정할 수 있다.2. 디버깅 용이성모델이 혹시라도 제대로 학습되지 않을 때, 원인이 user_id와 store_id 사이의 관계 문제인지, 아니면 다른 피처의 문제인지 찾아내기 쉽다. 모델의 핵심 구성은 위와 같다.user_id와 st.. 2025. 10. 16.
[추천 모델] 01. 데이터 전처리 프로젝트 폴더 구조 및 개발환경 설정위와 같은 구조로 폴더를 생성하였다.data ⎹ processed: 전처리된 데이터(학습, 테스트 데이터) 저장 ⎹ raw: 리뷰 데이터 원본 저장notebooks ⎹ saved_models: 모델 개발 중간 과정들을 저장 ⎹ ~.ipynb: 실제 코드 이후 venv를 통해 python 가상환경을 설정하여 각종 라이브러리의 버전 관리를 로컬과 분리하였다.데이터 전처리1. 데이터 타입 변환 및 결측치 확인이후 진행할 time값 피처 엔지니어링을 위해 time 데이터의 타입을 object에서 datetime으로 변경하였다.결측치 또한 없음을 확인하였다. 2. Time Feature Engineering사용자의 특정 시점 패턴을 파악하기 위해 t.. 2025. 10. 14.
[추천 모델] 00. 모델 선정 및 설계 추천 모델의 필요성현재 진행중인 프로젝트에서 다른 유사 플랫폼과 비교하여 우리 플랫폼을 써야 할 이유가 필요했다.여러가지 후보군들 중에 리뷰 기반 사용자 맞춤 추천 모델을 선택하였다.단순히 인기 있는 가맹점을 보여주는 것을 넘어서, 사용자 본인도 잘 몰랐던 숨겨진 패턴이나 취향을 파악해 플랫폼 사용 만족도를 높이고자 한다. 가상의 사용자 'A씨'의 사례를 중심으로 설명해보겠다.LSTM Model가장 먼저 떠올린 아이디어는 이전 머신러닝 수업에서 직접 배우고 학습까지 시켜봤던 LSTM 모델이다.A씨의 행동을 순서가 있는 순차 데이터(sequence)로 보고, 과거의 매장 방문 기록을 기반으로 다음의 방문할 매장을 예측하는 방식이다. A씨가 [ a 갈비집(저녁) → b 카페(점심) → c 칼국수(저녁) → .. 2025. 10. 4.