ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 추천 시스템 패키지 - Surprise
    Python Machine Learning/추천 시스템 2021. 1. 21. 11:26

    1. Surprise란 ?

    - 파이썬 기반에서 사용하는 유사한 api와 프레임워크를 제공하는 추천 시스템 구축을 위한 전용 패키지

    2. 장점

    - 사용자, 아이템 기반 최근접 이웃 협업 필터링, SVD, SVD++등과 같은 다양한 추천 알고리즘들을 쉽게 적용해 추천 시스템 구축이 가능

    - 사이킷런의 핵심 API와 유사한 API

    3. 데이터 SET

    - MovieLens 데이터 세트 ml-100k

    4. 데이터 로딩

    데이터 로딩 및 학습 데이터 세트와 테스트 데이터 세트로 분리
    데이터를 내려받으면 로컬 디렉터리에 저장되며 데이터를 호출하면 사이트에 접속하지 않고   데이터세트를 로딩

    # ' ml-100k 데이터 세트는 이전 데이터 세트와 다르게 칼럼 분리 문자가 탭( \t )문자

    # Surprise 자체적으로 로우 레벨의 데이터를 칼럼 레벌의 데이터로 변경하므로 사용자-아이템 평점 데이터 적용할 때 내려받은 데이터 파일과 동일하게 로우 레벨의 사용자-아이템 평점 데이터를 그대로 적용해야함.

     

    추천 행렬 분해 알고리즘으로 SVD객체를 생성하고 학습 데이터 세트 기반으로 추천 알고리즘 학습수행

    Surprise에서 추천을 예측하는 메서드

    - test( ) : 입력된 데이터 세트에 대해 추천 데이터 세트를 생성

    - predict( ) : 개별 사용자와 영화에 대한 추천 평점을 반환

    5. test( )

    test( ) 메서드 실행 결과

    - test( 데이터세트 ) 호출 결과는 파이썬 리스트 형태, 크기는 25,000개, 호출 결과로 반환된 리스트 객체는

      25,000개의 Prediction 객체를 가지고 있음.

      ( Prediction 객체는 Surprise 패키지에서 제공하는 데이터 타입으로, 사용자 Id, 영화, 실제 평점

      정보에 기반해 Surprise의 추천 예측 평점데이터를 튜플 형태로 가지고 있음 )

    - was impossible이 True라면 예측값을 생성할 수 없는 데이터라는 의미.

     

    - 객체명.uid 형식으로 속성의 접근

    - 사용자 Id ( uid ), 영화 Id( iid ),  실제 평점( r_ui ), 추천 예측 평점( est )

    6. predict( )

    사용자 아이디, 아이템 아이디는 문자열로 입력

    - 개별 사용자와 아이템 정보를 입력하면 추천 예측 평점을 반환

    -> test( )는 데이터 세트의 모든 사용자와 아이템 아디에 대해서 predict( )를 반복적으로 수행한 결과

     

    Prediction의 리스트 객체를 기반으로 RMSE 평가

    - Surprise 패키지를 이용해 추천 시스템을 쉽게 구현 가능.

Designed by Tistory.