'유저들로부터 얻은 정보'를 사용하여 유저의 관심사를 예측하는 방법
Collaborative -> 다수의 의견을 반영한다.
즉, 유저들의 데이터가 축적될수록 추천은 정확해진다.
ex) 유저 A와 비슷한 성향을 갖는 유저들이 선호하는 아이템을 추천
-user-based
-item-based
-KNN,SVD
-Matrix Factorization
-Deep Leaning
-유저 u의 아이템 i의 평점을 예측하는 것
1.유저-아이템 행렬을 생성
2.유사도 구하기
3.주어진 평점과 유사도를 활용하여 행렬의 비어 있는 값을 예측
1.구현이 간단하다
2.Scalability(확장성)이 떨어짐
3.Sparse한 데이터인 경우 성능 저하(행렬의 대부분의 entry는 비어있다.)
-user-based: 두 user가 얼마나 유사한 아이템을 선호하는가 즉, 유저간의 유사도를 구한 뒤 유사도가 높은 유저들이 선호하는 아이템을 추천한다.
-item-based: 두 아이템이 user로 부터 얼마나 유사한 평가를 받는가? 즉, 아이템 선호도를 바탕으로 연관성이 높은 다른 아이템을 추천한다.
유저 𝑢∈𝑈, 아이템 𝑖∈𝐼 에대해평점데이터𝑟 𝑢,𝑖가 존재할 때,유저𝑢의아이템𝑖에 대한 평점을 예측
아이템 𝑖에 대한 평점이 있으면서 유저 𝑢와 유사한 유저들의 집합을 Ω
1) average
-𝑟̂(𝑢, 𝑖) = ∑ 𝑟(𝑢', 𝑖) / |Ω|
2) weighted average
-𝑟̂(𝑢, 𝑖) = ∑𝑠𝑖𝑚 (𝑢, 𝑢')𝑟(𝑢', 𝑖) / ∑𝑠𝑖𝑚(𝑢, 𝑢′)
3)Deviation(Absolute Rating 문제 해결)
-어떤 유저는 전체적으로 높게 평점을 줄 수도 있고 반대로 낮게 줄 수도 있다.
즉, 평점을 내리는 기준이 유저마다 다르다.
-모든 평점을 deviation 데이터로 바꾼 후 predicted rating이 아닌 predicted deviation을 구한다. (predicted rating = user average rating + predicted deviation)
-모든 user의 데이터를 사용할 경우 계산 비용은 커지고 오히려 성능이 떨어지기도한다.
-Ω에 속한 유저 가운데 유저 𝑢와 가장 유사한 𝐾명의 유저를 이용해 평점을 예측한다.
-보통 K= 25~50을 많이 사용(K는 하이퍼 파라미터)
-구현이 쉽고 k가 늘어날 수록 성능이 좋다.
-item-based 보다 dibersity하다
-sparsity, cold start에 더 취약
-pearson 유사도를 사용할 때 성능이 좋다.
-보통 user-based 보다 높은 성능을 낸다.
-더 robust하다
-cosine 유사도를 사용할 때 성능이 좋다.
1.cold start
-데이터가 충분하지 않다면 추천 성능이 떨어지고 데이터가 없는 신규 유저,아이템의 경우 추천 불가능하다.
2.계산 비용
-유저, 아이템이 많아야 성능이 좋지만 반대로 시간은 오래걸린다.
3.long-tail
-많은 유저들이 선호하는 소수의 아이템이 CF 추천 결과로 나오며 비주류 아이템은 추천되기 어렵다.