CBF 추천 알고리즘으로 가장 기본적인 형태이다. CBF(Contents Based Filtering)는 데이터가 가지는 속성(Content)를 기반으로 또 다른 유사한 데이터를 추천해주는 알고리즘이다. 이 때 유사함이란 특정한 유사도(similiarity)를 기준으로 측정된 거리를 말하며 가까운 거리일수록 추천할만한 유사 데이터라고 해석한다. 데이터 전처리 CBF 알고리즘의 특성 상 keyword 항목이 데이터 안에서 중복되는 횟수가 적은 경우에는 추천시스템의 성능이 매우 떨어질 수 있다. 예를 들면 대다수가 액션 장르인 영화 데이터셋에서 오컬트 장르의 영화를 추천받기 원하는 경우와 같다. 따라따라서 조금 더 상위 개념의 keyword인 카테고리(분야)를 추가하여 데이터 사이에 겹치는 keyword를 ..
import pandas as pd import numpy as np import nltk from konlpy.tag import Okt # 그래프 %matplotlib inline import matplotlib.pyplot as plt import seaborn as sns # matplotlib 그래프 한글폰트 깨질 때 대처(Mac & Window) import matplotlib from matplotlib import font_manager, rc import platform if platform.system() == 'Windows': # 윈도우인 경우 font_name = font_manager.FontProperties(fname="c:/Windows/Fonts/HMFMMUEX.ttc")..
타겟 데이터 본 프로젝트는 교보문고의 분야별 베스트셀러에 대한 분석과 추천시스템 구현을 목적으로 한다. 따라서 프로젝트에 필요한 타겟 데이터는 다음과 같다. 교보문고 분야별 베스트 셀러의 정보 (목록, 출판사 등) 해당 도서의 키워드 (일본소설, 치유, 사회문제, 대화) 해당 도서 평점과 평점에 참여한 유저의 정보 해당 도서의 리뷰 (추후의 NLP 적용를 위한 플러스 알파) 교보문고는 분야별 베스트셀러 목록을 excel 파일로 제공한다. 따라서 베스트셀러의 데이터를 일일이 크롤링 해야하는 수고를 덜어 작업이 훨씬 순조로웠다. 베스트셀러 도서의 키워드 역시 제공한다. 키워드픽이라는 항목으로 도서의 분류, 혹은 내용에 대한 키워드를 선정하여 고객들이 구매 전 미리 알아볼 수 있도록 했다. 미리 실물 책을 읽..
이번 프로젝트는 추천시스템 구현을 목적으로 수행한 팀 프로젝트이다. 별도의 포스팅으로 다루겠지만 추천시스템은 데이터 사이언스 기술이 본격적으로 알려지기 전에도 흔하게 찾아볼 수 있는 기술이었는데 주로 온라인 쇼핑 등에서 쉽게 볼 수 있었다. 구매자의 이력을 파악하여 비슷한 종류의 제품을 추천해주는 방식이 일반적이었다. 하지만 데이터 시대에 이르러 추천시스템의 위력이 대중들에게 강력하게 인식된 계기는 유투브, 그리고 넷플릭스와 같은 OTT 서비스일 것이다. '유투브 알고리즘'은 하나의 용어이자 밈으로 까지 쓰여서 늦은 밤 불면증의 주범이 되거나 혹은 관련도가 전혀 없는 영상을 추천해 실소를 자아내고 있다. 요새는 전보다 훨씬 성능이 좋은 것 같긴 하지만. 주제 선정 데이터 분석 부트캠프에서 머신러닝에 접어..
프로젝트 개요 주제 : 코로나 시대 베스트셀러 특성 분석 / 교보문고 베스트 셀러 데이터를 활용한 추천시스템 구현 기여도 : 20% (총원 5명) 담당 부분 : 데이터 수집 (크롤링 코드 개발), 시각화 및 데이터 분석, 추천시스템 (CBF, CF) 프로젝트 진행기간 : 2022/02/09 ~ 2022/02/14 결과 : 추천시스템 프로젝트 발표회 2등 (데이터 분석 부트캠프 과정) 상세 내용 코로나시대 분야별 베스트셀러 분석 및 시각화 책 추천시스템 구현 : CBF (Contents Base Filtering), CF (Collaborative Filtering) Workflow 프로젝트 기획 코로나 시대 출판시장의 트렌드 및 특성 분석 교보문고 분야별 베스트셀러의 키워드 분석을 통한 인사이트 도출 책..
본 프로젝트의 마지막 단계는 리뷰 데이터의 감성 분석이다. 현재 데이터셋은 긍정과 부정이 극단적으로 나뉘어있는 형태이므로 감성 분석의 데이터로 적합하다. kaggle이나 dacon competition에서의 분류 알고리즘의 정확도를 높이기보다는 직접 기획부터 수집, 전처리, 분석까지 마친 데이터에 머신러닝을 통한 감성분석을 적용하는 것에 의의를 두었다. 데이터셋 전처리 이전 포스팅에서 중앙값을 기준으로 긍정과 부정으로 분류하였다. 머신러닝 알고리즘을 적용하기 전 사전 단계로 긍정, 부정 상태를 데이터에 인코딩하고 train, test 데이터셋으로 나누는 작업을 진행한다. 데이터셋 인코딩 df_pos = pd.read_csv('df_pos.csv',encoding='utf-8') # 긍정 데이터셋 df_p..
데이터 수집과 전처리를 통해 본격적으로 시각화와 분석을 위한 데이터셋을 구축했다. 이번에는 파이썬 라이브러리를 통해 EDA와 시각화를 진행해본다. 이번 시각화에서는 matplotlib과 seaborn을 주로 사용하였으며 분석 파트에선 nltk를 이용한 분석을 진행하였다. import matplotlib.pyplot as plt import seaborn as sns from nltk.stem.porter import PorterStemmer from nltk.tokenize import wordpunct_tokenize from nltk.corpus import stopwords import nltk nltk.download('punkt') 데이터 시각화 Count plot plt.figure(figsi..
지난 포스트까지 크롤링 코드를 통해 타겟 데이터를 수집하고 전처리를 위한 데이터 프레임을 구성하였다. 이번 포스팅에서는 전처리 이슈를 파악하고 해결하는 과정을 담아보려고 한다. 데이터 전처리 데이터 분석이든 ML이나 DL을 활용한 인공지능 관련 프로젝트든 가장 기본이 되는 재료는 데이터이다. data-driven한 프로젝트에서 본격적으로 분석하고 알고리즘을 적용하기 이전에 목적에 맞게 데이터를 가공하는 과정이 필요하다. 전처리 이슈는 수집된 raw 데이터를 직접 살펴보면서 체크한다. 기획 단계에서부터 타겟 데이터의 raw 데이터 특성을 파악하면 수집하는 단계에서 상당 부분을 미리 처리 할 수도 있을 것 같다. 또한 이슈 탐색에 공을 들이면 실제로 전처리를 수행하는 과정이 좀 더 명확해지는 것 같다. 전처..
데이터 분석 프로젝트의 두번째 단계는 타겟 데이터의 수집이다. 현업에서는 주로 DB에서 SQL등의 데이터베이스 언어를 통해 데이터를 불러오지만 타겟 데이터가 수집되어 있지 않은 경우에는 직접 크롤링을 통해 데이터를 확보해야 한다. 본 프로젝트는 메타크리틱에서 유저 리뷰를 크롤링한다. 메타크리틱 웹 페이지의 포켓몬 소드 항목이다. 왼쪽에는 유저가 매긴 평점이 나타나고 아이디와 리뷰 내용이 표시되어 있다. 본 프로젝트의 경우 리뷰에 대한 분석과 감성분석을 목적으로 하기 때문에 사용자 아이디를 제외한 평점과 리뷰 내용을 크롤이 해야 한다. (만약 사용자 아이디에 따른 추천시스템 프로젝트를 목표로 한다면 아이디 항목을 통해 구현해 볼 수 있을 것이다.) 크롤링 작업의 경우 웹 페이지 마다 접근 방법이 상이할 수..
메타크리틱 (Metacritic) 메타크리틱은 영화, 게임, TV 프로그램 등에 대한 평점을 제공하는 사이트이다. 평론가 평점부터 사용자의 코멘트, 평점까지 제공하기 때문에 다양한 분야에 걸쳐 전문가와 일반 유저의 의견을 파악할 수 있다. 주로 영화나 게임(영어권 사이트이기 때문에 주로 비디오게임)의 평점에서 공신력이 있다고 생각된다. 필자의 경우 영화를 좋아하고 취미가 비디오 게임이므로 자연스럽게 해당 사이트에서 평점과 의견을 찾아 보곤했지만 예상외로 게임에 관심이 별로 없는 경우에는 메타크리틱 사이트를 모르는 경우도 있었다. 영미권에서 훨씬 더 유명하고 활발히 운영되는 사이트이므로 일반 유저들의 리뷰데이터를 수집할 수있는 좋은 창구가 되고 있다. 위의 화면은 닌텐스 스위치 플랫폼의 게임에 대한 메타크..