[0605] TIL 39일차

nikevapormax·2022년 6월 5일
0

TIL

목록 보기
38/116

😂 Django Project

😭 Machine Learning part

- 유저 기반 협업 필터링

  • 해당 필터링에서는 기준이 user가 된다.

  • 해당 필터링을 진행하기 위해 chosen_user를 선택한다. chosen_usercosine similarity 값이 비슷한 user들의 list를 뽑아낸다.

  • 우리는 어느 한 영화에 대해 chosen_user가 매길 평점이 궁금하므로 어느 한 영화에 대해 비슷한 user들이 매긴 평점을 table에서 가져오고 가중치를 계산한다.

  • 해당 값들을 바탕으로 chosen_user가 매길 평점을 예측할 수 있다.

- 아이템 기반 협업 필터링

  • 해당 필터링에서는 기준이 영화가 된다. (유저 기반과 반대의 세팅으로 시작)

  • 위와 동일하게 cosine similarity을 구해 사용하게 된다.

  • 이를 통해 우리가 선택한 영화와 비슷한 평점을 받은 영화들을 알아낼 수 있게 된다.

  • 해당 사항을 우리의 프로젝트에 적용하게 된다면 평점을 입력한 적 없는 user에 한해서 데이터가 일정 수준 이상 쌓이기 전에 user가 관심이 있을만한 영화를 제시하기 좋을 것 같다고 생각했다.

- 잠재 요인 협업 필터링

  • 해당 필터링은 이전 프로젝트에서 적용했었던 생선 구분 모델과 마찬가지로 트레인셋과 테스트셋을 나누어 필터링을 진행한다.
  • 필요한 사전 작업으로 평점의 범위를 정해주어야 하고, surprise 모듈을 설치해주어야 한다.
  • 흥미로운 점은 우리가 선택한 user우리가 선택한 영화를 보지 않았더라도 평점을 예측할 수 있다는 것이다.
  • 이를 통해서 우리가 선택한 user가 어떤 영화를 가장 좋아할지 알아낼 수 있다.
  • 해당 필터링이 우리 프로젝트에서 가장 유용하게 쓰일 것 같다는 생각이 들었다. 적당한 데이터가 쌓이게 된다면 해당 데이터를 바탕으로 우리가 가지고 있는 모든 영화들 가운데서 우리가 선택한 user가 좋아할만한 영화를 고를 수 있기 때문이다.
  • 처음에 장르를 바탕으로 나누어 주려 했는데, 현재 내가 알고 있는 필터링 모델 중에서는 장르를 직접적으로 사용하는 모델이 없는 것 같으므로 해당 모델이 적합하다는 생각이다.

- 영화 추천 컨셉

  • 처음 가입한 user는 본인이 선호하는 장르의 영화를 선택하게 한다.
  • 해당 user가 10개 이상의 평점을 부여하기 전까지는 아이템 기반 협업 필터링을 통해 user가 선택한 영화와 비슷한 평점을 받은 영화 중 비슷한 장르가 있다면 해당 영화를 우선적으로 제시하고, 없다면 비슷한 평점을 받은 영화를 제시한다.
  • 10개 이상의 평점을 부여한 user라면 해당 데이터를 바탕으로 잠재 요인 협업 필터링을 돌려 우리가 가지고 있는 영화 데이터셋 안에 있는 영화에 user가 부여할 예측 평점을 구하고, 평점이 높은 순으로 user에게 영화를 추천한다.
profile
https://github.com/nikevapormax

0개의 댓글