-
Surprise를 이용한 개인화 영화 추천 시스템 구축Python Machine Learning/추천 시스템 2021. 1. 22. 12:39
1. Surprise 패키지를 이용
- Surprise 패키지로 학습된 추천 알고리즘을 기반으로 특정 사용자가 아직 평점을 매기지 않은 영화 중에서 개인 취향에 가장 적절한 영화를 추천
2. 데이터 set
- rating.csv 이용
3. 데이터 로딩
ratings.csv 데이터를 학습 데이터와 테스트 데이터로 분리하지 않고 전체를 학습 데이터로 사용 -> Surprise는 데이터 세트를 train_test_split( )을 이용해 내부에서 사용하는 TrainSet 클래스 객체로 변환하지 않으면 fit( )을 통해 학습 불가.
데이터 세트 전체를 학습 데이터로 사용하기 위해 DatasetAutoFolds 클래스 이용 -> DatasetAutoFolds 객체를 생성한 뒤에 bulid_full_trainset( ) 메서드를 호출하면 전체 데이터를 학습 데이터로 만들 수 있음
SVD로 학습 userId 34이 아직 평점을 매기지 않은 영화를 movieId 13으로 선정한 뒤 예측 평점을 계산 사용자의 추천 예상 평점을 구하기 위해 predict( ) 메서드 사용 - 추천 예측 평점은 3.13
- 지금까지는 사용자가 평점을 매기지 않은 영화의 추천 예측 평점을 구하는 방법
get_unseen_surprise( ) 함수를 만들고 이를 이용해 사용자 아이디 34번이 아직 평점을 매기지 않은 영화 정보를 반환 학습된 추천 알고리즘 클래스인 SVD를 이용해 평점이 높은순으로 영화를 추천하기 위해 recomm_movie_by_surprise( ) 함수를 새롭게 생성 - recomm_movie_by_surprise( ) 함수의 인자로 학습이 완료된 추천 알고리즘 객체, 추천 대상 사용자 아이디, 추천 대상 영화의 리스트 객체,추천 상위 N개를 받음
- predict( )를 평점이 없는 영화에 반복 수행한 후 결과를 list 객체로 저장한 후 예측 평점이 높은 순으로 정렬.
- 평점이 높은 순서대로 정렬해본 결과 주로 드라마 장르의 영화가 추천되었음을 확인할 수 있음
'Python Machine Learning > 추천 시스템' 카테고리의 다른 글
Surprise 주요 모듈 (0) 2021.01.21 추천 시스템 패키지 - Surprise (0) 2021.01.21 아이템 기반 최근접 이웃 협업 필터링 추천 시스템 실습 (0) 2021.01.20 콘텐츠 기반 추천 시스템 실습 (0) 2021.01.19