-
[RecSys] 4-2. Collaborative Filtering - Rating Prediction인공지능/부스트캠프 Ai Tech 2022. 3. 11. 18:17728x90
[RecSys] 4-2. Collaborative Filtering-Rating Prediction In [1]:from IPython.core.display import display, HTML display(HTML("<style>.container { width:90% !important; }</style>"))
협업필터링(Collaborative Filtering, CF)¶
'많은 유저들로부터 얻은 기호 정보'를 통해 유저의 관심사를 자동으로 예측하는 방법
더 많은 유저/아이템 데이터가 축적될수록 협업의 효과는 커지고 추천이 정확해질 것이란 가정에서 출발
목적 : 유저 u가 아이템 i에 부여할 평점을 예측
방법
- 주어진 데이터를 활용해 유저-아이템 행렬 생성
- 유사도 기준을 정하고, 유저 혹은 아이템 간의 유사도를 구함
- 주어진 평점과 유사도를 활용해 행렬의 비어 있는 값(아직 소비하지 않은 평점) 예측
TF-IDF와는 달리 아이템이 가진 속성을 사용하지 않고 추천을 한다.
CF 분류¶
- Neighborhood-based CF (Memory-based CF)
- Model-based CF
- Hybrid CF
Neighborhood-based CF¶
- User-based CF
UBCF- Rating Prediction(평점 예측)¶
Absolute Rating¶
Average : 다른 유저들의 rating의 평균으로 대체, 다만 이 경우 다른 유저들의 점수와 나의 점수를 동일하게 반영해도 되는가? 는 문제가 있다.
Weighted Average : 평균에서 유저의 유사도 점수를 가중치로 주어 평점을 예측하는 방법
Absolute Rating Formula¶
전체 유저 ${U}$, 아이템 ${I}$ 에 대한 평점 데이터가 존재할 때,
유저 ${u}$의 아이템 ${i}$에 대한 평점 ${\hat{r}(u,i)}$를 예측해본다.
아이템 ${i}$에 대한 평점이 있으면서 유저 ${u}$와 유사한 유저들의 집합을 ${\Omega_i}$라고 한다면,
1) Average
$${\hat{r}(u,i) = {\sum_{u'\in \Omega_i}r(u',i) \over |\Omega_i|}}$$2) Weighted Average
$${\hat{r}(u,i) = {\sum_{u'\in \Omega_i} sim(u,u')r(u',i) \over \sum_{u'\in \Omega_i} sim(u,u')}}$$Absolute Rating 한계¶
유저마다 평점을 주는 기준이 다르기때문에, 유저들의 점수를 그대로 사용할 수가 없다.
챗봇 카테고리를 만들때도 비슷한 경험이 있다. 가이드 라인을 아무리 만들어도 같은 사람, 다른 사람이 라벨링을하면 그날 기분에 따라, 상황에 따라 같은 내용도 다르게 라벨링을 하는 사태가 벌어졌었다.
Relative Rating¶
유저의 평균 평점에서 얼마나 높거나 낮은지의 편차(Deviation)를 사용한다.
* 어떤 유저의 평균이 2.5점인데, 5점을 준다면 아주 높게 평가 * 모든 아이템의 평점을 5점으로 준 유저는 아이템간의 비교가 어렵다.
Relative Rating Formula¶
모든 평점 데이터를 deviation으로 바꾼뒤 원래의 rating이 아니라 devation을 예측한다.
- predicted rating = 유저 평균 rating + predicted deviation
Absolute Rating vs Relative Rating¶
1) Absolute Rating
$${\hat{r}(u,i) = {\sum_{u'\in \Omega_i} sim(u,u')r(u',i) \over \sum_{u'\in \Omega_i} sim(u,u')}}$$여기서는 유저 평점 r을 그대로 사용했지만,
2) Relative Rating
$${\hat{r}(u,i) = \bar{r_u} + {\sum_{u'\in \Omega_i} sim(u,u')(r(u',i)- \bar{r_{u'}}) \over \sum_{u'\in \Omega_i} sim(u,u')}}$$Relative는 앞에서 평점을 더해주고, 뒤에는 절대평점이 아닌 각각 유저의 평균 평점을 뺀 dev를 사용했다.
IBCF - Absolute Rating¶
Absolute Rating vs Relative Rating¶
UB와 달리, IB는 유저가 평가한 아이템들의 집합에서, 아이템간의 유사도를 사용한다는 차이점이 있다.
1) Absolute Rating $${\hat{r}(u,i) = {\sum_{i'\in \phi_u} sim(i,i')r(u',i) \over \sum_{i'\in \phi_i} sim(i,i')}}$$
2) Relative Rating $${\bar{r}(u,i) = \hat{r_i} + {\sum_{i'\in \phi_u} sim(i,i')(r(u',i)- \bar{r_{i'}}) \over \sum_{i'\in \phi_i} sim(i,i')}}$$
- ${\phi_u}$ : 유저 u가 평가한 아이템들의 집합
CF in RecSys¶
CF의 최종 목적은 유저 u가 아이템 i에 부여할 평점을 예측하는 것이고, RecSys는 예측 평점이 높은 아이템을 유저에게 추천하는 것이다. => Top-N recommendation!
'인공지능 > 부스트캠프 Ai Tech' 카테고리의 다른 글
[RecSys] 4-4. Collaborative Filtering - MBCF_MF (0) 2022.03.11 [RecSys] 4-3. Collaborative Filtering-MBCF_SVD (0) 2022.03.11 [RecSys] 4-1. Collaborative Filtering (0) 2022.03.11 [RecSys] 3-2. 추천 시스템 Basic - TF-IDF (0) 2022.03.11 [RecSys] 3-1. 추천 시스템 Basic - 추천 시스템 기법과 연관분석 (0) 2022.03.10