Skip to content

Latest commit

 

History

History
127 lines (79 loc) · 5.15 KB

README.md

File metadata and controls

127 lines (79 loc) · 5.15 KB

머신러닝을 활용한 추천 시스템 구현

대문 이미지

프로젝트 이름 : Bookitoki

팀 이름 : Bookitoki

프로젝트 개요 : 다양한 사용자들에게 취향에 맞게 책 추천을 해주어 책에 대한 접근성을 높혀 활발한 독서 문화 형성에 기여하는 것.


개발 배경

  1. 잘파(Z+alpha) 세대의 저조한 문해력, 책 읽는 인구 감소 등. 독서를 경시하는 실태
  2. 텍스트 힙의 출현으로 등장한 팬덤 구매 현상 등 독서 소비의 형태 변화

개발 목적

독자들이 자연스럽게 책에 흥미를 느낄 수 있도록 접근성을 높이면서, 독서 문화의 토대를 만들어 나아가고자 '사용자 기반 책 추천 시스템 개발'


시장 조사

img_1.png


프로젝트 소개

  • 프로젝트 기간 : 2024.11.5 ~ 11.11
  • 팀원 : 김혜영, 유영준, 최수빈, 허채연
  • 목적 : 사용자 맞춤형 책 추천 시스템 구현

데이터 취득 및 전처리

데이터셋 : https://www.kaggle.com/datasets/ruchi798/bookcrossing-dataset/data

img_2.png img_3.png img_5.png


기능 개요

img_8.png

시연 영상

thumnail.png

허채연의 채널에서 보기

구현 기능에 따른 부가 설명

  • 사용자별 추천 기능 - 사용자가 읽은 책의 평점을 기반으로 평점 유사도가 높은 책 10권 추천

    • 평점 유사도 산출
    • 가중평점 예측
    • 가중평점 기반 상위 평점 도서들 조회
  • 작가별 추천 기능 - 사용자가 읽은 책의 작가에 대한 평가를 기반으로, 작가 평점 유사도가 높은 책 10권 추천

    • 사용자 아이디 입력 받기.
    • 입력받은 사용자 아이디 기반으로 그 사람이 가장 높은 평점을 준 작가 탐색
    • 그 작가와 유사도가 높은 책들 추천
  • 연령대별 추천 기능 - 사용자의 연령대별 상위 카테고리의 평점 높은 5권 추천, 다른 카테고리의 평점 높은 책 5권 추천 => 사용자게에 다양성 제공

    • 연령대 범주화
    • 범주화된 연령대에 맞춰, 유저의 연령대 확인
    • 유저의 연령대에 맞춰 해당 연령대가 높은 평점을 준 책 추천
  • 카테고리별 추천 기능 - 사용자가 읽은 책의 카테고리에 해당하는 상위 10권의 책 추천

    • 사용자별 상위 카테고리 찾기
    • 선택된 상위 카테고리에서 상위 책 10권 추천
    • 최종 추천 테이블 생성(입력값:user_id)

기대 효과

  • 독서 접근성 향상
  • 독서 문화 촉진
  • 차별화된 독서 경험 제공

소감

혜영

  • 정제되지 않은 데이터를 만나면서 데이터 수집에서부터 전처리 과정의 중요성
  • 단어 임베딩을 사용해 유사한 의미를 가진 단어를 찾아 추천 시스템으로 디벨롭

영준

  • 좌절을 통해서 해야하는 계기를 가지게 되었습니다.

수빈

  • 이번 과정을 통해 여러 플랫폼에서 어떤 식으로 추천을 해주는 지 알 수 있어서 좋았다.

채연

연령 별 선호하는 책의 유사도를 구하고 사용자가 선호하는 카테고리를 고려해 책 추천을 진행함

  • 해당 csv file은 뚜렷하게 구분지을 수 있을만한 category가 없어서 10개의 category로 나누어 summary 내용에 따라 L_category를 할당해줌

    • count기반 카테고리 별 추천시스템을 구현할 수 있었음
    • 연령별 유사도에 카테고리를 더해 좀더 다양한 추천을 진행할 수 있었음
  • user가 가장 섢호하는 카테고리의 책 5권과, 그렇지 않은 카테고리의 책 5권씩을 추천해줌

    • 카테고리에 유사도를 부여하게 되면 같은 카테고리에 대해서만 추천이 이루어지기 때문에 이렇게 진행함
      • 가중치를 두어서 카테고리와 유사도를 함께 반영해 추천해주는 시스템을 구축했으면 더 좋았을 것
  • 책에 대한 평점이 없는 데이터가 많고, 1~10점으로 점수의 편차가 커서 평점 유사도 면에서 아쉬움이 있음

    • 최소 평가 개수의 조건을 좀 수정해서 유사도를 높이는 작업을 진행함
      • 점수의 range를 줄이는 작업을 진행하면 좋았을 것
  • 리뷰나 카테고리에 대해서 CountVectorize, TF-IDF를 진행했더니 단순 빈도만 파악해서 summary나 category column에 대해 유의미한 결과를 도출하지 못함

    • ‘마틸다’라는 책은 학교에서 일어나는 일에 대한 sf 내용이였지만 , ‘study’라는 단어의 빈도수만 파악해서 연구와 관련된 책이 추천되는 사례가 있었음
    • summary를 기반으로 k-means clustering을 하는 것이 무의미했음
  • 국내 서점에 대한 데이터를 사용하려면 scraping을 진행해야하는데 시간 상의 문제로 진행하지 못한 점이 아쉬움으로 남음