2024. 10. 25. 12:07ㆍBio-python/Deep-learning
Collaborative Filtering (CF, 협업필터링)
1) Memory-Based Approach
User-based Filtering
1. 평점 유사도 기반으로 자신과 유사한 사용자를 찾음
2. 유사한 사용자가 좋아하는 item 추천
여기서 유사한 정도(거리) 측정 방법은 다양함
- 사용자(행) - 아이템(열) 행렬을 사용함
• 일반적인 거리 측정 방법론
- Cosine Similarity ( 일반적으로 사용되는 유사도 )
사용자 u와 사용자 u′가 같은 방향성을 보고 있지는를 평가함
- Pearson Similarity
평균적인 경향성에서 얼마나 차이가 나는지를 기반으로 함
Centered Cosine Similarity 라고도 함
평균을 빼므로, 사용자 u와 사용자 u′가 함께 사용한 아이템이 꽤나 있어야 함
어떻게 예측하냐?
각 사용자의 편차와 유사도 가중치를 사용하여 사용자 a가 아이템 j에 대해 예측하는 방법
- : 사용자 a가 아이템 j에 대해 예측한 평점.
- User a's neutral: 사용자 a의 평균 평점.
- User a's estimated deviation: 사용자 a와 다른 사용자 ii 간의 유사도를 가중치로 한 평점 편차.
- User i's deviation: 사용자 i가 아이템 j에 대해 실제로 매긴 평점과 사용자 i의 평균 평점 간의 차이.
즉, 사용자 a가 아이템 j에 대해 예측된 평점은: 사용자 a의 평균 평점에, 다른 사용자들의 편차 (즉, 사용자 i가 아이템 j에 대해 매긴 실제 평점 - 사용자 i의 평균 평점)을 유사도 가중치로 조정한 값을 더한 결과
item-based Filtering
1. 특정 item을 좋아하는 사용자를 찾음
2. 그 사용자들이 공통적으로 좋아했던 다른 item을 찾음
어떻게 예측하냐?
이미지에 있는 테이블에서 사용자 Ua는 아이템 j에 대한 평점이 아직 없고, 이를 예측하려고 할때, Ua가 이전에 평가한 2, 3, 4에 대한 정보와 이 아이템들이 j와 얼마나 유사한지를 고려하여 j에 대한 예측 평점을 계산하는 방식
- 정확도 측정에 사용되는 평가지표는?
- MAE, RMSE
- K개의 추천에 대한 정확도와 재현율을 측정하는 지표는?
- Precision@K, Recall@K, F1@K
- 추천 순서까지 고려한 정확도 측정 지표는?
- MAP@K
- mAP는 각 사용자마다 클릭한 상품들을 대상으로 N번째까지의 정밀도를 계산하고 이를 평균내는 방법
- mAP는 각 사용자마다 클릭한 상품들을 대상으로 N번째까지의 정밀도를 계산하고 이를 평균내는 방법
- NDCG@K
- MAP와 거의 비슷한 지표이지만 조금 더 정밀하게 고객의 선호도 수준까지 반영하여 관련있는 컨텐츠를 노출시킬 수 있게 도와준다. 아이템에 대한 평점이 있어야 함
- MAP와 거의 비슷한 지표이지만 조금 더 정밀하게 고객의 선호도 수준까지 반영하여 관련있는 컨텐츠를 노출시킬 수 있게 도와준다. 아이템에 대한 평점이 있어야 함
- MAP@K
- 다양한 아이템이 추천되는지 평가하는 지표는?
- Diversity, Shannon Entropy, Gini Coefficient
- 새로 나온 아이템이 얼마나 추천되는지 평가하는 요소는?
- Novelty
- 오프라인 실험 설정 방법 중 하나로, 검증용으로 하나의 데이터 포인트만 남기고 학습하는 방법은?
- Leave-one-out cross validation
- 온라인 실험 방법으로, 두 가지 옵션을 비교하는 방식은?
- A/B Testing
- 희박한 구매 기록을 기반으로 사용자와 아이템의 잠재 요인을 탐색하는 방법은?
- Matrix Factorization (행렬 분해)
- 사용자-아이템 평점 행렬을 저차원 행렬로 차원 축소하는 이유는?
- 누락된 평점을 더 정확하게 추정하기 위해서
- Netflix Prize Competition을 통해 고도화된 추천 알고리즘 기법은?
- Matrix Factorization (행렬 분해)
- User Latent Matrix(P)와 Item Latent Matrix(Q)의 전치 행렬을 곱하여 원래의 평점 행렬을 근사하는 방법은?
- Matrix Factorization
- ALS (Alternating Least Square)의 특징은?
- SGD보다 학습 속도가 빠르고 병렬 처리가 가능
- ALS에서 하나의 행렬을 상수로 고정한 후 최적화 문제를 풀면 무엇이 되는가?
- OLS (최소자승법)
- 경사하강법을 의미하는 용어는?
- SGD (Stochastic Gradient Descent)
- 시간의 변화에 따라 바뀌는 사용자나 아이템의 정보를 반영하는 기법은?
- Temporal Dynamics
- Matrix Factorization에서 사용자나 아이템의 개별 특성을 포함하는 방법은?
- Adding Bias
- Hold-out method의 특징은?
- 평점 행렬의 일부 아이템을 숨기고 나머지로 학습, 숨겨진 아이템을 예측하여 평가
- Chronological split의 특징은?
- 데이터셋을 시간순으로 분할하여 학습과 테스트에 사용
- Stratified split의 특징은?
- 동일한 사용자 또는 아이템이 학습과 테스트 데이터에 모두 포함되도록 계층적으로 분할
- Hold-out method의 단점 중 하나는?
- 평가에서 편향이 발생할 수 있음 (평균 평점이 다를 때)
- 모든 데이터가 학습 및 테스트에 사용되는 오프라인 평가 방법은?
- K-fold cross validation
1. Element-wise Product (성분별 곱)
- User Embedding과 Item Embedding의 상응하는 차원을 곱하여 하나의 벡터를 생성합니다.
- 이 벡터는 각 성분들의 곱으로 이루어져 있고, 이는 내적(Inner Product)과 유사합니다.
- 단점은 동일한 차원의 상호작용만을 고려하며, 다른 차원 사이의 상호작용은 무시된다는 점입니다.
2. Concatenation (연결)
- User Embedding과 Item Embedding을 결합하여 더 큰 차원의 벡터를 생성합니다.
- 이 방법은 각각의 임베딩의 원시 정보(Raw Information)를 그대로 유지합니다.
- 임베딩 차원 간 상호작용이 고려되지 않으며, 모델이 이 상호작용을 학습해야 합니다.
3. Outer-Product (외적)
- User Embedding과 Item Embedding의 외적을 계산하여 K×KK \times K 차원의 행렬을 생성합니다.
- 이는 차원 간 모든 쌍의 상호작용을 포착할 수 있어 더욱 많은 정보를 담을 수 있습니다.
- Pairwise 상호작용을 파악하는 데 유리하며, 내적과는 달리 더 복잡한 상호작용을 고려할 수 있습니다.
4. MLP 기반 모델
- MLP(다층 퍼셉트론)을 기반으로 한 추천 시스템 모델입니다.
- 이 구조는 입력 레이어, 히든 레이어, 출력 레이어로 구성되며, 각 레이어에서 가중치 벡터와 함께 사용자의 선호도에 대한 정보를 학습합니다.
- 최종 출력은 활성화 함수(예: 시그모이드 함수)를 사용하여 계산됩니다.
5. Transformer 기반 모델
- BERT4Rec와 같은 Transformer 모델을 사용하여 순차적 추천을 수행합니다.
- BERT4Rec은 양방향 인코더 표현을 사용하여 아이템의 순서를 고려한 추천을 할 수 있습니다.
- Log Loss와 Negative Sampling의 목적은?
- 모델 성능 개선 및 과적합 방지
- 각 사용자의 마지막 데이터를 테스트셋으로 숨기고 학습셋을 구성하는 방식은?
- Leave-one-out 방식
- Top-K 평가의 주요 지표는?
- Hit Ratio와 NDCG(@10)
- 사용자와 아이템의 결합된 표현을 학습하는 모듈은?
- Fusion Module
- ID 또는 상호작용 데이터를 입력으로 하는 학습 모듈은?
- User Representation Learning Module 및 Item Representation Learning Module
ID 또는 상호작용 데이터를 입력으로 하는 학습 모듈은?
- User representation learning Module 및 Item representation learning Module
- ID Embedding: 사용자 또는 아이템 ID만 임베딩.
- Semi-Dual Embedding: 사용자 ID와 사용자 과거 상호작용을 합산하여 사용자 표현을 학습하고, 아이템은 ID 임베딩만 사용.
- Dual Embedding: 사용자/아이템 ID와 과거 상호작용을 각각 임베딩한 후, 그 두 임베딩을 합산하여 표현을 학습.