유사도 기반 RecSys를 활용한 룸메이트 추천시스템, Chekhumate

작성자 이다은
학과 또는 소속(회사명) 컴퓨터공학과
조회수 5
평가(좋아요)수 0
댓글수 0
✏️ 한 줄 소개: RecSys르경희대학교 내 룸메이트

✔️ 사용 기술
Front: Html + Css + JavaScript
Server: Flask, MySQL
AI: Faiss, SBERT, Sckit Learn

✏️ 배경
경희대학교 내 학생들은 자신과 맞는 룸메이트를 구하기 위해, 에브리타임이라는 대학생 커뮤니티 앱에서 자신의 프로필을 작성하고, 게시글들을 하나하나 확인하여 자신과 맞을 것 같은 사람을 찾고 따로 쪽지를 보내는 번거로운 과정을 거치고 있습니다. 또 다음 번에 룸메이트를 구할 때 게시글을 다시 올려야하는 어려움도 있습니다.
이러한 과정을 간단하게 하기 위해, 자신의 프로필을 작성해 이를 룸메이트를 구할 때마다 재활용하고 추천 시스템을 통해 나와 잘 맞을 것 같은 룸메이트를 추천해주는 시스템을 개발하게 되었습니다.

개발 과정

⬛️ 데이터 수집

2021년부터 2024년까지의 기숙사 룸메이트 체크리스트 이미지 데이터에서 데이터를 수집하여 총 133행의 데이터를 얻었습니다.
수집된 데이터를 10개 속성을 갖는 사용자 데이터와 9개 속성을 갖는 희망 데이터로 분리하여 데이터베이스에 입력했습니다.
수집된 속성으로는 나이, 학번, 성별, 전공, 취침시간, 청소 빈도, 흡연 여부, 음주 빈도, MBTI가 있습니다. 구체적으로, 사용자 데이터의 경우, 한 줄 소개를 위한 플레이스홀더가 포함됩니다. 이는 한 줄 소개를 기반으로 유사한 키워드를 가진 사람들을 추천하기 위한 것입니다.

⬛️ 특징 유사도
각 사용자의 특성과 wish_user의 원하는 특성 사이의 특징 유사도를 계산합니다(성별은 동일하게 설정).
가장 유사한 기능을 기준으로 index(user_id)를 기준으로 상위 10개 일치 항목을 생성합니다.

⬛️ 문장 임베딩
특징 유사도에서 얻은 상위 10개 일치 항목에 해당하는 문장 쌍을 입력합니다.
사전 학습된 BERT 모델을 사용하여 각 입력 시퀀스를 임베딩 벡터로 변환합니다.
변환된 임베딩 벡터에 풀링 작업(일반적으로 평균 풀링)을 수행하여 이를 문장 임베딩 벡터로 변환합니다.

⬛️ 유사성 추출
문장 임베딩을 통해 얻은 각 user_id에 대한 임베딩 벡터 간의 인덱스 유사성을 추출합니다.
각 행(user_id)에 대해 행 번호에 해당하는 user_id의 one_sentence와 다른 10개 인덱스의 문장 임베딩 벡터 간의 유사도를 계산합니다.
가장 높은 유사도를 기준으로 상위 2개의 일치 항목을 반환합니다.

✅ 담당 역할
배아람 Leader, Data Preprocessing, Data Modeling, Frontend
이준혁 Data Collection, Data Modeling
이다은 Data Collection, Frontend, Backend
이수민 Data Collection, Design, Frontend
조준영 Data Collection, Design, Frontend
한주상 Data Collection, Frontend

유사도 기반 RecSys를 활용한 룸메이트 추천시스템, Chekhumate

조회수 5
평가(좋아요)수 0
댓글수 0
게시 : 2024년 11월 20일
이다은 컴퓨터공학과

유사도 기반 RecSys를 활용한 룸메이트 추천시스템, Chekhumate

조회수 5
평가(좋아요)수 0
댓글수 0
게시 : 2024-11-20

Member

배아람, 조준영, 이수민, 이준혁, 이다은, 한주상

Keyword

RecSys, 데이터 처리, 추천시스템, Faiss, SBERT

  • 인공지능
  • 데이터분석
  • 모바일/IoT