[프로그래머스 인공지능 미니 데브코스] 수업 정리 -23- [Recommendation system: 협업 필터링 기반 추천 엔진]

3yeong·2022년 9월 13일
0

추천 엔진 아키덱쳐

전체적인 페이지에서 어떻게 보여주고 추천할지 생각해야한다.

추천엔진 기본적인 구조


협업 필터링 소개

기본적으로 다른 사용자들의 정보를 이용하여 내 취향을 예측하는 방식
크게 세 종류가 존재
1. 사용자 기반
나와 비슷한 평점 패턴을 보이는 사람들을 찾아서 그 사람들이 높게 평가한 아이템 추천
당신과 비슷한 사용자들이 좋아하는 아이템들을 추천합니다.
2. 아이템기반
평점의 패턴이 비슷한 아이템들을 찾아서 그걸 추천하는 방식
이 아이템을 좋아한 다른 사용자들이 좋아한 아이템들을 추천합니다.
3. 예측 모델 기반
앞의 두 개는 기본적으로 유사도를 기반으로 추천 아이템을 결정
이 방식은 평점을 예측하는 머신러닝 모델을 만드는 것

구현하는 방식에는 크게 두 종류가 존재
4. 메모리 기반
코사인 유사도나 피어슨 상관계수 유사도를 사용해 비슷한 사용자 혹은 아이템을 찾음
평점을 예측할 때는 가중치를 사용한 평균을 사용
이해하기 쉽고 설명하기 쉽지만 스케일하기 힘듬(평점데이터의 부족)
5. 모델 기반
머신러닝을 사용해 평점을 예측(PCA, SVD, Matrix Factroization, 딥러닝 등등)
딥러닝의 경우에는 오토인코더를 사용하여 차원을 축소함
행렬릐 차원을 줄임으로써 평점 데이터의 부족 문제를 해결
하지만 어떻게 동작하는지 설명하기 힘듬(머신 러닝이 갖는 일반적인 문제)

메모리 기반 vs 모델 기반

메모리 기반은 유사도 함수를 기반으로 비슷한 사용자나 아이템을 검색

KNN 방식도 여기에 속한다고 볼 수 있음
평점을 예측하는 것이 아니라 유사도를 기반으로 추천

모델 기반은 어떤 비용 함수를 기반으로 학습

즉 머신러닝
-> 넷플릭스 프라이즈에서는 RMSE를 지표로 사용(실제 평점과 예측 평점 간의 차이)
SVD++(Singular Vector Decomposition++)에서는 SGD(Stochastic Gradient Descent)를 사용하여 (딥러닝처럼)학습
딥러닝에서는 오토인코더를 사용하여 사용자 아이템 행렬의 패턴을 배움
-> 오토인코더란?
딥러닝에서 데이터 차원을 축소하는 방식으로 인코딩을 통해 데이터를 압축하고 디코딩을 통해 데이터를 복구함. 인코딩을 하는 부분이 결국 차원 축소를 담당

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

  1. 메모리 기반 협업 필터링
    평점의 예측 없이 유사도 기반으로 추천할 아이템을 결정하는 방식
    그러기에 RMSE와 같은 평점 기반 평가는 불가
    보통 Top-N(혹은 NDCG) 방식으로 평가
    사용자가 좋아한 아이템을 일부 남겨두었따가 추천 리스트에 포함되어있는지 보는 방식
    추천 순서를 고려해서 평가하면 nDCG(nomalized Discounted Cumulative Gain)

  2. 모델기반 협업 필터링
    머신러닝 알고리즘들이 사용하는 일반적인 방식(RMSE)으로 성능평가 가능
    메모리 기반에서 사용하는 Top-N이나 nDCG방식도 사용 가능

  3. 온라인 테스트(A/B 테스트)
    가장 좋은 방식은 실제 사용자에게 노출시키고 성능을 평가하는 것

SurpriseLib

협업 필터링과 관련한 다양한 기능을 제공하는 라이브러리
KNNBasic 객체 이요해서 사용자 기반 혹은 아이템 기반 협업 필터링 구현
SVD 혹은 SVDpp 객체를 이용해서 모델 기반 협업 필터링

협업 필터링 알고리즘의 성능 평가를 위한 방법 제공

사용자 기반 협업 필터링

사용자의 유사도 측정

사용자들을 벡터 (아이템에 대한 평점)로 표현
지정된 사용자와 다른 나머지 사용자들과 유사도 측정
공통으로 평점을 준 아이템만 대상으로 사용자들간 유사도 측정
-> u와 다른 사용자들 하났기 대상으로 유사도 측정

이 중 가장 비슷한 K명의 사용자를 선택(Top K)
이 K명의 사용자들(u') 대상으로 u가 평가하지 않은 아이템을 평가
u'가 평가한 아이템의 i의 평점에 u와 u'의 유사도를 가중치로 합을 계싼
합산한 값이 큰 아이템들을 추천

사용자 대 아이템 행렬을 사용자간 유사도 형렬로 변환

사용자 기반 협업 필터링 실습

더미 데이터를 이용한 사용자 기반 추천 실습

사용자 기반 협업 필터링 추천

아이템 기반 협업 필터링

아이템 유사도 측정

주어진 아이템을 기반으로 가장 비슷한 아이템을 찾아서 추천

아이템 기반 협업 필터링 실습

아이템의 유사도를 기준으로 추천을 하는 사용자 기반 협업 필터링에 대해 알아보자
더미 데이터를 이용한 아이템 기반 추천 실습

아이템 기반 협업 필터링 추천

협업필터링에는 사용자 기반과 아이템기반으로 유사도를 바탕으로 추천을하는 메모리 방식과 평점을 예측하여 추천하는 모델 방식이 존재
Surprise 라이브러리를 이용하여 사용자 기반과 아이템 기반 협업 필터링 구현

profile
초보 컴공

0개의 댓글