데이터사이언스/추천시스템 10

맥주 추천시스템 구현 - 3. 탐색적데이터분석

탐색적데이터분석 수집한 맥주 리뷰 데이터를 관찰하며 다각도로 시각화해보았습니다. 우선 필요한 라이브러리들을 import합니다. import pandas as pd import plotly.express as px import plotly.graph_objects as go import plotly.figure_factory as ff pd.set_option('display.max_rows', 100) beer = pd.read_csv('전처리후데이터.csv', encoding='utf-8', index_col=0) beer.head(3) 살펴 볼 데이터의 개략적인 정보들입니다. beer.info() 다음은 맥주 평점에 대한 히스토그램입니다. label = ['distplot'] hist_data = [..

맥주 추천시스템 구현 - 8. 웹 배포하기(Pythonanywhere)

✅git repository 만들기 git repository를 생성합니다. 생성한 후 화면입니다. 파이참에서 작업한 디렉토리를 이 repository에 올리겠습니다. ✅github push하기 git에 올리려는 디렉토리에서 다음 순서로 명령어를 실행합니다. 주의할 점은 .gitinit 파일을 생성한 뒤, 올리지 말아야 할 파일들은 제외합니다. 이것을 언어나 환경에 맞게 자동으로 맞추어주는 사이트도 있습니다. https://www.toptal.com/developers/gitignore 위 사이트에서 나온 텍스트 내용을 .gitignore에 Copy & Paste합니다. 추가로 Django의 settings.py에서 Debug모드를 False로 바꾸고, ALLOWED_HOSTS = ['*']로 변경합니다..

맥주 추천시스템 구현 - 7. 웹 구현하기(Django)

🔨URL 설정하기 우선 프로젝트 폴더의 urls.py를 수정합니다. 현재 프로젝트 이름은 myproject입니다. ''로 경로가 없으면 beer 앱의 경로로 넘어갑니다. from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('beer.urls')), ] 이번엔 beer 앱의 urls.py를 수정합니다. '' 경로로 접근 시 views.py의 index 함수를 실행합니다. ver1, ver2 역시 마찬가지로 views.py의 ver1, ver2 함수를 실행합니다. from django.urls import path fr..

맥주 추천시스템 구현 - 6. 웹 설정하기(Django)

🔨패키지 설치 및 환경설정 구현한 추천시스템을 웹으로 구현하고 배포까지 진행해보려고 합니다. 에디터는 Pycharm을 사용했고 Django로 구현할 예정입니다. New project 선택 후 새로운 프로젝트를 생성합니다. Django와 Pandas, scikit-learn 패키지를 가상환경에 설치합니다. 명령어를 터미널에서 실행합니다. pip install django pip install pandas pip install scikit-learn 그리고 새로운 프로젝트를 생성합니다. 프로젝트 이름은 myproject로 지었습니다. 디렉토리에 myproject 폴더가 추가되었습니다. 프로젝트를 처음 생성했으므로 다음 명령어로 database를 초기화 시켜주겠습니다. manage.py 파일을 사용하기 위해 ..

맥주 추천시스템 구현 - 5. CF 기반 추천시스템 구현

🔗아이템 기반 협업필터링(CF) 추천시스템 구현에 사용할 알고리즘은 아이템기반 CF입니다. 협업필터링(CF)은 최근접 이웃 협업필터링과 잠재 요인 협업필터링으로 나뉩니다. 그리고 최근접 이웃 협업필터링은 다시 유저 기반과 아이템 기반으로 나뉩니다. 그 중에서도 아이템 기반을 선택한 이유는 다음과 같습니다. 유저 개인의 취향이 너무 다양하다. 그에 반해 리뷰를 남기는 맥주 수는 한정적이다. 따라서 아이템 기반으로 추천하는 것이 적절하다고 판단했습니다. 🎇데이터 정제하기 수집한 맥주 데이터에는 리뷰가 1개인 맥주들이 있습니다. 리뷰를 남긴 유저들도 마찬가지입니다. 이는 추천시스템의 성능을 저하시킬 수 있으므로 최소 10개 이상의 리뷰를 가진 맥주와 유저들만으로 이루어진 데이터셋을 구성합니다. import p..

맥주 추천시스템 구현 - 4. 클러스터링

