Bayesian Personalized Ranking(BPR)

김동준·2025년 12월 4일

Recommend System

목록 보기
7/14

Bayesian Personalized Ranking(BPR) 완전 정복

  1. 들어가며

추천 시스템은 사용자가 무엇을 “좋아할지” 예측하는 기술입니다. 특히 전자상거래, 음악 스트리밍, 영상 플랫폼처럼 implicit feedback(암묵적 피드백)이 중심이 되는 서비스에서는 사용자가 클릭·구매·시청한 기록만 주어지고, 명시적으로 1~5점 같은 평점을 남기지 않습니다.

이 경우 행동 기록은 단순히 “본 적 있는 아이템” 또는 “본 적 없는 아이템”으로 불완전하게 주어지는데, 여기서 등장한 혁신적인 방식이 Bayesian Personalized Ranking (BPR) 입니다.
BPR의 핵심은 다음 한 문장으로 요약할 수 있습니다.

“사용자가 본 아이템은 안 본 아이템보다 더 선호한다고 가정하고, 이 선호 쌍(pairwise preference)을 최대화하도록 학습하자.”

⸻

  1. 왜 BPR인가? — 기존 방식의 한계

전통적인 행렬분해(Matrix Factorization)는 보통 평점 기반(명시적 피드백)을 가정합니다.
예:
• 유저 A가 영화 1에 ★★★★☆, 영화 2에 ★☆☆☆☆ 기록
• 이를 기반으로 잠재요인을 학습

그러나 Netflix, Amazon, YouTube처럼 평점이 없는 환경에서는 다음 문제가 생깁니다.

문제 1: “0”이 의미하는 것이 불명확함
• 사용자가 아이템을 싫어서 안 본 것인지
• 단순히 노출이 안 되어 못 본 것인지
구분이 불가능합니다.

문제 2: 명시적 피드백 기반 모델은 암묵적 피드백에는 비적합

암묵적 피드백은 선호의 강도를 주지 않으므로, “보았다/안 보았다” 간의 상대적 선호도(relative preference) 개념이 필요합니다.

문제 3: 추천이 결국 필요한 것은 “선호도 순위”

추천 시스템의 궁극적 목표는 “예측 점수”가 아니라 정렬된 순위입니다.
BPR은 처음부터 순위(rank)를 최적화하도록 설계된 알고리즘입니다.

⸻

  1. BPR의 핵심 아이디어

3.1 Pairwise Ranking 관점

사용자가 아이템 i를 클릭했고 아이템 j는 클릭하지 않았다면:

u는 아이템 i를 j보다 더 선호한다 (i > j).

각 유저 u마다 (i, j) 쌍을 만들어 학습합니다.

3.2 목적 함수

BPR은 다음과 같은 목표를 최대로 만듭니다.

\max \sum{(u,i,j)} \ln \sigma(\hat{x}{uij}) - \lambda||\Theta||^2

여기서
• \hat{x}{uij} = \hat{x}{ui} - \hat{x}_{uj}
• \sigma는 sigmoid
• (u,i,j)는 “u가 i를 j보다 선호한다”는 삼중쌍
• \Theta는 파라미터(Latent factor 등)

즉,

사용자가 선호한 아이템의 점수가 비선호 아이템보다 크게 만들도록 확률을 최대화

하는 것입니다.

⸻

  1. 동작 방식 예시로 쉽게 이해하기

아래 예시는 직관적으로 BPR이 어떻게 작동하는지 보여줍니다.

⸻

예시 1: 영화 추천 서비스

사용자 A의 행동:
• 영화 〈인터스텔라〉 · 〈다크나이트〉 시청
• 〈라라랜드〉 · 〈토이 스토리〉는 시청 X

BPR은 다음과 같은 훈련 데이터를 생성합니다.
• A prefers 인터스텔라 > 라라랜드
• A prefers 인터스텔라 > 토이 스토리
• A prefers 다크나이트 > 라라랜드
• A prefers 다크나이트 > 토이 스토리

즉, (i=인터스텔라, j=라라랜드)처럼 pairwise 데이터를 생성합니다.
모델은 반복적으로 아래를 학습합니다.
• 인터스텔라의 점수가 라라랜드보다 크도록
• 인터스텔라의 점수가 토이 스토리보다 크도록
• 다크나이트의 점수가 라라랜드보다 크도록
• 다크나이트의 점수가 토이 스토리보다 크도록

최종적으로 A에게는 인터스텔라와 다크나이트 계열의 “어두운 SF/스릴러” 영화가 상위에 추천됩니다.

⸻

예시 2: 쇼핑몰 상품 추천

사용자 B의 행동:
• 운동화 클릭/구매
• 티셔츠 클릭
• 모자/백팩은 보지 않음

BPR은 다음처럼 pairwise 비교를 합니다.
• 운동화 > 모자
• 운동화 > 백팩
• 티셔츠 > 모자
• 티셔츠 > 백팩

그러면 모델은 B의 벡터를 “패션 중에서도 스포츠/스타일리시 취향”으로 업데이트합니다.
추천 결과:
• 아디다스 신상 운동화
• 나이키 기능 티셔츠
• 러닝 웨어

이런 식으로 “선호 순위 기반” 추천이 가능합니다.

⸻

예시 3: 음악 스트리밍

사용자 C는
• BTS의 Pop 장르만 자주 재생
• Rock은 거의 재생 X

그러면
• Pop > Rock
• Pop > Jazz
와 같은 pairwise가 생성되어 latent factor가 Pop 쪽으로 이동합니다.

