2022. 3. 13. 15:33ㆍAI/Machine learning
- 목차
검색 vs. 추천
검색은 query와 docuemnt 사이의 관계를 분석
추천은 user와 item 사이의 관계를 분석
즉, 유사 learning to rank는 검색과 추천 모두에 적용 가능
Matrix Factorization
Collaborative Filtering의 대표적인 방법
컨텐츠 기반 (content-based systems) <- 이전 방법
characteristic info를 사용한 추천
item간 유사도를 기반으로 추천하는 방법
즉, TF-IDF를 사용함
item -> vector 화
item들을 clustering
어떤 item을 선택한 user에게 동일 cluster 내 item을 추천
과거 user의 item 선택 history 가지고 추천하기에 한계가 있음
그러나 user-item interaction 정보가 없어도 추천이 가능함
즉, cold-start 문제는 없음
item은 가장 처음에도 주어지기 때문
item features
장르, 배우 등
interactions
좋아요 정보 등
content뿐만 아니라, 지역, 인종, 성별, 나이, 학력 등 배경 기반으로 추천
협업 필터링 (CF: collaborative filtering systems)
user-item interactions를 사용한 추천
분류와 regression과 유사한 개념
user-item interaction 정보가 비슷한 다른 user가 선택한 item을 추천
user나 item 자체의 특성을 추천에 사용하지 않음
그래서 user-item interaction이 많이 필요
user-user, item-item, user-item의 유사도 계산에는
KNN, pearson correlation 등이 사용됨
CF의 문제
cold-start problem
충분한 item interaction data가 있어야 추천 가능
즉, 새로운 user나 새로운 item은 추천하기 어려움
sparsity
수많은 user와 item을 표현하는 matrix는 sparse함
CF는 sparsity가 0.97 이하일때 잘 작동한다는 말이 있음
즉, 일정 개수 이상의 interaction이 있는 user와 item만 사용하는 방법도 있음
diversity
user의 history로 추천해서 비스한 item만 추천 할 수 있음
hybrid
혼합 사용하여 추천
content-based와 CF 둘다 장단점이 있기에 이 둘을 혼합하여 사용
CF recommender ----+
|
+--> combiner -> recommend
|
Content based ----+
recommender
user-item interaction
explicit feedback
평점, 별점
implicit feedback
user의 행동 기록
ex. item에 대한 click 기록
직접적인 item의 선호 정도를 알 수 없기에 implicit이라고 함
그러나 data 량이 비교가 안되게 많기에 최신 추천 system은
implicit feedback data를 통해 추천하는 뱡향으로 발전
CF의 학습
user-item matrix 형태의 data로 학습
아래 ex.는 explicit data이고 rating 값이라고 가정
users\item Item1 Item2 Item3 Item4
User1 5 1 3 5
User2 ? ? ? 2
User3 4 ? 3 ?
?인 곳들을 채우는 것이 CF의 목표
-> matrix completion
implicit인 경우 0 혹은 1
users\item Item1 Item2 Item3 Item4
User1 1 1 1 1
User2 0 0 0 1
User3 1 0 1 0
CF 방식
memory-based method
model-based method
memory-based method
user-item matrix를 그대로 모두 활용하여 user가 특정 item에 줄 rating을 예측
user-item matrix가 주어지고 특정 user가 아직 interaction 안 한, item에 대한 rating을 예측
algorithm
user i의 평균 예측 점수 구함
user i와 가장 유사한 K명 추출
다른 user들이 item j에 대해 매긴 점수를 weighted sum
user i와 위에서 계산한 weighted sum을 통해 예측
users\item Item1 Item2 Item3 Item4 Item5 Item6
User1 4 3 5
User2 5 4 4
User3 4 5 3 4
User4 3 5
User5 4 4
User6 2 4
Neighborhood model
user 사이의 similarity를 계산
평점 자체에 선호와 비선호가 구분되어 있는 Explicit Dataset에 적합
Pearson correlation으로 계산
두 user의 rating 정보로 계산
rXY = ∑i=1~n (Xi - Xhat)(Yi - Yhat)
------------------------------------
sqrt(∑i=1~n (Xi - Xhat)^2) sqrt(∑i=1~n (Yi - Yhat)^2)
Xhat: x user의 값(ex. rating) 평균
1 ~ -1의 관계
r이 1에 가까울수록 X = Y의 관계
: 유사 관계
r이 -1에 가까울수록 X = -Y의 관계
cosine similarity
평균 rating을 계산하지 않아도되기에, Pearson 보다 효율적
그러나 너무 높거나 낮은 점수에 대해서는 유사도가 잘 계산이 안 됨
similarity(A,B)
= A B ∑i=1~n Ai x Bi
------- = --------------
|A| x |B| sqrt(∑i=1~n Ai^2) x sqrt(∑i=1~n Bi^2)
model-based method
user-item matrix를 통해 model을 학습하고 예측하는 방법
matrix factorization같은 model-based 방식이 유명함
rating matrix는 보통 rating 정보가 없어서 sparse matrix임
MF는 행렬 분해를 통해 빈칸을 채울 평점을 예측하는 방법
user와 item간의 rating 정보를 나타내는 rating matrix를 user latent matrix와 item latent matrix로 분해하는 기법
latent factor의 크기에 따라 설명력이 낮은 정보의 삭제 및 설명력이 높은 정보의 유지 방향으로 matrix를 생성
Truncated SVD 를 통해 full SVD행렬에서 일부 벡터를 삭제
latent factor models
user와 item을 latent factor(잠재요인)으로 추출
특정 user가 item과 얼마나 가까운지 정보를 측정
영화의 특징의 feature space가 있고,
사람들이 이 feature space에 map 되어 있음 (그런데, 사람은 해당 feature space의 feature set이 아니기에 사실 map이 불가능)
User와 item을 f 차원의 잠재공간으로 분해
latent factor는 item과 user 간의 hidden feature
latent factor는 user와 item간의 pattern으로 찾음
X 행렬의 행은 사용자의 수와 동일 열은 프로그래머에 의해 설정되는 잠재 요인
Y 행렬의 행은 잠재요인, 열은 item의 수
matrix X와 matrix Y에 임의의 값을 할당하고 훈련을 ㅅ기킴
훈련 시 GD로 훈련
'AI > Machine learning' 카테고리의 다른 글
언어모델 (0) | 2022.03.13 |
---|---|
Matrix factorization 접근법 (0) | 2022.03.13 |
Content based filtering, collaborative filtering (0) | 2022.03.13 |
정규화 (0) | 2022.03.12 |
코사인 유사도(cosine similarity) (0) | 2022.03.06 |