티스토리 뷰

728x90

안녕하세요. 은행 IT 운영부 이지성과장입니다.

 

이전 포스팅에서 말씀드렸듯이 내용 기반 추천 시스템 (contents based recommendation system)은 

자신이 선택한 영화와 비슷한 장르,  비슷한 스타일의 영화를 추천해주는 추천 알고리즘입니다.

예를들어, 배트맨, 수퍼맨과 같이 액션물을 좋아하는 사람에게 터미네이터를 추천해주는 방식입니다.

 

 

이번 포스팅의 주제는 이 알고리즘을 python 으로 구현해보도록 하겠습니다.

기초 데이터는 kaggle에서 이미 널리 알려진 "무비데이터"를 사용할 계획입니다.

 

[데이터셋 다운경로] https://www.kaggle.com/rounakbanik/the-movies-dataset

 

 <1> 데이터 셋을 읽어와서 데이터 형태를 확인합니다.

 

 

<2> 필요한 컬럼만 다시 가져옵니다.

 

id : user 아이디 입니다.

genres : 장르

vote_average : 영화에 대한 투표 평균 평점

vote_count : 영화에 대한 투표 카운트

popularity : 인기도

title : 영화 제목

belongs_to_collection : 검색 키워드

overview : 영화 개요

 

 

 

<3> 데이터 정제

genres 컬럼에서 name 추출해냅니다.

 

 

<4> 추천해주는 함수를 만듭니다.

추천에는 코사인 유사도를 사용하였습니다.

코사인 유사도로 장르에 포함 된 문자를 통해 유사도를 구할 수 있습니다. 이것은 python의

사이킷런 (sklearn) 패키지에서 쉽게 사용하실 수 있습니다.

 

추천함수의 구성은 아래와 같습니다.

1). 영화제목을 입력받는다.

2). 입력받은 영화제목의 장르와 가장 코사인 유사도가 유사한 영화들을 선별한다.

3). 입력받은 영화제목과 같은 영화 제목은 제거한다.

3). 평균 평점이 높은 순 -> 낮은 순으로 내림차순하여 상위 10개를 리턴한다.

 

 

 

<5> 결과를 한번 보겠습니다. 쥬만지 (Jumanji)와 비슷한 영화는 어떤 영화일까요?

 

 

아래 결과를 보시면 추천이 어느정도(?) 된거 같네요.

1위로는 해리포터

2위로는 후크 (피터팬?인가요?)

 

등이 추천되었습니다. 추천된 장르도 보니 알맞게 추천이 되었네요!!

 

 

코드는 아래 깃허브에서 다운 받아 참고하시기 바랍니다!

 

[깃허브] : www.github.com/jasonlee8318/Python/blob/master/CB_recommendation_cinemadata.ipynb

 

벌써 5월입니다. 년초에 계획하셨던 , 스스로 약속하셨던 것들이 각자 있었을 것으로 생각됩니다.

어느정도 달성이 되었는지 한번쯤 중간점검을 해보시는 것도 좋을 거 같습니다.

 

행복하고 건강한 가정의 달 5월 되시길 바랍니다!! ^^;

 

감사합니다.

728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
글 보관함