Skip to content

pladata-encore/DA36_mini2_Bookitoki

Repository files navigation

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

대문 이미지

프로젝트 이름 : 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을 진행해야하는데 시간 상의 문제로 진행하지 못한 점이 아쉬움으로 남음


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published