ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Collaborative Filtering 이해하기
    AI-ML 2023. 9. 25. 22:52
    728x90
    반응형

    - 목차

     

    키워드.

    • 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 를 가집니다.

    출처 : https://www.kaggle.com/datasets/bhanupratapbiswas/fashion-products

     

    그리고 아래의 테이블은 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
Designed by Tistory.