Skip to main content
Collaborative Filtering
협업 필터링 추천 방식에 대한 정리
Collaborative Filtering
• 추천 알고리즘의 하나의 방법
– 각 항목별 유사도에 가중치를 두어 추천
– User-based : 사용자의 유사도를 비교
– Item-based : 아이템의 유사도를 비교
User-based
• 선호 이력이 유사한 다른 사용자의
선호 아이템 찾고
• 아직 구매하지 않은 아이템을 추천
Item-based
• 사용자가 좋아하는 아이템을 찾고
• 해당 아이템과 유사한 아이템을 추
천
유사도 알고리즘
• 유클리디안(Euclidean) 거리 점수 기반
• 코사인(Cosine) 기반
• 자카드 계수 (Jaccard) 기반
• 피어슨 상관계수
• 맨해튼 거리
유클리디안(Euclidean) 거리 점수 기반 유사도(1)
• 두 점 사이의 거리를 계산할 때 주로 사용하는 알고리즘
• 사람들이 공통으로 점수를 매긴 항목의 거리를 통해
유사도를 판단
• 거리가 짧을 수록 유사하다고 판단
※ 일반적으로 유사도가 높을 수록 1에 가깝고, 낮을 수록 0에 가깝도록
표현한다. 따라서 1/(1+d) 의 연산을 한다. (d=유클리디안 거리점수)
유클리디안(Euclidean) 거리 점수 기반 유사도(2)
Item1 Item2 Item3 Item4
User1 5 1 1 4
User2 4 1 2 3
User3 1 2 4 1
코사인(Cosine) 기반 유사도(1)
• 이것은 두 단위 벡터의 내적을 이용, 단위 벡
터간의 내각의 크기로 유사도 측정을 한다.
• 값은 0~1 사이로 가지게 된다.
• 결과 값이 1인 경우, 모든 단어의 가중치가 동
일한 항목, 완전 같은 문서
• 0은 두 항목에 일치 하는 것이 없다는 것을 뜻
한다.
코사인(Cosine) 기반 유사도(2)
User1 User2 User3
Item1 3 2 1
Item2 4 2 3
Item3 2 4 5
User1 User2 User3
Item1 0.8018 0.5345 0.2673
Item2 0.7428 0.3714 0.557
Item3 0.2981 0.5963 0.7454
코사인(Cosine) 기반 유사도(3)
User1 User2 User3
Item1 0.8018 0.5345 0.2673
Item2 0.7428 0.3714 0.557
Item3 0.2981 0.5963 0.7454
Item1 Item2 Item3
Item1 1 0.943 0.757
Item2 0.943 1 0.858
Item3 0.757 0.858 1
자카드 계수(Jaccard) 기반 유사도
(1)
• Boolean 속성으로 이루어진 두 개의 오브젝
트 A와B에 대하여
• A와 B가 교집합으로 1의 값을 가진 속성의 개
수를
• A와 B의 1의 합집합 개수로 나눈 값.
자카드 계수(Jaccard) 기반 유사도
(1)
User based 데이터 셋 (1 : 구매 )
사용자 1과 사용자 2의 Jaccard 유사도를 계산하는 경우
(분모) |A∪B| 즉 두 사람이 산 상품의 합집합의 개수는 3
(분자) |A∩B| 두 사람이 산 상품의 교집합의 개수는 2
jaccard 유사도 값은 ⅔= 0.67
모든 사용자간 계산된 유사도
Item1 Item2 Item3 Item4
User1 0 1 0 1
User2 0 1 1 1
User3 1 0 1 0
User1 User2 User3
User1 1.0 0.67 0
User2 0.67 1.0 0.25
User3 0 0.25 1.0
자카드 계수(Jaccard) 기반 유사도
(3)
User based 데이터 셋 과 유사도
사용자 선호도가 높은 항목에 가중치를 주기 위해
행렬곱
점수가 높은 항목 중 이미 구매 하지 않은 항목 추천
Item1 Item2 Item3 Item4
User1 0 1 0 1
User2 0 1 1 1
User3 1 0 1 0
User1 User2 User3
User1 1.0 0.67 0
User2 0.67 1.0 0.25
User3 0 0.25 1.0
Item1 Item2 Item3 Item4
User1 0 1.67 0.67 1.67
User2 0.25 1.67 1.25 1.67
User3 1.0 0.25 1.25 0.25
마치며…
• 항목 기반 필터링은 미리 항목의 유사함을 구해 놓고, 가
중치를 주어 추천
• 항목의 유사도가 상대적으로 변하지 않는다.
• 빠르다.
• 유사도 저장 공간이 추가로 필요.
• 사용자 기반 필터링은 가중치에 대한 추가 단계가 없어 구
현이 용이.
• 자주 변경되는 보다 작은 데이터 세트에 적당하다.
참고.
• http://readme.skplanet.com/?p=2509
• http://rosaec.snu.ac.kr/meet/file/20120728b.pdf
• http://algo.yonsei.ac.kr/domestic_JNL/PredictiveAlgorithm02Park.pdf
• http://dev.kthcorp.com/2013/01/23/deconstructing-recommender-systems/
• 집단지성 프로그래밍
• 실전예제로 살펴보는 집단지성 프로그래밍
• 머하웃 완벽 가이드