- 레시피 추천 프로세스
1️⃣ 회원가입 시 입력받는 것 : 사용자 나이, 성별, 키, 몸무게, 활동 레벨, 선호하는 음식 태그
2️⃣ 레시피 추천 기능 이용 시 입력받는 것 : 재료 (데이터기반 검색)
※ AI 모델을 훈련했던 레시피 데이터를 CSV 파일로 가지고 있다.
※ 사용자에게 맞는 권장 영양 성분표 데이터를 CSV 파일로 가지고 있다.
※ 레시피 데이터에서 가장 인기있는 레시피 정보를 담은 CSV 파일을 가지고 있다.
※ 각각의 레시피 아이템에 해당하는 다른 사용자들의 추천 아이템 정보를 담은 CSV 파일을 가지고 있다.
👩🍳 첫 번째 레시피 추천 과정 (내 정보 기반 추천)
- 레시피 데이터와 사용자 데이터를 비교 : 일치하는 재료 수, 태그 수 계산
- 재료 : 태그 = 7 : 3 비율로 점수 계산 후 내림차순으로 10개의 데이터만 필터링
- 10개 데이터의 영양 성분에 대한 정규화 표 생성
- 사용자 벡터 구한 후 각각의 데이터와 코사인 유사도 계산
- 가장 유사한 레시피 데이터 찾기 (코사인 유사도(-1 ~ 1) : 1에 가까울수록 유사하다)
- 유사한 아이템이 없다면 인기 아이템 CSV 을 읽어 랜덤 추천
🍳 두 번째 레시피 추천 과정 (다른 사람 추천)
- 모든 아이템에 대한 추천 결과가 들어있는 CSV 파일에서 첫 번째 레시피 추천에서 추천받은 아이템에 대한 추천 결과 제공하기
- 비어 있는 경우 인기 아이템 CSV 을 읽어 랜덤 추천
🧵 변경된 사항
- 두 번째 레시피 추천 과정에서 원래 바로 AI 모델을 통해 추론을 진행하여 결과를 제공하려고 하였으나, Colab 의 GPU 서버 사용 제한으로 인해 지속적으로 이용할 수가 없어 미리 CSV 파일을 S3 에 저장하여 다운받아 사용하였다.
- 또한 데이터의 양이 너무 많아 데이터베이스에 저장하지 않았고, CSV 파일은 pandas 로 처리하는 것이 더 빠르다고 판단하여 Colab 서버를 빌려 임시 운영하였다.
- 개발 환경
- Spring Boot 에서 Jython 의존성을 추가하여 AI 모델 훈련 및 추론 환경 구축
- 추천에 특화된 RecBole 프레임워크를 제공하는 RUCAIBox GitHub 를 Spring Boot 에서 Clone 하여 NGCF 모델 사용
- Colab 에서 Flask & Ngrok 를 이용하여 추천 요청 시 데이터 반환
- 개발 과정 기술 블로그
'AI' 카테고리의 글 목록
기록하는 공간 :-)
alsrudalsrudalsrud.tistory.com
- 전체 아키텍처
'AI' 카테고리의 다른 글
[AI] 레시피 추천 모델 만들기 - 에서 문제가 또 (GPU 너 뭐냐?) (2) | 2024.11.11 |
---|---|
[AI] 레시피 추천 모델 만들기 12 - Colab Migration (5) | 2024.11.06 |
[AI] 레시피 추천 모델 만들기 11 - 배포 준비하기 (2) | 2024.11.05 |
[AI/Git] 레시피 추천 모델 만들기 10 - clone 한 레포 git push 부터 대용량 파일 push 까지 (4) | 2024.11.04 |
[AI] 레시피 추천 모델 만들기 9 - Inference (3) 정리 (2) | 2024.10.31 |