반응형
Recommendation System, Contents Based Approach


/* 2017.7.5 by 3months. */


앤드류 응 교수님의 Coursera 머신러닝 강의를 정리한 포스팅입니다.


예 : 영화 평점 예측하기


Movie 

 Alice

Bob

Carol

Dave

 Love at last

 5

 5

 0

 0

 Romance Forever

 5

 ?

 ?

 0

 Cute puppies of love

 ?

 4

 0

 ?

 Nonstop car chases

 0

 0

 5

 4

 Swords vs. karate

 0

 0

 5

 ?


Notation



출처: http://3months.tistory.com/141 [Data Science & Personalized Medicine]

예 : 영화 평점 예측하기


Movie 

 Alice

Bob

Carol

Dave

 Love at last

 5

 5

 0

 0

 Romance Forever

 5

 ?

 ?

 0

 Cute puppies of love

 ?

 4

 0

 ?

 Nonstop car chases

 0

 0

 5

 4

 Swords vs. karate

 0

 0

 5

 ?


Notation



출처: http://3months.tistory.com/141 [Data Science & Personalized Medicine]

예 : 영화 평점 예측하기


Movie 

 Alice

Bob

Carol

Dave

 Love at last

 5

 5

 0

 0

 Romance Forever

 5

 ?

 ?

 0

 Cute puppies of love

 ?

 4

 0

 ?

 Nonstop car chases

 0

 0

 5

 4

 Swords vs. karate

 0

 0

 5

 ?


Notation



출처: http://3months.tistory.com/141 [Data Science & Personalized Medicine]

예 : 영화 평점 예측하기


Movie 

 Alice

Bob

Carol

Dave

 Love at last

 5

 5

 0

 0

 Romance Forever

 5

 ?

 ?

 0

 Cute puppies of love

 ?

 4

 0

 ?

 Nonstop car chases

 0

 0

 5

 4

 Swords vs. karate

 0

 0

 5

 ?


이러한 영화 평점 테이블에서 missing value(?) 을 예측하는 것이 recommendation system의 목적이다. 그렇다면 어떻게 평점을 예측할 수 있을까? 한 가지 방법은 바로 Content Based Recommendation Approach이다.


 Movie

 Alice

 Bob

 Carol

 Dave

 x1(romance)

x2(action)

 Love at last

 5

 5

 0

 0

0.9

 0

 Romance Forever

 5

 ?

 ?

 0

 1.0

 0.01

 Cute puppies of love

 ?

 4

 0

 ?

 0.99

 0

 Nonstop car chases

 0

 0

 5

 4

 0.1

 1.0

 Swords vs. karate

 0

 0

 5

?

 0

 0.9


다음과 같이 영화에 대한 feature가 있다고 가정하자. x1은 romance 장르의 정도를 나타낸다. 그러면 Love at last에 대한 feature vector x_1 = [1 0.9 0] 이라고 하자. (첫번째 원소인 1은 interceptor feature이다.) Romance Forever의 feature vector을 x_2이라하면 x_2 = [1 1 0.01] 이라고 할수 있다.


그러면 이를 linear regression으로 풀 수 있다. 각 사람마다 parameter 3개가 있다고 보고 이 파라미터를 러닝하면된다. 그리고 종속변수는 rating이다. 만약 alice의 파라미터인 parameter(alice) = [0 5 0] 이라고 가정한다면, alice의 cute puppies of love에 대한 평점의 예측값은 [0 5 0][1 0.99 0] = 4.95이다. 지금은 그냥 파라미터값을 임의로 정한 것이지만 이 파라미터들을 러닝할 수 있을 것이다.


이렇게 Contents의 속성을 통해 rating을 예측하는 방법을 contents based recommendation system이라 한다. 이러한 contents의 속성별로 유저가 각각의 속성에 대응하는 파라미터를 가지고 있다고 보면 되는 것이다.




수식으로 표현하면 위와 같다. 우리의 목적은 데이터를 통해 유저마다 존재하는 파라미터를 학습하는 것이다. 이 파라미터와 영화 속성값과의 내적값을 통해 rating을 구할 수 있다.  또한 user j의 평가한 영화의 갯수 m(j)를 regulariztion term에 넣어서 활용할 수 있다. (데이터가 적은 사람은 overfitting을 방지하기 위해 더 regularization한다.)





파라미터 학습 방법은 위와같은 squared error을 최소화 시키면된다. 또한 overfitting을 방지하기 위해 regularization term을 넣어줄 수도있다. 이를 위해서 mle 같은 통계적인 모수 추정방법을 사용할 수 있지만 머신러닝에서는 gradient descent 방법을 일반적으로 사용하여 구하게 된다. gradient descent 방법에서는 iteration을 돌면서 파라미터들을 변경시켜 오차값을 줄이는 방식으로 동작한다.


contents based approach의 단점은 영화나 책에 대하여 feature를 알아내는 것이 어렵다는 것이다. 이 영화가 얼마나 로맨틱한지 얼마나 액션영화인지 그 정도를 수치화해서 feature로 정의하는 것은 간단하지 않다.


반응형
반응형