반응형
Model Based Collaborative Filtering (MBCF)
NBCF의 한계
- Sparsity(희소성) 문제
- 데이터가 충분하지 않다면 추천 성능 떨어짐
- 데이터가 부족하거나 아예 없는 유저 추천 불가능(cold start)
- Scalability(확장성) 문제
- 유저와 아이템이 늘어날수록 유사도 계산이 계속 늘어남
- 유저,아이템이 많아야 정확한 예측을 하지만 반대로 시간이 오래 걸림
모델 기반 협업 필터링
데이터에 내재한 패턴을 이용해 추천하는 CF기법
- Parametric Machine Learning을 사용
- 주어진 데이터를 사용하여 모델을 학습
- 데이터 정보가 파라미터의 형태로 모델에 압축
- 모델의 파라미터는 데이터의 패턴을 나타내고 최적화를 통해 업데이트
모델 기반 CF vs 이웃 기반 CF
- 이웃 기반 CF는 유저와 아이템 벡터를 데이터를 통해 계산된 형태로 저장
- 모델 기반은 유저, 아이템 벡터 모두 학습을 통해 변하는 파라미터
- 현업에서 Matrix Factorization 기법이 가장 많이 사용됨.
- 최근 MF 기법을 딥러닝 모델에 응용하는 기법이 높은 성능을 냄
모델 기반 CF의 장점
- 모델 학습과 서빙이 가능함
- 유저-아이템 데이터는 학습에만 사용하고 학습된 모델은 압축된 형태로 저장
- 이미 학습된 모델을 통해 추천하기 때문에 서빙 속도가 빠름
- 희소성/확장성 문제 개선
- 이웃 기반 cf에 비해 sparse한 데이터(빈 행렬)에서도 좋은 성능을 보임
- 사용자, 아이템 개수가 많이 늘어나도 좋은 추천 성능을 보임
- Overfitting 방지
- 이웃 기반은 특정 주변 이웃에 의해 크게 영향을 받는거와 달리 모델 기반은 전체 데이터의 패턴을 학습
- Limited Coverage 극복
- 이웃기반은 공통의 유저 또는 아이템을 많이 공유해야 유사도 값이 정확해짐
Feedback data
- Explitcit feedback vs Implicit Feedback
- Explitcit feedback
- 영화평점,맛집,별점 등등
- Implicit Feedback
- 클릭 여부, 시청 여부 등 item에 대한 user의 선호도를 간접적으로 알 수 있음
- 유저-아이템 간 상호작용이 있었다면 1(positive)을 원소로 갖는 행렬로 표현 가능
- 암시적 반응 데이터의 크기가 훨씬 크고 많이 사용됨
Latent Factor Model(임베딩이라는 말을 더 씀)
- 유저와 아이템 관계를 잠재적 요인으로 표현할 수 있다고 보는 모델
- 다양하고 복잡한 유저와 아이템의 특성을 몇개의 벡터로 compact하게 표현
- 유저 - 아이템 행렬을 저차원의 행렬로 분해하는 방식으로 작동
- 각 차원의 의미는 모델 학습을 통해 생성되며 표면적으로 알 수 없음
- 같은 벡터 공간에서 유저와 아이템 벡터가 놓일 경우 유저와 아이템의 유사한 정도를 확인할 수 있음.
- 유저 벡터와 아이템 벡터가 유사하게 놓인다면 해당 유저에게 해당 아이템이 추천될 확률이 높음.
Singular Value Decomposition(SVD)
- Rating Matrix R에 대해 유저와 아이템의 잠재 요인을 포함할 수 있는 행렬로 분해
- 유저 잠재 요인 행렬
- 잠재 요인 대각 행렬(잠재 요인의 중요도)
- 아이템 잠재 요인 행렬
- 선행 대수학의 차원 축소 기법중 하나로 분류됨
- PCA도 차원축소기법 중 하나
Full SVD
$R = U\Sigma V^T$
- (수학 공식 ctrl+shift+e)
- U : 유저와 Latent Factor의 관계
- V : 아이템과 Latent Factor의 관계
- 시그마 : Latent Factor의 중요도
- $RR^T$을 고유값 분해해서 얻은 직사각 대각 행렬 대각원소들은 R의 singular value(특이치)
Truncated SVD
$R = U\Sigma V^T$ (인데 축소된것!)
- 대표값으로 사용될 k개의 특이치만 사용
- R은 축소된 U, V, 시그마에 의해 계산됨
- 몇개의 특이치만을 가지고도 유용한 정보 유지 분해된 행렬이 부분 복원되면서 가장 중요한 정보로 요약된다는 개념
- 각각의 K개의 Latent Factor는 유추할 수 있을 뿐 정확히 무엇을 의미하는지 알 수 없음
- 유저,아이템의 행렬을 적은 차원의 행렬로 분해한다는 것은 앞선 MF와 같은 개념
SVD의 한계점
- 분해할려는 행렬의 Knowledge가 불완전할 때 정의되지 않음
- 실제 대부분의 데이터는 sparse matrix
- 따라서 결측된 entry를 모두 채우는 imputation을 통해 Dense Matrix를 만들어 SVD 수행
- imputation : 결측된 entry를 0 또는 유저,아이템의 평균 평점으로 채움
- imputation은 데이터의 양을 상당히 증가시키므로, 컴퓨팅 연산 비용이 높아짐
- 정확하지 않은 Imputation은 데이터를 왜곡시키고 예측 성능을 떨어뜨림
- 행렬의 entry가 매우 적을 때, svd를 사용하면 과적합 되기 쉬움
- SVD의 원리를 차용하되, 다른 접근 방법이 필요! ⇒ MF의 등장
Matrix Factorization(행렬 분해)
- user-item 행렬을 저차원의 user와 item의 latent factor 행렬의 곱으로 분해하는 방법
- svd의 개념과 유사하나, 관측된 선호도(평점)만 모델링에 활용하여, 관측되지 않은 선호도를 예측하는 일반적인 모델을 만드는 것이 목표
- Rating Matrix를 P와Q로 분해하여 R과 최대한 유사하게 R-bar를 추론(최적화)
- $R \approx P *Q^T = \bar{R}$
- $P = |U| * k$ (전체 유저수 *k개의 latent factor)
- $Q = |I|*k$ (전체 아이템수 *k개의 latent factor)
- Objective Function을 정의하고 최적화 문제를 푸는 것
- true rating : $r_{ui}$
- predicted rating
- $r_{ui}$ : 학습 데이터에 있는 유저 u의 아이템 i에 대한 실제 rating
- $p_u(q_i)$ : 유저(아이템)의 latent vector
- 최적화 문제를 통해 업데이트 되는 파라미터
- $\lambda$(상수)배 된 penalty term은 L2-정규화(regulaization)를 의미
- 학습 데이터에 과적합되는 것을 방지함
- 실제 관측된 데이터만을 사용하여 모델을 학습(SVD는 행렬 분해를 위해 결측 entry를 채워넣었음)
정규화(regulaization)란?
- weight를 loss function에 넣어주면 weight가 너무 커지지 않도록 제한이 걸려 overfitting 방지
- Regulazation Term에 곱해지는 람다의 크기에 따라 영향도가 달라짐
- 람다가 너무 크면 가중치가 제대로 변하지 않아서 학습이 일어나지 않는 과소적합이 일어남
반응형
'Study > AI' 카테고리의 다른 글
RL 기초익히기 및 다양한 기법에 대해 (1) | 2024.03.21 |
---|---|
[ML] 머신러닝 프로젝트 사이클 (0) | 2023.05.07 |
[AI] Collaborative Filltering(협업필터링) (0) | 2023.04.02 |
[AI] 추천시스템 기초 (0) | 2023.04.02 |
[AI] 다양한 최적화 방법 (0) | 2023.03.26 |