2021-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜κ³Όμ œμ—°κ΅¬β€™ μˆ˜μ—…μ—μ„œ μ§„ν–‰ν•˜λŠ” 개인 ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•΄ 개인적으둜 μ •λ¦¬ν•œ ν¬μŠ€νŠΈμž…λ‹ˆλ‹€. 지적과 ꡐλ₯˜λŠ” μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)

7 minute read

2021-1ν•™κΈ°, λŒ€ν•™μ—μ„œ β€˜κ³Όμ œμ—°κ΅¬β€™ μˆ˜μ—…μ—μ„œ μ§„ν–‰ν•˜λŠ” 개인 ν”„λ‘œμ νŠΈλ₯Ό μœ„ν•΄ 개인적으둜 μ •λ¦¬ν•œ ν¬μŠ€νŠΈμž…λ‹ˆλ‹€. 지적과 ꡐλ₯˜λŠ” μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€ :)

Introduction to Filtering

1. Contents-based Filtering; CBF

μ‚¬μš©μž λ˜λŠ” μ•„μ΄ν…œμ— λŒ€ν•œ β€˜ν”„λ‘œν•„ λ°μ΄ν„°β€˜λ₯Ό 가지고, ν”„λ‘œν•„μ΄ μœ μ‚¬ν•˜λ‹€λ©΄ κ·Έ λŒ€μƒκ³Ό μ—°κ΄€λœ μ•„μ΄ν…œμ„ μΆ”μ²œν•˜λŠ” 방식

λ§Œμ•½ μœ μ € ν”„λ‘œν•„μ„ μž‘μ„±ν•΄ μœ μ‚¬λ„λ₯Ό κ΅¬ν•œλ‹€λ©΄, user-based recommendation, μ•„μ΄ν…œμ˜ ν”„λ‘œν•„μ„ μž‘μ„±ν•΄ μœ μ‚¬λ„λ₯Ό κ΅¬ν•œλ‹€λ©΄, item-based recommendation.

단점: λͺ¨λ“  μ•„μ΄ν…œμ— λŒ€ν•œ ν”„λ‘œν•„μ„ λ§Œλ“œλŠ” 것이 μ–΄λ €μš°λ©°, ν”„λ‘œν•„μ„ λ§Œλ“œλŠ” κ³Όμ •μ—μ„œ 개인의 β€˜μ£Όκ΄€β€™μ΄ κ°œμž…ν•œλ‹€.


2. Collaborative Filtering; CF πŸ”₯

ν”„λ‘œν•„ 데이터 없이, μ‚¬μš©μžμ˜ β€˜κ³Όκ±° 행동 λ°μ΄ν„°β€˜λ§Œμ„ 가지고 μΆ”μ²œμ„ μ§„ν–‰ν•˜λŠ” 방식

평점, μ˜ˆμ•½ 기둝 등이 과거의 행동 λ°μ΄ν„°λ‘œ μˆ˜μ§‘λ  수 μžˆλ‹€!

μž₯점: 데이터셋을 μŒ“κΈ°κ°€ 쉽닀! 그리고 일반적으둜 CBF보닀 더 쒋은 μ„±λŠ₯을 λ‚Έλ‹€κ³  μ•Œλ €μ Έ μžˆλ‹€.

단점: κ·ΈλŸ¬λ‚˜ κ³Όκ±° 데이터가 μ—†λŠ” μ‹ κ·œ μ‚¬μš©μžμ— λŒ€ν•΄μ„  μΆ”μ²œ 정확도가 λ–¨μ–΄μ§€λŠ” Cold Start λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.


3. Hybrid Filtering

CBF와 CFλ₯Ό ν•¨κ»˜ μ‚¬μš©ν•˜λŠ” κΈ°λ²•μž„.

(1) 두 μ•Œκ³ λ¦¬μ¦˜μ„ λͺ¨λ‘ μ‹œν–‰ν•˜κ³ , 두 μ•Œκ³ λ¦¬μ¦˜μ˜ 결과에 λŒ€ν•΄ Weighted Averageλ₯Ό μ·¨ν•΄ μΆ”μ²œν•˜λŠ” <Combining Filtering>.

(2) 평점 데이터와 μ•„μ΄ν…œ ν”„λ‘œν•„μ„ μ‘°ν•©ν•΄ μ‚¬μš©μžμ— λŒ€ν•œ ν”„λ‘œν•„μ„ λ§Œλ“€μ–΄ μΆ”μ²œμ„ μ§„ν–‰ν•˜λŠ” <Collaboration via Content>.