📊맥주별 클러스터링 시각화 이번엔 맥주 데이터를 5가지 평가 요소를 기준으로 클러스터링 해보았습니다. 향, 외관, 맛 등의 요소에 따라 서로 다른 군집들이 나타날 것 같았기 때문입니다. 우선 필요한 라이브러리들을 import하고 데이터도 불러오겠습니다. 시각화 라이브러리로는 📊plotly를 사용했습니다. import pandas as pd import numpy as np import plotly.express as px import plotly.graph_objects as go import plotly.io as po from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler, MinMaxScaler impor..

맥주 추천시스템 구현 - 2. 데이터 전처리

🍺리뷰 데이터 전처리 1. 여러 개의 파일 병합하기 우선 이전 포스팅에서 수집한 맥주별 csv 파일들을 하나로 합치겠습니다. import pandas as pd # 합친 데이터를 저장할 데이터프레임 data = pd.DataFrame(data=[], columns=['맥주정보', '검색이름', '맥주이름']) # 수집한 파일의 개수 files_cnt = 77 for i in range(files_cnt): # 해당 경로에서 beer_n_1.csv 형식의 파일들만 수집한 뒤 병합합니다. try : tmp = pd.read_csv(r'C:\Users\Ghyeon\beer_n_'+str(i)+'.csv', index_col=0) data = pd.concat([data,tmp]) # 오류 발생 시 넘어갑니다...

맥주 추천시스템 구현 - 1. 데이터 크롤링

🍺 리뷰 데이터 크롤링 💡 어떤 맥주를 수집할 것인가? 추천시스템 구현을 위한 리뷰 데이터를 먼저 수집하려고 합니다. 맥주 데이터를 크롤링 할 곳은 RateBeer라는 전 세계 맥주 리뷰 사이트입니다. BeerAdvocate와 함께 가장 큰 맥주 리뷰 사이트로 유명합니다. https://www.ratebeer.com 우선 필요한 라이브러리들을 가져오고, 수집할 맥주 목록을 정하도록 하겠습니다. import pandas as pd import numpy as np import time import re from selenium import webdriver from selenium.webdriver.chrome.options import Options 수집할 맥주는 국내 편의점에서 구매 가능한 맥주로 한정..

협업 필터링 - 최근접 이웃 협업 필터링이란? (CF)

1. 협업 필터링이란? Collaborative Filtering에서의 협업이란 다른 유저의 정보를 사용하겠다는 것입니다. 서로 평가한 내용들이 영향을 주고 받기 때문에 붙여진 이름이 아닐까 생각이 드네요. 협업 필터링은 최근접 이웃 협업 필터링(KNN)과 잠재 요인 협업 필터링 두 가지가 있습니다. 협업 필터링의 장점은 다른 유저들의 정보를 이용할 수 있다는 것입니다. 하지만 이전 포스팅에서 언급했던 Cold Start, Sparsity, First rater등의 단점도 존재합니다. western-sky.tistory.com/43 추천 시스템 - 컨텐츠 기반 필터링이란? (CBF) 추천 시스템 유형 목차 코로나로 인해 오프라인보다는 온라인 구매가 더 많아지고 있습니다. 온라인 마켓의 장점은 '시간과 공..

추천 시스템 - 컨텐츠 기반 필터링이란? (CBF)

코로나로 인해 오프라인보다는 온라인 구매가 더 많아지고 있습니다. 온라인 마켓의 장점은 '시간과 공간'에 제한되지 않는다는 것 같습니다. 문을 열고 닫는 시간도, 물건을 진열한 매장도 필요 없으니까요. 또한 사용자에게 구매할 가능성이 높은 제품을 '추천'해 줄 수도 있습니다. 이번 포스팅에서는 추천 시스템을 구현하는 방법 중 하나인 컨텐츠 기반 필터링에 대해 정리해보려고 합니다. 1. 컨텐츠 기반 필터링 추천시스템은 Utility Matrix에 기반하고 있습니다. Utility Matrix는 어떤 유저가 어떤 아이템들을 구매했는지를 나타낸 행렬입니다. 컨텐츠 기반 필터링은 '내용(Content)'에 알맞는 아이템을 추천해주는 것입니다. 유저 X가 아이템 Y를 구매했다면, Y와 비슷한 아이템을 추천해주는 ..