AI

[AI] 레시피 추천 모델 만들기 13 - 최종 정리

alsruds 2024. 12. 9. 18:21
  • 레시피 추천 프로세스

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

 

 

  • 전체 아키텍처