(3) μ²˜μŒμ—λŠ” CBFλ₯Ό μ‚¬μš©ν•˜λ‹€κ°€ 데이터가 일정 수 이상 μŒ“μ΄κΈΈ κΈ°λ‹€λ € μ΄ν›„μ—λŠ” CFλ₯Ό 적용


Explicit & Implicit Dataset

CFλ₯Ό κΈ°μ€€μœΌλ‘œ μœ„μ™€ 같이 μ•„μ΄ν…œμ— λŒ€ν•œ μ‚¬μš©μžλ“€μ˜ 평점을 μ •λ¦¬ν•œ 행렬이 μ‘΄μž¬ν•œλ‹€κ³  ν•˜μž. μ΄λ•Œ, μ‚¬μš©μžλ“€μ΄ λͺ¨λ“  μ•„μ΄ν…œμ— λŒ€ν•΄ 평가λ₯Ό λ‚¨κ²¨μ£ΌλŠ” κ²½μš°λŠ” λ“œλ¬ΌκΈ° λ•Œλ¬Έμ— ν–‰λ ¬μ—λŠ” NaN 값듀이 κ½€ μ‘΄μž¬ν•œλ‹€.

μš°λ¦¬λŠ” 이 NaN 값듀이 μ‘΄μž¬ν•˜λŠ”μ§€, λ‹€λ₯΄κ²Œ ν‘œν˜„ν•˜λ©΄ λͺ¨λ“  μ•„μ΄ν…œμ— λŒ€ν•΄ μ„ ν˜Έμ™€ λΉ„μ„ ν˜Έμ— λŒ€ν•œ 값이 μ‘΄μž¬ν•˜λŠ”μ§€μ— 따라 <Explicit Dataset>κ³Ό <Implicit Dataset>으둜 κ΅¬λΆ„ν•œλ‹€.

1. Explicit Dataset

<Explicit Dataset>은 μ‚¬μš©μžκ°€ μ„ ν˜Έμ™€ λΉ„μ„ ν˜Έλ₯Ό λͺ…ν™•νžˆ κ΅¬λΆ„ν•œ 데이터셋을 λ§ν•œλ‹€. μ˜ν™” ν‰μ μ˜ κ²½μš°μ—μ„  5κ°€ μ„ ν˜Έ, 1이 λΉ„μ„ ν˜Έλ₯Ό μ˜λ―Έν•œλ‹€. 즉, λ°μ΄ν„°μ…‹μ˜ 정보λ₯Ό 톡해 μ‚¬μš©μžκ°€ λͺ¨λ“  κ°œλ³„ μ•„μ΄ν…œμ— λŒ€ν•œ μ„ ν˜Έ μ—¬λΆ€λ₯Ό νŒŒμ•…ν•  수 μžˆλŠ” 데이터셋이닀.

κ·ΈλŸ¬λ‚˜ 이런 κ²½μš°λŠ” 이상적이고, νŠΉμˆ˜ν•œ 경우둜 ν˜„μ‹€μ˜ λ°μ΄ν„°μ—μ„œλŠ” λͺ¨λ“  μ•„μ΄ν…œμ— λŒ€ν•œ μ„ ν˜Έκ°€ κ²°μ •λ˜μ–΄ μžˆμ§€ μ•Šλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— μš°λ¦¬λŠ” <Implicit Dataset>을 μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€λ₯Ό 더 κ³ λ―Όν•΄μ•Ό ν•œλ‹€.


2. Implicit Dataset

<Implicit Dataset>의 경우, 였직 μ‚¬μš©μžκ°€ ν•΄λ‹Ή μ•„μ΄ν…œμ„ μ–Όλ§ˆλ‚˜ μ†ŒλΉ„ν–ˆλŠ”μ§€, 즉 β€˜λΉˆλ„β€™λ§Œμ„ κΈ°λ‘ν•œ 데이터셋이닀. μ‡Όν•‘λͺ°μ˜ 클릭 μ—¬λΆ€, μƒν’ˆμ— λŒ€ν•œ ꡬ맀 νšŸμˆ˜κ°€ 등이 μ΄κ²ƒμ˜ 쒋은 사둀이닀.

How to?

μ•žμ—μ„œ μ œμ‹œν•œ 평점 ν–‰λ ¬λ‘œ λ‹€μ‹œ λŒμ•„μ˜€μž. μΆ”μ²œ μ•Œκ³ λ¦¬μ¦˜μ˜ λͺ©ν‘œλŠ” NaN에 μ–΄λ–€ 값이 λ“€μ–΄κ°ˆμ§€ μ˜ˆμΈ‘ν•˜λŠ” 것이닀.

