해당 포스팅은 NAVER BOOSTCAMP RECSYS 트랙의 교육자료와 강의를 참고하여 정리한 글입니다.
본 포스팅에선 기본적인 추천 시스템인 인기도 기반, 연관규칙분석 기반, tf-idf 컨텐츠 기반 시스템에 대해 정리하였다.
인기도 기반 추천
- 통계적으로 가장 인기있는 아이템을 추천한다. 데이터가 없는 서비스 런칭 초반에 많이 사용되는 시스템이다.
- 인기도의 척도: 조회수, 평균 평점, 리뷰 개수, 좋아요 싫어요 수 등
- 스코어
- Most Popular: 조회수가 가장 많은 아이템을 추천 ex) 뉴스 추천
- Highly Rated: 평균 평점이 가장 높은 아이템 추천 ex) 맛집 추천
- 추천하려는 task에 맞게 스코어를 설정하는 것이 중요하다.
연관분석
1. 연관규칙 분석(장바구니 분석)
- 상품 구매, 조회 등 하나의 연속된 거래들 사이의 규칙을 발견하기 위해 적용한다.
- 한 상품과 같이 등장하는 다른 상품간의 규칙을 찾는 분석이다.
- 규칙: {condition} -> {result}
- 연관규칙: 특정 사건과 함께 빈번하게 발생하는 또 다른 사건의 규칙을 의미한다.
- Item set: antecedent와 consequent를 구성하는 상품들의 집합으로, 두 집합은 서로소 집합으로 서로 겹치는 아이템이 없어야 한다.
- 빈발 집합
- support count: 전체 transaction data에서 itemset이 등장하는 횟수
- support: itemset이 전체 transaction data에서 등장하는 비율
- frequent itemset: 유저가 지정한 minimum support 값 이상의 itemset을 의미한다.
2. 연관규칙의 척도
x -> y가 존재할 때
- support: x,y를 모두 포함하는 transaction의 비율로 전체 transaction에 대한 itemset의 확률값이 좋은 규칙을 찾거나 불필요한 연산을 줄일때 사용된다.
- confidence: x가 포함된 transaction가운데 y도 포함하는 transaction의 비율 -> 값이 높을 수록 추천하기에 좋은 관계
- lift: (x가 포함된 transaction가운데 y가 등장할 확률-> confidence) / (y가 등장할 확률) -> 1보다 작으면 음의 상관관계, 크면 양의 상관관계를 가진다.
- item 수가 많아질수록 가능한 itemset의 수가 기하급수적으로 많아지기 때문에 유의미한 규칙만 사용해야한다.
- minimum을 정해 의미없는 rule을 필터링한다.
- lift값으로 내림차순 정렬하여 의미있는 rule을 평가한다.
3. 연관규칙의 탐색
- Mining Association Rules: 주어진 트랜잭션 가운데 minimum을 만족하는 모든 연관규칙을 찾는다.
- Brute-force approach: 가능한 모든 연관규칙을 나열해 모두 prunning -> 굉장한 연산량과 시간이 필요
- 효율적인 association rule mining을 위해 Frequent itemset Generation(minimum support이상의 모든 itemset생성) 후 Rule generation(minimum confidence이상의 association rule 생성)을 수행한다.
- Frequent itemset generation
- Apriori 알고리즘: 가지치기로 탐색해야하는 m을 줄인다.
- Direct Hashing & Pruning: itemset의 크기가 커짐에 따라 전체 n개 transaction보다 적은 개수를 탐색한다.
- FP-Growth: 후보 itemset과 transaction을 저장해 모든 조합에 대해 탐색하지 않고 탐색 횟수를 줄인다.
- Frequent itemset generation
tf-idf 컨텐츠 기반 추천
1. TF-IDF를 활용한 컨텐츠 기반 추천
- 유저 x가 과거에 선호한 아이템과 비슷한 아이템을 추천
- 비슷함의 정의는 아이템에 따라 달라진다.
- 장점
- 다른 유저 데이터가 필요없다.
- 아이템의 특징만 고려하기 때문에 새로운 아이템이나 인기도가 낮은 아이템을 추천할 수 있다.
- 왜 해당 아이템이 추천되었는지 설명이 가능하다.
- 단점
- 아이템이 어떤 것으로 이뤄져있는지에 따라 적합한 피처를 찾는 것이 어렵다.
- 한 분야의 추천 결과만 계속 나올 수 있다.
- 아이템 정보만을 사용하기 때문에 다른 유저 데이터 활용할 수 없다.
2. Item Profile
- 추천 대상이되는 아이템의 feature로 구성된 item profile을 만들어야한다.
- 문서의 경우 중요 단어의 집합으로 표현할 수 있다.
- 중요 단어를 나타내기 위해 tf-idf를 사용한다.
- 아이템이 가진 다양한 속성을 표현할 수 있는 가장 편한 형태는 vector형태이다.
- tf - idf: 단어 w가 문서 d에 많이 등장하면서 (tf) 전체 문서에선 적게 등장하는 단어(idf)라면 단어 w는 문서 d를 설명하는 중요한 feature이다.
3. User Profile기반 추천하기
- 각 유저의 item list안에 있는 item의 vector를 통합하면 user profile이 된다.
- simple: 유저가 선호한 item vector들의 평균값을 사용
- variant: 선호도 값을 가중 평균하여 정규화한 평균값을 사용
- Cosine similarity: 두 벡터의 각도를 이용해 구할 수 있는 유사도로, 두 벡터가 가르키는 방향이 얼마나 유사한지를 의미한다.
- 유저 벡터 u와 아이템 벡터 i에 대해 cosine similarity를 계산한다. 유사도가 클수록 해당 아이템과 유저와의 관련성이 높다.