-
Collaborative Filtering 이해하기AI-ML 2023. 9. 25. 22:52728x90반응형
- 목차
키워드.
- Collabortive Filtering
- Implicit vs Explicit
- Data Imputation
들어가며.
"Collaborative Filtering (협업 필터링)" 은 흔히 "Content-based Filtering" 과 흔히 비교됩니다.
두가지 기법 모두 특정 사용자가 선호할 상품을 예측하여 추천하기 위한 모델링 기법인데요.
Content-based Filtering 은 item 의 주요한 특징을 활용하여 user 에게 상품을 추천하며,
Collaborative Filtering 은 item 과 user 간의 상호작용에 집중합니다.
Content-based Filtering.
자세한 설명을 위해서 먼저 Content-based Filtering 의 예를 들어볼까요 ?
아래와 같이 Product Table 이 존재한다고 가정하겠습니다.
각 상품은 Brand, Category, Price, Color, Size 등의 Feature 를 가집니다.
그리고 아래의 테이블은 User Table 로써 사용자가 어떤 상품을 선호하는지에 대한 정보를 담습니다.
"1. 사용자가 어떤 상품을 선호하는지" 그리고 "2. 상품의 특징" 를 비교하여 사용자가 선호하는 상품을 추천할 수 있습니다.
예를 들어, User ID 가 19번인 사용자는 Adidas 브랜드를 선호하고, Black 색상과 Men's Fashion 을 선호합니다.
그렇다면 자연스레 관련된 상품들을 필터링하여 19번 사용자에게 추천할 수 있겠죠 ?
이렇게 "Content-based Filtering" 은 위와 같이 상품과 사용자의 상세한 정보들을 수집하여 추천을 수행합니다.
이를 구현하기 위해서는 도메인에 대한 배경지식이 필요하고, 데이터 수집을 위한 설문조사가 필요할 수도 있습니다.
즉, Content-based Filtering 은 관련된 양질의 데이터를 확보하는 것이 중요합니다.
Collaborative Filtering.
반면 Collaborative Filtering 은 데이터를 확보하는데에 있어서 Content-based Filtering 만큼 시간과 비용이 들지 않습니다.
Collaborative Filtering 이 요구하는 데이터는 사용자와 상품 간의 상호 작용입니다.
- A 사용자가 B 상품에 몇 점의 등급을 부여하였는지
- 또는 A 사용자가 B 상품을 구매 또는 상품에 노출된 빈도
등을 고려하여 User - Item 간의 선호도를 확보합니다.
아래의 데이터셋과 같이 User - Item 사이의 선호도를 userId, movieId, rating 등으로 표현할 수 있습니다.
그리고 이러한 형태의 데이터셋을 user - item Interactions 또는 Preferences, Ratings 라고 부릅니다.
(참고로 아래의 데이터셋은 "Movielens" 에서 다운로드할 수 있는 데이터셋입니다.)
Ratings Dataset 은 아래와 같이 Pivot Table 로 표현할 수도 있습니다.
Pivot Table 로 관찰해보면 생각보다 NaN 인 값이 많이 보이죠 ?
이는 상호작용하지 않은 User 와 Item 이 많다는 것을 의미하고, Sparse Matrix 인 형태를 취합니다.
Collaborative Filtering 은 각 userId 또는 movieId 에 해당하는 Vector 간의 유사도를 비교하여,
유사한 상품 또는 유사한 사용자를 찾을 수 있습니다.
퀄리티 높은 협업필터링 모델을 생성하기 위해서는 Sparse Matrix 의 Empty Value 문제를 해결하고
Regularization, Bias 등을 고려해야하는 문제점들이 존재하긴 합니다.
하지만 Content-based Filtering 과 달리 도메인의 배경지식이 필요하지 않고, 데이터 수집에 큰 어려움이 없음이 장점입니다.
또한 예측 결과의 정확도도 크게 나쁘지 않습니다.
Explicit vs Implicit Dataset.
협업 필터링에서 사용되는 데이터는 크게 Explicit 과 Implicit Dataset 로 나뉩니다.
Explicit Dataset 는 User - Item - Rating 으로 이러지는 칼럼을 가지는 데이터셋을 의미합니다.
다시 말해 사용자가 특정 상품에 대해 명확한 선호도를 표현한 데이터입니다.
반면에 Implicit Data 는 그 선호도가 명확히 점수화되지 않은 상태의 데이터입니다.
예를 들어, 구매나 방문, 노출, 클릭 빈도으로 선호도를 계산합니다.
이름에서 알 수 있듯이, Explicit Dataset 은 사용자의 선호도를 Numerical 한 상태로 데이터가 수집되어 있습니다.
평점이나 등급과 같이 말이죠.
Implicit Data 또한 이름에서 알 수 있듯이, User-Item 의 상호작용 데이터를 기반으로 그 선호도를 유추합니다.
구매 빈도나 클릭 수가 선호도의 정도를 암시할 수 있기 때문이죠.
Collaborative Filtering 은 Explicit Dataset 를 사용하는 것이 높은 정확도를 보장합니다.
하지만 현실적인 이유로 Implicit Dataset 를 활용하는 경우가 많습니다.
Sparse vs Dense.
현실적으로 모든 사용자와 모든 상품의 상호작용이 전부 발생할 수 는 없습니다.
그래서 User - Item 간의 매칭은 항상 빈 상태가 존재하는데요.
이를 Sparse 하다고 표현합니다.
반대로 이상적인 케이스에서 모든 사용자와 모든 상품의 상호작용이 전부 발생했다면 이는 Dense 한 상황입니다.
현실적인 상황에서 유의미한 상품을 Filtering 해야하기 때문에
Collaborative Filtering 의 첫번째 미션은 Sparse Data 를 Dense Data 로 바꾸어야합니다.
유사한 사용자를 찾아 Sparse 한 사용자 - 아이템 간의 데이터를 채우면서 Collaborative Filtering 이 진행됩니다.
<추후 작성한 내용들>
Neighbor Latent
반응형'AI-ML' 카테고리의 다른 글
[Statistics] Odds, Logit 알아보기 (0) 2023.11.24 [pytorch] nn.Sigmoid 알아보기 (0) 2023.10.30 [ CNN ] Feature Map 이해하기 (0) 2023.09.19 [ pytorch ] ConvTranspose2d 알아보기 (0) 2023.09.11 [ pytorch ] AutoEncoder 구현하기 (0) 2023.09.05