[ML]Collaborative Filtering(추천시스템)

건너별·2021년 11월 15일
0

ML

목록 보기
5/21

Collaborative filtering

  • content based filtering과 달리, 많은 사용자들로부터 얻은 기호정보에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법
  • 본 강의에서는 Collaborative filtering의 특성인 feature를 자동으로 학습하는 알고리즘에 대해 설명합니다.

등장배경

  • 위의 그림에서 4명의 이용자와 5개의 영화, 그리고 2개의 feature(romance, action이 있음)
  • 실질적으로 feature에 대한 수치화된 정보를 얻는 것은, 이용자들이 영화를 다 보고 설문을 남기는 방법 등으로 라벨링이 필요함(이 영화는 얼마나 로맨틱했나요? 등의 질문)
    -> 굉장히 어려운 작업

개념

  • 그러므로, feature 값들을 모른다고 가정해 보자.

이 때 각 개인의 θ(j)\theta^{(j)} 값들을 가정해 보자.

  • 로맨틱 선호하는 이용자는 [0;5;0][0;5;0], 액션을 선호하는 이용자는 [0;0;5][0;0;5] 로 된 벡터를 가정
  • 벡터 연산의 결과에 의해 각각 feature x1x_1, x2x_2 값을 학습

  • 그 결과로 θ1\theta_1,θ2\theta_2 의 연산 결과값이 5, θ3\theta_3,θ4\theta_4의 연산 결과값이 0 인 것으로 미루어 보았을 때 x1x_1 feature가 높은 값을 가질 것이라고 예측할 수 있음(낭만적인 영화라고 볼 수 있음)
  • 수식적으로 살펴 보면 , (θ(1))Tx(1)5(\theta^{(1)})^T x^{(1)} \approx 5, (θ(3))Tx(1)0(\theta^{(3)})^Tx^{(1)} \approx 0 임을 유추할 수 있다.

그리고 x(i)=[1;1.0;0.0]x^{(i)} = [1; 1.0; 0.0] 이 될 것.

일반화한 식

하나의 feature에 대한 계산식

  1. jj명의 이용자에 대한 선호도 정보가 담긴 parameter θ\theta 가정

  2. ii개의 feature에 대하여 학습을 통해 값을 예측

  3. j:r(i,j)=1j: r(i,j)=1 : j 번째 이용자가 남긴 평점 r(i,j)에 대해 iterate(j = 1,2,3)

  4. (θ(j))Tx(i)(\theta^{(j)})^T x^{(i)} = 예측한 평점

  5. y(i,j)y^{(i,j)} = 실제로 남긴 평점

  6. 나머지는 Regularization

여러 개의 feature를 아래와 같이 학습

업데이트 순서

guess θ\theta -> xx -> θ\theta -> xx ->...

  • 합친 알고리즘
  • 이 방법대로면,
    x0x_0 사라지고 x의 차원은 n+1 이 아닌, n이 됨 (xRnx \in R^n)

optimization

  1. x와 θ\theta 랜덤값으로 초기화

    • 이유는 symmetry breaking해서 다른 특징값으로 학습되도록 함이 목적
  2. gradient를 이용하여 J(x,θ)J(x,\theta) 최소화

Reference

  • Andrew Ng's ML - Collaborative filtering :

https://www.coursera.org/learn/machine-learning/lecture/f26nH/collaborative-filtering-algorithm

profile
romantic ai developer

0개의 댓글