결국 C의 홈 화면에는
• BTS
• NewJeans
• Charlie Puth
과 유사한 Pop 기반 아티스트가 상단 노출됩니다.

⸻

  1. BPR의 학습 알고리즘

5.1 SGD (Stochastic Gradient Descent)

BPR은 확률적 경사하강법을 활용합니다.
1. 유저 u 임의 선택
2. u가 시청한 아이템 i 선택
3. u가 시청하지 않은 아이템 j 무작위 샘플링
4. 점수 차이 \hat{x}{ui}-\hat{x}{uj} 계산
5. sigmoid를 통해 확률화
6. 경사하강 update
7. 반복

중요 포인트
그냥 “점수 예측”이 아니라 “차이(score difference)”를 직접 최적화합니다.

⸻

  1. 왜 Bayesian인가?

이름에는 Bayesian이 들어가지만 모델이 베이지안 확률 모델을 완전하게 구현한다기보다는,

우리가 보고 있는 user preference data가 pairwise likelihood를 따른다
는 관점에서 베이지안적 추론을 활용한 것에 가깝습니다.

⸻

  1. BPR과 일반 Matrix Factorization 차이

항목 MF BPR
입력 평점 기반(명시) 클릭/구매/재생(암묵)
목표 점수 예측 (RMSE 최소화) 순위 최적화 (pairwise likelihood 최대화)
학습 데이터 (u, i) (u, i, j)
0의 의미 “평점 없음” or “모름” “비선호 가능성”
결과 예측 점수 정렬 순위

⸻

  1. BPR의 장점

1) 암묵적 피드백에 최적화

대부분의 실제 서비스가 평점 대신 클릭/시청의 로그만 가지므로 BPR이 매우 실용적입니다.

2) 순위(ranking) 자체를 직접 최적화

NDCG, MAP 같은 랭킹 metric을 향상시키는 데 매우 효과적입니다.

3) 매우 큰 데이터에서 효율적

Sampling 방식을 사용하므로 효율적인 확률적 학습 가능.

4) 간단하면서도 강력한 추천 품질

Latent factor + pairwise 구조라는 단순함에도 실제 성능은 매우 좋습니다.

⸻

  1. BPR의 한계

1) 네거티브 샘플링 품질에 크게 좌우됨

클릭 안 한 모든 아이템 j가 실제 “비선호”인지 알 수 없음.

2) 매우 많은 (u, i, j) 조합 생성 필요

Implicit feedback이 커질수록 pairwise 데이터는 기하급수적으로 늘어남.

3) 희소성(sparsity) 문제는 여전히 존재

한 유저가 본 아이템 수가 적다면 pairwise 쌍도 적습니다.

4) context-aware 추천에는 추가 모델이 필요

시간대·디바이스·위치 등 맥락(join context)을 반영하려면 확장 모델이 필요합니다.

⸻

  1. BPR의 확장 모델

1) BPR-MF: 가장 기본

Matrix Factorization 기반 BPR.

2) BPR+Neural Networks

Neural Collaborative Filtering(NCF) 모델의 pairwise 구조로 확장.

3) BPR with side information

아이템 메타데이터(장르, 브랜드), 유저 프로필 정보를 함께 사용.

⸻

  1. 심층 이해를 위한 실제 수식 기반 예시

사용자가 i 상품을 클릭했다고 하자.
모델은 다음처럼 latent factor를 사용:
• 유저 벡터: p_u
• 아이템 벡터: q_i

이때 예측 점수는

\hat{x}_{ui} = p_u^\top q_i

그리고 학습의 목표는

P(i > j | u) = \sigma(p_u^\top q_i - p_u^\top q_j)

즉,

같은 유저 u일 때, i의 내적이 j의 내적보다 크면 된다.

그렇게 되도록 gradient를 통해 u, i, j 벡터를 조정합니다.

⸻

  1. 실제 서비스에서의 BPR 적용 시나리오

시나리오: 전자상거래 추천 엔진 구축

Step 1. 로그 수집
• view, click, add-to-cart, purchase
이를 implicit positive로 간주하고 “본 기록 없는 아이템”을 negative candidate로 처리.

Step 2. pairwise 생성
• 유저 u가 구매한 상품 i
• 유저 u가 구매하지 않은 상품 j
→ (u, i, j) 생성

Step 3. BPR-MF 훈련

latent factor 50~200차원
SGD 학습 반복

Step 4. 추천 결과 생성

\hat{x}_{ui} = p_u^\top q_i
값이 큰 순으로 정렬하여 Top-N 추천

Step 5. A/B 테스트

CTR, 구매전환율 상승 확인

이런 구조는 한국의 대형 쇼핑몰뿐 아니라 전 세계 대부분의 커머스에서 널리 사용됩니다.

⸻

  1. 결론

BPR은 “암묵적 피드백 중심의 순위 최적화 알고리즘”이라는 점에서 오늘날 추천 시스템의 표준 중 하나입니다.
핵심은:
• 사용자가 본 아이템 > 안 본 아이템
• 점수 차이를 sigmoid로 확률화
• pairwise likelihood를 최대화
• SGD 기반으로 효율적으로 학습

BPR은 단순하지만 실제 서비스에서 높은 추천 품질을 보여주며, 신경망 기반 모델들이 등장한 이후에도 여전히 강력한 baseline이자 중요한 구성 요소로 널리 활용되고 있습니다.

profile
Story Engineer

0개의 댓글