3 Wed

[AI 스쿨 1기] 12주차 DAY 3

Recommendation system : 협업 필터링 기반 추천 엔진

추천엔진의 기본적인 구조 : 전체 추천 페이지 레벨

  1. 개인 정보를 바탕으로 추천 유닛 후보를 생성한다

  2. 추천 유닛 후보의 랭킹을 매긴다.

  3. 이후 랭킹 순으로 추천 유닛을 출력한다

    • 이 때 너무 많은 유닛을 출력하면 안된다.

    • 최대한 많은 유닛을 보여주되, 생성 시간이 오래 걸리면 안된다.

추천엔진의 기본적인 구조 : 추천 유닛 레벨

  • 유닛마다 무슨 일을 하는지 정의가 있다(신상품을 보여주는지, 인기가 많은 제품을 보여주는지, 비슷한 아이템을 보여주는 지 등)

협업 필터링 소개

  • 기본적으로 다른 사용자들의 정보를 이용하여 내 취향을 예측하는 방식

  • 크게 세 종류가 존재한다.

    • 사용자 기반

      • 나와 비슷한 평점 패턴을 보이는 사람들의 고평가 아이템

    • 아이템 기반

      • 이 아이템을 좋아하는 다른 사용자들이 좋아하는 아이템

    • 사용자와 아이템 기반은 유사도를 통해 예측

    • 예측 모델 기반

      • 평점을 예측하는 머신러닝 모델을 만드는 것.

  • 구현하는 방식에는 크게 두 종류가 존재

    • 메모리 기반 - 사용자, 아이템

      • 코사인 유사도나 피어슨 상관계수 유사도를 사용

        • KNN 방식도 여기에 속함

      • 평점을 예측할 때 가중치를 사용한 평균을 사용 => 여기서 예측 한다는 느낌 보다는 유사도를 기반으로 추천한다고 이해하면 된다

      • 이해와 설명이 쉽지만 평점 데이터의 부족으로 스케일하기 힘듦

      • 사용자와 아이템이 늘어나면 계산의 양이 늘어남

    • 모델 기반 - 예측 모델

      • 머신 러닝을 사용해 평점을 예측 (PCA, SVD, Matrix Factorization, 딥러닝 등)

        • 딥러닝은 오토인코더를 사용하여 차원을 축소

          • 오토인코더 : 딥러닝에서 데이터 차원을 축소하는 방식. 인코더로 데이터를 압축, 디코더로 복원.

        • 넷플릭스는 RMSE를 지표로 사용.

      • 행렬의 차원을 줄임으로써 평점 데이터의 부족 문제를 해결

      • 자세한 동작을 설명하기 힘듦

협업 필터링(또는 일반적인 추천 엔진) 평가

  • 실제로 추천 엔진을 평가하기는 쉽지 않음. 다른 머신러닝 분야와 비교해도 잘 정의되어 있지 않음.

  • 모델 기반 협업 필터링

    • 머신 러닝 알고리즘들이 사용하는 일반적인 방식으로 성능 평가 가능

    • 메모리 기반에서 사용하는 Top-N이나 nDCG 방식도 사용 가능

    • 가능은 하지만 TRAIN과 TEST로 나누어서 평가하는 것은 큰 의미가 없음

      • 사용자의 취향이 계속 바뀔 수 있기 때문

  • 제일 좋은 방법은 A/B 테스트가 좋음

    • 실제 사용자에게 노출시키고 성능을 평가하는 것

SurpriseLib 소개

  • 협업 필터링과 관련한 다양한 기능을 제공하는 라이브러리

  • 알고리즘의 성능 평가를 위한 방법 제공

  • 사이킷-런과 사용법이 비슷

사용자의 유사도 측정

  • 사용자들의 평점을 벡터로 표현

  • 지정된 사용자와 다른 나머지 사용자들과 유사도 측정

  • 이 중 가장 비슷한 K명의 사용자를 선택 : Tok K

  • 이 K명의 사용자들 대상으로 지정된 사용자가 평가하지 않은 아이템을 평가

  • 어떠한 사용자가 나와 더 유사하다고 판단되면 그 사용자가 좋아한 아이템에 대해 더 가중치가 주어지며, 반대로 덜 유사하다고 판단되면 그 사용자가 좋아한 아이템에 대해 덜 가중치가 주어진다

Last updated

Was this helpful?