-
[데이터분석개론] Collaborative FilteringIT&컴퓨터공학/데이터분석개론 2021. 2. 15. 23:26
Collaborative Filtering
다른 사용자들과의 협업을 통해 구현되는 알고리즘.
즉, 다른 유저의 추천 데이터들을 바탕으로 시스템을 구현한다. 사용자들의 데이터를 바탕으로 추천을 구축하는데, 하위 항목으로 아이템 기반 필터링(Item-based Filtering) 과 유저 기반 필터링(User-based Filtering) 으로 구분된다.
(좌)유저 기반 필터링의 경우, 추천을 받을 사용자(A)와 유사한 타 사용자(B)를 추천 리스트를 통해 찾아내고 B가 좋아하는 목록 중 아직 A가 경험한 적 없는 아이템을 추천해준다. 좌측 이미지에 해당한다.
(우)아이템 기반 필터링의 경우, 아이템들에 대해서 사용자들의 선호도를 기반으로 유사한 아이템을 찾아 추천하는 기법이다. 우측 이미지처럼 User A/C/D 를 통해 유사한 Item 두 가지가 검증되어 해당 아이템을 추천하는 기법이다.
Item-User Matrix
Collaborative filtering 에는 item-user 간 정보가 필요한데, 이를 Matrix 로 나타낼 수 있다.
r(1,1) 의 경우 , 유저 1번의 아이템 1 번에 대한 생각을 나타낸다. 예를들어 하나를 샀다면 1, 혹은 rating 을 매긴경우 50점 등으로 나타낸다.
그러나 이 matrix 에는 문제점이 있는데, 데이터 간 스케일이 너무 달라지는 경우가 발생한다.
예를 들어 생필품을 몇번 샀는가 ? 를 나타낼때,
에어컨의 경우는 거의 한 두번밖에 안사지만
휴지의 경우는 아주 많이 사기 마련이다.
이런경우엔 데이터 간 스케일 차이가 너무 커져서 한쪽 아이템으로 쏠림 현상이 일어나는데,
이를 해결하기위해 cosine similarity 가 등장했다.
진행과정
1. A라는 유저와 가장 비슷한 interest 를 가진 유저들을 찾는다. ( 이웃 )
2. 이 이웃들이 구매한 아이템 중 A 유저가 아직 구매하지 않은 아이템이 있으면, 그 아이템을 A에게 추천해준다.
이웃을 찾는다는 점에서 앞에서 본 K-NN 알고리즘과 유사하다.
그러나 K-NN 알고리즘에서는 나와 비슷한 유저를 찾을 때 유클리드 거리를 사용했고,
Collaborative Filtering 에서는 Measuring Proximity 를 사용한다.
Measuring Proximity
CF에서는 유클리드 거리가 잘 안맞아서, 상관관계 개념을 도입했다.
유저1과 유저2의 상관관계는 이렇게 나타낼 수 있다.
상관관계는 (-1 ~ +1 ) 사이의 값을 가지며, -1 의 경우엔 정 반대의 추천을 해주면 된다.
노란색 줄을 친건 각 유저가 아이템별 rating 을 했을때 rating 값의 평균을 나타내는데,
이 노란색 부분을 지우면 그게 바로 cosine similarity 가 된다.
Cosine Similarity
Cosine Similarity 에서는 아이템을 얼마나 많이샀는지는 고려하지않는다.
이게 무슨말일까 ?
해당 그래프에서 User1 과 User2 의 각도가 같다는걸 알 수 있다.
각도가 같다는건 얘네 끼리 비슷한 패턴으로 item 을 산다는 것이다.
차이점은 User2는 해당 아이템을 많이 사는 사람이라 벡터 자체가 클 뿐이고,
User1은 해당 아이템을 적게 사는 사람이라 벡터 자체가 작을 뿐이다.
그러나 본질적으로 두 유저는 item 구매에 있어서 비슷한 패턴을 가지고 있다.
때문에 cosine similarity 에서는 두 데이터 간 얼마나 서로 비슷한 각도를 가지고 있는지로 가까운 이웃을 선택한다.
아까 위에서 본 이 두 유저의 경우 같은 선상에 있으므로 θ = 0 이다 . 따라서 아이템을 산 양은 다르지만
두 유저는 서로 유사한 유저로 분류된다.
Cold Start Problem
CF 가 가지고 있는 큰 문제점이다.
CF의 경우엔 서비스에 막 들어온 새로운 유저에게는 바로 추천을 해주기 어렵다.
어느 정도 데이터가 쌓여서 이 유저가 어떤 패턴을 가지고 있는지 알아내야,
이 패턴과 비슷한 각도를 가진 유저들을 기반으로 새로운 아이템을 추천해줄 수 있는데
데이터가 없는경우엔 패턴 자체를 구할 수가 없기 때문이다.
Association Rules vs Collaborative Filtering
Association Rules
- 자주 등장하는 아이템 조합을 고려함
- user dimension 은 무시한다
Collaborative Filtering
- 유저 선호도를 고려함
- 수치로 표현할 수 있기때문에 좀 더 명확하다.
'IT&컴퓨터공학 > 데이터분석개론' 카테고리의 다른 글
[데이터분석실전] 라이브러리 (0) 2021.02.16 [데이터분석개론]Cluster Analysis (1) 2021.02.16 [데이터분석개론] Association Rules & Collaborative Filtering (0) 2021.02.14 [데이터분석개론] Naïve Bayes Classifier. 나이브베이즈 분류 (0) 2021.02.13 [데이터분석개론] K-Nearest Neighbors (0) 2021.02.13 댓글