ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 객체로 저장한 후 예측 평점이 높은 순으로 정렬.

    - 평점이 높은 순서대로 정렬해본 결과 주로 드라마 장르의 영화가 추천되었음을 확인할 수 있음

Designed by Tistory.