3 Wed
[AI 스쿨 1기] 12주차 DAY 3
Recommendation system : 협업 필터링 기반 추천 엔진
추천엔진의 기본적인 구조 : 전체 추천 페이지 레벨
개인 정보를 바탕으로 추천 유닛 후보를 생성한다
추천 유닛 후보의 랭킹을 매긴다.
이후 랭킹 순으로 추천 유닛을 출력한다
이 때 너무 많은 유닛을 출력하면 안된다.
최대한 많은 유닛을 보여주되, 생성 시간이 오래 걸리면 안된다.
추천엔진의 기본적인 구조 : 추천 유닛 레벨
유닛마다 무슨 일을 하는지 정의가 있다(신상품을 보여주는지, 인기가 많은 제품을 보여주는지, 비슷한 아이템을 보여주는 지 등)
협업 필터링 소개
기본적으로 다른 사용자들의 정보를 이용하여 내 취향을 예측하는 방식
크게 세 종류가 존재한다.
사용자 기반
나와 비슷한 평점 패턴을 보이는 사람들의 고평가 아이템
아이템 기반
이 아이템을 좋아하는 다른 사용자들이 좋아하는 아이템
사용자와 아이템 기반은 유사도를 통해 예측
예측 모델 기반
평점을 예측하는 머신러닝 모델을 만드는 것.
구현하는 방식에는 크게 두 종류가 존재
메모리 기반 - 사용자, 아이템
코사인 유사도나 피어슨 상관계수 유사도를 사용
KNN 방식도 여기에 속함
평점을 예측할 때 가중치를 사용한 평균을 사용 => 여기서 예측 한다는 느낌 보다는 유사도를 기반으로 추천한다고 이해하면 된다
이해와 설명이 쉽지만 평점 데이터의 부족으로 스케일하기 힘듦
사용자와 아이템이 늘어나면 계산의 양이 늘어남
모델 기반 - 예측 모델
머신 러닝을 사용해 평점을 예측 (PCA, SVD, Matrix Factorization, 딥러닝 등)
딥러닝은 오토인코더를 사용하여 차원을 축소
오토인코더 : 딥러닝에서 데이터 차원을 축소하는 방식. 인코더로 데이터를 압축, 디코더로 복원.
넷플릭스는 RMSE를 지표로 사용.
행렬의 차원을 줄임으로써 평점 데이터의 부족 문제를 해결
자세한 동작을 설명하기 힘듦
협업 필터링(또는 일반적인 추천 엔진) 평가
실제로 추천 엔진을 평가하기는 쉽지 않음. 다른 머신러닝 분야와 비교해도 잘 정의되어 있지 않음.
모델 기반 협업 필터링
머신 러닝 알고리즘들이 사용하는 일반적인 방식으로 성능 평가 가능
메모리 기반에서 사용하는 Top-N이나 nDCG 방식도 사용 가능
가능은 하지만 TRAIN과 TEST로 나누어서 평가하는 것은 큰 의미가 없음
사용자의 취향이 계속 바뀔 수 있기 때문
제일 좋은 방법은 A/B 테스트가 좋음
실제 사용자에게 노출시키고 성능을 평가하는 것
SurpriseLib 소개
협업 필터링과 관련한 다양한 기능을 제공하는 라이브러리
알고리즘의 성능 평가를 위한 방법 제공
사이킷-런과 사용법이 비슷
사용자의 유사도 측정
사용자들의 평점을 벡터로 표현
지정된 사용자와 다른 나머지 사용자들과 유사도 측정
이 중 가장 비슷한 K명의 사용자를 선택 : Tok K
이 K명의 사용자들 대상으로 지정된 사용자가 평가하지 않은 아이템을 평가
어떠한 사용자가 나와 더 유사하다고 판단되면 그 사용자가 좋아한 아이템에 대해 더 가중치가 주어지며, 반대로 덜 유사하다고 판단되면 그 사용자가 좋아한 아이템에 대해 덜 가중치가 주어진다
Last updated
Was this helpful?