신촌에 있는 치킨가게들중 괜찮은 가게를 추천하는 프로젝트
데이터는 요기요에 있는 신촌의 치킨가게 리뷰데이터를 파이썬의 셀레니움을 이용해서 수집
martrix factorization과 통계적 추천시스템,코사인 유사도를 이용해서 추천을 해주고, 자연어 처리를 이용해 리뷰를 분석해서 각 치킨집마다 특성을 추출 (wordcloud나 키워드 추출)
김주은,안지완,윤선영,최영우
- 크롤링으로 데이터 수집
- mf와 통계적 시스템을 이용한 추천시스템 구현
- krwordrank라이브러리를 이용한 wordcloud와 키워드 추출하기
- 발표
신촌의 치킨가게들중에서 한 가게당 100 ~ 300개 정도의 리뷰를 가져와서 약 50개의 가게에서 12000개의 리뷰를 셀레니움을 이용해서 수집함.
수집후에 전처리를 거쳐서 만든 데이터를 이용해서 치킨 가게를 추천함. 이때 통계적 시스템으로는 평균평점이 높은 순으로 추천해주거나, 최근 판매율이 높은 순으로 추천하는 것을 구현하였고, matrix factorization으로는 사용자의 기존 리뷰에 근거한 취향과 알맞는 치킨을 추천하도록 구현하였고, 코사인 유사도를 이용해서는 사용자가 최근에 구매한 가게와 비슷한 가게를 추천하도록 구현함.
코사인 유사도 기반으로 추천하기
이후 리뷰분석을 하였는데 konlpy와 krwordrank로 키워드를 추출하는 등의 분석을 진행함
알맞는 치킨가게를 추천하였으며, 리뷰분석을 통해서는 평점이 좋더라도 리뷰에 부정적인 단어가 들어있음을 확인하였고, 기존에 치킨이라는 음식의 특성상 사람들이 평점을 후하게 준다는 것을 입증함
- 데이터 크롤링를 이용한 리뷰 데이터 수집
- 통계, matrix factorization, 자연어 처리 등 여러 가지 방식을 이용해 데이터 분석
- 다양한 방법으로 추천에 도움을 줄 수 있는 기능 구현
- 전처리부터 구현까지 전부 구현해볼 수 있었음
- 가설 확인
- id가 왼쪽 두 글자만 나와 다른 사람이지만 같은 id로 보임
- 단순 코사인 유사도 기반으로는 정확한 추천에 어려움이 있음
- 치킨집 외에 다른 가게에 적용을 시켜보지 않아서 치킨 도메인 특성의 영향이 있는지 정확한 확인이 어려움
- 과적합의 위험
- id가 왼쪽 두 글자만 나와 더 정확한 추천을 위해 보완
- 특정 가게의 부정 리뷰를 평점 낮은 순으로 정렬해서 확인할 수 있는 기능 추가 가능
- 하이퍼 파리미터 튜닝을 통해서 성능을 올렸지만 과적합의 위험이 있기 때문에 앙상블이나 여러 기법 등 사용
- 데이터의 경우 정보가 적어서 다음에는 좀 더 구체적인 정보의 크롤링의 필요성을 느낌
- 추가적인 정보가 없어서 추천의 한계가 있음
- 프로젝트 회의를 여러 번 하면서 엄청난 시간과 소통(…)이 필요하다는 것을 깨달음
- 데이터를 직접 수집하는 것은 시간이 매우 많이 필요
- 정확한 데이터 분석을 위해 자세한 전처리 과정이 필요
- 전처리 방법에 따라 결과가 크게 달라질 수 있음