- 단국대학교 소프트웨어학과
- 개발기간: 2024.03 ~ 2024.06
- ML 기반 추천시스템과 랭킹 시스템을 활용한 패션 커뮤니티 플랫폼 개발
- 이 프로젝트는 패션에 대한 전문성을 갖춘 사람들과 일반 사용자들 간의 상호 교류 및 패션 관련 정보 공유를 위한 플랫폼을 개발하는 것을 목표로 합니다. 패션 전문가와 아마추어 모두가 사용자의 랭킹에 따라 전문성을 인정받을 수 있도록 하고, 인공지능 기반 추천 시스템을 통해 패션 관련 상품 및 스타일을 사용자들에게 제공합니다.
- 곽동윤 (소프트웨어학과) - 총괄 및 채팅 기능 개발 및 채팅 화면 구성 및 JWT를 활용한 로그인 기능 개발 및 화면구성
- 윤태현 (소프트웨어학과) - KNN과 스프링을 사용한 추천 시스템 로직 및 스케쥴링 기능 개발, GCP와 도커로 CI/CD 파이프라인 구축
- 이관현 (소프트웨어학과) - 게시판 및 유저 랭킹 기능 개발 및 게시판 화면 구성
- 벡엔드
- Spring
- AI
- KNN
- 프론트엔드
- React, HTML5/CSS5/JS
- 데이터베이스
- Redis, MySQL
- 서버 인프라
- Docker, Docker Hub, GCP, git action
- "비슷한 패션 취향을 가진 유저들끼리는 비슷한 취향의 패션 카테고리에 관심이 있을 것이다"의 아이디어로 KNN을 사용하여 비슷한 취향을 가진 N명을 선정하여 그들이 관심있어하는 패션 카테고리의 아이템을 추천합니다.
- 맨 처음에 사용자의 취향을 알기 위해서 회원가입 이후 첫 로그인시에 관심 분야 이미지 선택 페이지에 자동 접속하게 됩니다. 이후 수십개의 이미지 중 관심있는 패션 관련 이미지들을 선택하게 하여 관심있는 패션 카테고리 점수를 수집할 수 있게 됩니다. 이 패션 카테고리 점수로 초기 추천 시스템이 작동할 수 있습니다.
- 각 사용자의 패션 카테고리 점수는 사용자가 게시물을 조회하거나 게시물에 대해 평가를 내릴 때 변화하게 됩니다. 이 패션 카테고리 점수는 사용자에게 맞춤형 추천을 하기 위해 필요한 것이므로 트렌드를 반영해야 하는데 이는 사용자의 기록을 쌓다가 일정 기록 개수를 넘어서면 오래된 사용자의 조회와 평가 기록을 제거하면서 가능하게 합니다.
- 각 사용자의 패션 카테고리 점수들은 KNN의 학습 데이터가 되는데 스프링 스케쥴러를 사용해서 일정 주기마다 csv 파일로 변환하여 가능하게 합니다.
- 일정 주기마다 학습 데이터가 업데이트되면 업데이트된 학습 데이터를 사용해서 일정 주기마다 KNN 모델을 재학습합니다. 이렇게 하면 추천시스템을 주기적으로 최신화 할 수 있습니다.
- main 브랜치의 코드 변경 사항이 생기면
- git action을 통해 Spring Boot 애플리케이션과 도커 이미지가 빌드되고 이 도커 이미지가 도커 허브에 자동으로 푸시됩니다.
- GCP 서버에서 self-hosted runner로 도커 이미지를 풀 하고 기존의 컨테이너를 중지합니다.
- 최신 이미지를 컨테이너화 해서 실행시키고 사옹하지 않는 이미지를 정리합니다.