2022. 5. 15. 10:20ㆍAI/Machine learning
- 목차
Serious
^
| Amadeus
The Color |
purple | Avengers
|
|
|
Sens and | Ocean's Lethal
Sensibility | 11 Weapon
geard <------------+---------------------> geared
toward | toward females | males
The lion
king
|
The | Independence
Princess | day
Diary |
v Dumb and Dummer
Funny
모든 영화를 2가지 관점으로 분류
남성취향, 여성취향
or
진지한 영화, 재밌는 영화
영화를 벡터로 mapping
Latent factor model: matrix factorization
CF는 대표적인 '메모리 기반'의 추천 알고리즘이다. 반면에 Matrix Factorization은 '모델 기반'의 추천 알고리즘이다.
이는 Utility matrix에서 latent 즉, 잠재 factor들을 학습하여 각 item의 특징이 무엇인지를 파악하는 것이다.
장점
학습 이후 '추론'은 매우 빠르게 수행할 수 있다.
단점
많은 계산이 필요하다.
utility matrix R에서 user와 (Q) item(P)를 추출 (분해)
이후, R 내 빈곳 (no rating)을 Q row와 R column의 내적으로 예측한다.
Utility Matirx R를 두 matrix의 곱으로 표현
R = Q ⋅ P^T
Q : Q의 각 row는 사용자 한 명
P^T : 각 column은 하나의 item
latent space mapping
fully connected neural network임 rating matrix를 2개의 matrix로 분해하는 방법
사용자 잠재요인 행렬(User matrix)과 아이템 잠재요인(Item matrix)행렬로 분해
P x Q^T를 하면 Rhat이 되며 이는 R의 예측치
Rhat이 최대한 R에 가까운 값이 되도록 하는 P와 Q를 구하면 이것이 추천 모델이됨
k = 2인 경우 (잠재요인이 2개)
사용자와 영화의 특성을 두 개의 요인으로 나타냄
SGD 를 사용한 MF 알고리즘
MF의 핵심은 주어진 사용자, 아이템의 관계를 가장 잘 설명하는 P, Q 행렬로 분해하는 것
- K의 개수를 정하고, (이는 직관적으로 혹은 다양한 실험을 통해 결정)
- K에 따라 P(M x K)와 Q (N x K) 행렬을 만들고 초기화 (random한 값으로 초기화)
- P, Q 행렬로 예측 평점인 Rhat을 구하고 이와 실제 평점간의 오차를 구해 이를 줄이는 P, Q 값으로 갱신
- 오차 수준이 미리 정한 임계치 이하가 되던가, 특정 반복 횟수에 도달 시까지 반복하여 학습
예측 오차
오차에 대한 RMSE
P와 Q로 편미분 하여 gradient를 계산
미분된 gradient로 p와 q를 갱신하여 오차가 줄어들게 함
연산 반복시 마다 실제 평점이 존재하는 모든 (pi, qj) 조합에 대해 예측값과 오차를 계산 후 pi와 qj를 update하면 점차 오차가 줄어들어 정확한 P와 Q 행렬을 얻게됨
overfitting을 막기 위해서 "regulariztion" 항(베타)을 추가함
pi와 qj로 편미분한 값으로 갱신
전체 평균 값의 갱신
구현 코드
SGD 부분
def sgd(self):
for i, j, r in self.samples:
prediction = self.get_prediction(i, j)
e = (r - prediction)
self.b_u[i] += self.alpha * (e - self.beta * self.b_u[i])
self.b_d[j] += self.alpha * (e - self.beta * self.b_d[j])
self.P[i, :] += self.alpha * (e * self.Q[j, :] - self.beta * self.P[i,:])
self.Q[j, :] += self.alpha * (e * self.P[i, :] - self.beta * self.Q[j,:])
'AI > Machine learning' 카테고리의 다른 글
비트코인 가격 예측 모델 (0) | 2024.01.12 |
---|---|
Surprise (0) | 2022.05.15 |
데이터 마이닝 1 (0) | 2022.05.14 |
CF model with visual information (0) | 2022.03.27 |
언어모델 (0) | 2022.03.13 |