λ§Œμ•½ μš°λ¦¬κ°€ 평점 행렬을 Explicit Dataset둜 ν•΄μ„ν•œλ‹€λ©΄, μš°λ¦¬λŠ” μ„ ν˜Έλ„κ°€ λͺ…ν™•ν•œ λ°μ΄ν„°μ…‹λ“€λ§ŒμœΌλ‘œ ν•™μŠ΅μ„ μ‹œν‚¨λ‹€. 즉, NaN 데이터듀을 μ œμ™Έν•˜κ³  μ•Œκ³ λ¦¬μ¦˜μ„ μ„€κ³„ν•˜κ³  ν•™μŠ΅μ‹œν‚¨λ‹€λŠ” 말이닀.

λ°˜λ©΄μ— 평점 행렬을 Implicit Dataset둜 ν•΄μ„ν•œλ‹€λ©΄, μš°λ¦¬λŠ” μ‚¬μš©μžκ°€ μ–΄λ–€ μ•„μ΄ν…œμ„ μ„ ν˜Έν•˜λŠ”μ§€ μ•Œμ§€λ§Œ, μ–΄λ–€ μ•„μ΄ν…œμ„ λΉ„μ„ ν˜Έν•˜λŠ”μ§€λŠ” μ•Œμ§€ λͺ»ν•œλ‹€. λ˜ν•œ, μ € NaN에 μ‚¬μš©μžκ°€ μ’‹μ•„ν•˜λŠ” μ•„μ΄ν…œμ΄ μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ μžˆλ‹€. κ·Έλž˜μ„œ 이 κ²½μš°λŠ” NaN 데이터듀을 포함해 μ•Œκ³ λ¦¬μ¦˜μ„ μ„€κ³„ν•˜κ³  ν•™μŠ΅μ„ μ‹œν‚¨λ‹€.

How to implement?

κ·Έλ ‡λ‹΄ Explicit이든 Implicit이든, NaN을 μ–΄λ–»κ²Œ μ²˜λ¦¬ν• μ§€λŠ” μ •ν–ˆμœΌλ‹ˆ, 그럼 μ–΄λ–»κ²Œ 그리고 μ–΄λ–€ μ•Œκ³ λ¦¬μ¦˜μ„ μ‚¬μš©ν•΄μ•Ό ν• κΉŒ? μ—¬κΈ°μ„œλŠ” λŒ€ν‘œμ μΈ 두 방법인 <Neighborhood Model>κ³Ό <Latent Factor Model>을 μ‚΄νŽ΄λ³Έλ‹€.

1. Neighborhood Model

<NM; Neighborhood model>은 평점 데이터λ₯Ό λ°”νƒ•μœΌλ‘œ μ„œλ‘œ μœ μ‚¬ν•œ μœ μ € ν˜Ήμ€ μ•„μ΄ν…œμ„ μ°ΎλŠ”λ‹€. μ΄λ•Œ, 두 λŒ€μƒ μ‚¬μ΄μ˜ μœ μ‚¬λ„λ₯Ό μΈ‘μ •ν•΄μ•Ό ν•˜λŠ”λ° κ·Έ 쀑 ν•˜λ‚˜λ‘œ <Person Correlation>을 μ“Έ 수 μžˆλ‹€.

Definition. Person Correlation

\[r_{XY} = \frac{\text{cov}(X, Y)}{\sigma_X \sigma_Y}\]

$r_{XY} = 1$이면, μ–‘(+)의 상관관계λ₯Ό, $r_{XY} = -1$이면, 음(-)의 상관관계λ₯Ό 가진닀.

λ§Œμ•½ μœ μ € $X$μ—κ²Œ μ–΄λ–€ μ˜ν™”λ₯Ό μΆ”μ²œν•˜κ³  μ‹Άλ‹€λ©΄ 각 μœ μ €μ˜ 평점 벑터 $\mathbf{x}$와 λ‹€λ₯Έ μœ μ €λ“€μ˜ 평점 벑터에 λŒ€ν•΄ λͺ¨λ‘ Corrλ₯Ό κ΅¬ν•œ 후에 μœ μ‚¬λ„κ°€ κ°€μž₯ 큰 μœ μ €λ₯Ό νŠΉμ •ν•œλ‹€. 그리고 κ·Έ μœ μ €κ°€ 높은 평점을 μ˜ν™”λ₯Ό μœ μ € $X$μ—κ²Œ μΆ”μ²œν•˜λ©΄ λœλ‹€. 이 경우λ₯Ό <User-oriented Neighborhood model>이라고 ν•œλ‹€.

λ°˜λŒ€λ‘œ μ•„μ΄ν…œ μ‚¬μ΄μ˜ Corrλ₯Ό ꡬ할 μˆ˜λ„ μžˆλ‹€. 그리고 이 쀑 κ°€μž₯ μœ μ‚¬ν•œ $K$의 μ•„μ΄ν…œμ„ 묢어쀄 μˆ˜λ„ μžˆμ„ 것이닀. 이런 상황을 μƒκ°ν•΄λ³΄μž. λ‚΄κ°€ λ„·ν”Œλ¦­μŠ€μ—μ„œ μ–΄λ–€ μ˜ν™” ν•œνŽΈμ„ μ„ νƒν–ˆλ‹€. 그리고 ν™”λ©΄ ν•˜λ‹¨μ—λŠ” κ·Έ μ˜ν™”μ™€ μœ μ‚¬ν•œ $K$의 μ˜ν™”λ“€μ΄ λ‚˜μ—΄λ˜μ–΄ μžˆλ‹€. μ΄λ•Œ, μ˜ν™” μΆ”μ²œκ³Ό ν•¨κ»˜ λ‚΄κ°€ 쀄 β€˜μ˜ˆμƒ 평점’도 ν•¨κ»˜ μ œκ³΅λœλ‹€. λ‚˜λŠ” λΆ„λͺ…이 μ € μ˜ν™”λ₯Ό 본적이 μ—†λŠ”λ°, β€˜μ˜ˆμƒ 평점’은 μ–΄λ–»κ²Œ μœ λ„λœ κ²ƒμΌκΉŒ? μ΄λ•Œ, λ“±μž₯ν•˜λŠ” 것이 <Neighborhood Algorithm>이닀.

Definition. Neighborhood Algorithm

  • $\hat{s}_{ui}$: predicted score that user $u$ will give to movie $i$.
  • $r_{ij}$: similarity btw movie $i$ and movie $j$.
  • $s_{uj}$: score that user $u$ has rated to movie $j$.
  • $S(i; u, K)$: $K$ number of neighbors of movie $i$, which are rated by user $u$.
\[\hat{s}_{ui} = \frac{\displaystyle \sum_{j \in S(i; u, K)} r_{ij} s_{uj} }{\displaystyle \sum_{j \in S(i; u, K)} r_{ij}}\]

μ›λ¦¬λŠ” κ°„λ‹¨ν•˜λ‹€. κ·Έλƒ₯ μ˜ν™” $i$와 λ‚΄κ°€ 평점을 맀긴 μ˜ν™”λ“€ μ‚¬μ΄μ˜ similarityλ₯Ό κ΅¬ν•˜κ³  이λ₯Ό λ°”νƒ•μœΌλ‘œ κ°€μž₯ μœ μ‚¬ν•œ $K$개λ₯Ό μ„ μ •ν•œλ‹€. 그리고 λ‚΄κ°€ 맀긴 평점듀을 similarityλ₯Ό λ°”νƒ•μœΌλ‘œ 가쀑합을 ν•΄ ν•œλ²ˆλ„ 보지 μ•Šμ€ μ˜ν™”μ˜ 평점을 μ˜ˆμΈ‘ν•œλ‹€! 😎

이런 NM은 Explicit Dataset에 더 μ ν•©ν•˜λ©°, Implicit Dataset은 NM λ³΄λ‹€λŠ” μ•„λž˜μ—μ„œ μ„€λͺ…ν•  <Latent Factor Model>이 더 μ ν•©ν•˜λ‹€!


2. Latent Factor Model

<Latent Factor Model>은 κ΄€μ°°λœ 데이터와 잠재 λ°μ΄ν„°μ˜ 관계식을 μœ λ„ν•˜λŠ” λͺ¨λΈμ΄λ‹€. 그리고 λ”₯λŸ¬λ‹ μ—­μ‹œ Latent Factor Model의 μΌμ’…μœΌλ‘œ ν‰κ°€λœλ‹€.

μš°λ¦¬λŠ” 주어진 평점 데이터 $R$을 μ‚¬μš©μžμ™€ μ•„μ΄ν…œμ˜ Latent Factor $X$, $Y$둜 λΆ„ν•΄ν•œλ‹€. 그리고 이 λ‘˜μ„ 각각 ν•™μŠ΅μ‹œν‚€λŠ” <MF; Matrix Factorization> 기법을 μ‚¬μš©ν•  것이닀.

μ—¬κΈ°μ„œλŠ” κ°„λ‹¨νžˆ μ†Œκ°œλ§Œ ν•˜κ³ , μ΄μ–΄μ§€λŠ” ν¬μŠ€νŠΈμ—μ„œ <Latent Factor Model>에 λŒ€ν•΄ 더 μžμ„Ένžˆ 닀루겠닀 πŸ˜‰

πŸ‘‰ Latent Matrix Factorization


references