🀴 Deep Learning 이용 λΆ„μ•Ό - μΆ”μ²œ μ‹œμŠ€ν…œ

λ‚΄ ꡬ글 μ•„μ΄λ””λ‘œ 둜그인 ν•œ λ‹€μŒ μœ νŠœλΈŒμ— λ“€μ–΄κ°€λ©΄
λ‚΄κ°€ 보고싢은 μ˜μƒλ“€μ„ λ„ˆλ¬΄ λˆ„λ₯΄κ³  μ‹Άκ²Œ 보여쀀닀

youtube.PNG

λ‹¨μˆœν•˜κ²Œ 생각해볼 수 μžˆλ‹€.

μ•„, λ‚΄κ°€ μ§€κΈˆκΉŒμ§€ 봀던 μ˜μƒλ“€μ„ 기반으둜 λ‚΄κ°€ 보고싢어할 μ˜μƒμ„ λ„μ›Œμ£ΌλŠ”κ΅¬λ‚˜.

μ—¬κΈ°μ„œ

봀던 μ˜μƒλ“€μ„ 기반으둜

μ—μ„œ λ”₯λŸ¬λ‹ 기법이 μ‚¬μš©λ  수 μžˆλ‹€.


1. μΆ”μ²œμ‹œμŠ€ν…œμ΄λž€?

업계 λ‚΄ μš©μ–΄λ₯Ό 빌리자면

user μ—κ²Œ item 을 μ œκ³΅ν•˜λŠ” μ‹œμŠ€ν…œ.

μš°λ¦¬λŠ” user 의 정보와 item 의 정보λ₯Ό κ°€μ§€κ³  μžˆλ‹€

예λ₯Ό λ“€μ–΄ user μ„±λ―Ό 이 μžˆλ‹€κ³  ν•œλ‹€λ©΄

μ„±λ―Ό : 25μ‚΄ / 남성 / 인천 / 학생 / μΈλ””μŒμ•…μ„ ν˜Έ

아무리 간단해도 λ‚˜μ΄, 성별, μ§€μ—­ λ“± μ—¬λŸ¬ 개의 정보λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

item β€˜Star is Born’ μ΄λΌλŠ” μ˜ν™”κ°€ μžˆλ‹€κ³  ν•œλ‹€λ©΄

β€˜Star is Born’ : 인기도 5 / μ•‘μ…˜λ„ 5 / 둜맨슀 8 / μŒμ•… 10 / 리뷰평점 4.5 /

λ“±μ˜ 정보λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

이 user 와 item 의 정보λ₯Ό μˆ˜μΉ˜ν™”(vectorize) μ‹œμΌœ μœ μ‚¬λ„(similarity) λ₯Ό νŒλ‹¨ν•œ ν›„
μœ μ‚¬λ„κ°€ 높은 것을 μ œκ³΅ν•˜λŠ” 것.

이것이 λ°”λ‘œ μΆ”μ²œμ‹œμŠ€ν…œμ΄λ‹€.

에? λ„ˆλ¬΄ 쉽지 μ•Šλƒκ³ ? 이게 ꡳ이 λ”₯λŸ¬λ‹μ΄ ν•„μš”ν•˜λƒκ³ ?
이건 정말정말 λ‹¨μˆœν•˜κ²Œ λ§ν•œκ±°λ‹€.

μš°λ¦¬λŠ” 2차원 평면 μƒμ—μ„œ 두 점 κ°„μ˜ 거리λ₯Ό κ΅¬ν•˜λŠ” 방법을 μ•Œκ³  μžˆλ‹€.
μ‰½μž–μ•„.

$x = (a_1,a_2)$ , $y = (b_1,b_2)$ 일 λ•Œ,

$\sqrt{(b_1-a_1)^2 +(b_2-b_1)^2}$

자 κ·Έλ ‡λ‹€λ©΄ 3차원은? 4차원은? 자 μ΄λž˜μ„œ λ”₯λŸ¬λ‹μ΄ ν•„μš”ν•œ 것이닀.

1-1. μœ μ‚¬λ„ Similarity μΈ‘μ • 방법

λ‹€μ–‘ν•œ μœ μ‚¬λ„ μΈ‘μ • 방법이 μ‘΄μž¬ν•œλ‹€.

  1. μœ ν΄λ¦¬λ“œ 거리 계산법
  2. μžμΉ΄λ“œ μœ μ‚¬λ„
  3. ν”Όμ–΄μŠ¨ μƒκ΄€κ³„μˆ˜
  4. 코사인 μœ μ‚¬λ„ 츑정법

κ·Έ 쀑 ν•˜λ‚˜μΈ 코사인 μœ μ‚¬λ„ 츑정법을 κ°„λ‹¨νžˆ μ„€λͺ…ν•΄ λ³Έλ‹€.

코사인 μœ μ‚¬λ„ 츑정법은 μˆ˜ν•™μ‹œκ°„μ— 배운 코사인을 톡해 벑터 κ°„ λ‚΄μ μœΌλ‘œ 두 점 κ°„μ˜ 거리λ₯Ό μΈ‘μ •ν•˜λŠ” 방법이닀. cos.PNG

두 점 κ°„μ˜ 벑터값을 κ΅¬ν•œ λ’€

λ°©ν–₯이 μ™„μ „νžˆ λ™μΌν•œ κ²½μš°λŠ” 1,
90도인 κ²½μš°λŠ” 0.
μ •λ°˜λŒ€ λ°©ν–₯인 κ²½μš°λŠ” -1 인 μ μ—μ„œ μ°©μ•ˆν•΄

-1 μ—μ„œ 1 μ‚¬μ΄μ˜ 값을 ꡬ해 μœ μ‚¬λ„λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

예λ₯Ό λ“€μ–΄

$ a=(1,1,1)$ $b=(2,0,1)$
이라 ν•  λ•Œ,

벑터간 내적을 톡해 μœ μ‚¬λ„λ₯Ό ꡬ할 수 μžˆλ‹€.

similarity.gif

import numpy as np
from numpy import dot
from numpy.linalg import norm

a = np.array([1, 1, 1])
b = np.array([2, 0, 1])

def cos_sim(A, B): #cos simmilarlity
    return dot(A, B)/(norm(A)*norm(B))

cos_sim(t1, t2)
0.7745966692414834

이처럼 이 두 거리의 μœ μ‚¬λ„λŠ” 0.77μž„μ„ 보여쀀닀

2. μΆ”μ²œμ‹œμŠ€ν…œμ˜ μ’…λ₯˜

μΆ”μ²œμ‹œμŠ€ν…œμ˜ μ’…λ₯˜λŠ” μΆ”μ²œν•˜λŠ” λ°©μ‹μœΌλ‘œ λ‚˜λˆˆλ‹€.

  1. μ½˜ν…μΈ  기반 필터링 ; Content Based Filtering
  2. ν˜‘μ—… 필터링 ; Collaborative Filtering
    1. μ‚¬μš©μžκΈ°λ°˜
    2. μ•„μ΄ν…œκΈ°λ°˜
    3. μž μž¬μš”μΈ 기반
  3. Deep Learing 적용 방식

Content based Filtering 은 말 κ·ΈλŒ€λ‘œ
κ·Έ λ‚΄μš© 만의 μœ μ‚¬μ„±μ„ ν† λŒ€λ‘œ μΆ”μ²œν•΄μ€€λ‹€.

아바타 λ₯Ό λ΄€λ‹€λ©΄ 그와 λΉ„μŠ·ν•œ νŠΉμ§•(감독, 배우, μŠ€ν† λ¦¬, μž₯λ₯΄) 등을 κ³ λ €ν•΄ 아이언맨, κ°€λ””μ–Έμ¦ˆ 였브 κ°€λŸ­μ‹œ 등을 μΆ”μ²œν•΄μ£ΌλŠ” 것이닀.

Collaborative Filtering 은 μ‚¬μš©μž κ³Όκ±° 행동을 기반으둜 μΆ”μ²œν•˜λŠ” 방식이닀.

μ‚¬μš©μž 기반 : ” λ‹Ήμ‹ κ³Ό λΉ„μŠ·ν•œ μ‚¬λžŒλ“€μ€ 이런 μ˜μƒμ„ λ΄…λ‹ˆλ‹€ ”
μ•„μ΄ν…œ 기반 : ” 이 μ˜μƒμ„ λ³Έ λ‹€λ₯Έ μ‚¬λžŒλ“€μ€ 이 μ˜μƒλ„ λ΄€μŠ΅λ‹ˆλ‹€ ” μž μž¬μš”μΈ 기반 : ” 당신이 이 μ˜μƒλ“€μ„ μ΄λ ‡κ²Œ ν‰κ°€ν•œκ±Έ λ³΄λ‹ˆ 이 μ˜μƒμ€ λ†’κ²Œ 평가할 것 κ°™μŠ΅λ‹ˆλ‹€ ”

μž μž¬μš”μΈ κΈ°λ°˜μ€ ν–‰λ ¬ μΈμˆ˜λΆ„ν•΄ (Matrix Factorization) λ₯Ό 톡해 μ‚¬μš©μžκ°€ 평점을 λ§€κΈ°λŠ” μš”μΈ(μž μž¬μš”μΈ)을 μš°λ¦¬λŠ” λͺ¨λ₯΄λŠ” λ³€μˆ˜λΌκ³  κ°€μ •ν•˜κ³  μˆ˜μΉ˜ν™”(벑터화) ν•˜μ—¬ μƒˆλ‘œμš΄ μ˜μƒλ“€μ— μ–΄λ–€ 평점을 λ§€κΈΈμ§€ μ˜ˆμΈ‘ν•˜λŠ” 방식이닀.

이 λ‹€μ–‘ν•œ μˆ˜ν•™μ—°μ‚° ν˜Ήμ€ 계산을 μœ„ν•΄ λ‹€μ–‘ν•œ νŒŒλΌλ―Έν„°λ₯Ό μ„€μ •ν•΄ 계산을 λ„μΆœν•  수 있고,
이 λ•Œ μ‹ κ²½λ§κ²ŒμΈ΅ 연산망, 즉, Deep Learning model 을 μ ‘λͺ©ν•  수 μžˆλ‹€.

3. μ‹€μ œ μΆ”μ²œ μ‹œμŠ€ν…œ

Youtube λ‚˜ Netflix λŠ” μΆ”μ²œμ— μ•„μ£Ό λ§Žμ€ 것듀을 κ³ λ €ν•œλ‹€.

μ‚¬μš©μžμ˜ ꡬ맀 μ—¬λΆ€λΏλ§Œ μ•„λ‹ˆλΌ μ‹œμ²­ μ‹œκ°„, μ›Ήμ‚¬μ΄νŠΈ 체λ₯˜ μ‹œκ°„, μ‚¬μ΄νŠΈ μœ μž… 경둜, μ‹œμ²­κ³Ό κ΅¬λ§€κΉŒμ§€ κ±Έλ¦¬λŠ” μ‹œκ°„ λ“± ..

쒋은 μΆ”μ²œ μ‹œμŠ€ν…œμ„ λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ”

μ–΄λ–€ 데이터λ₯Ό 써야 ν•  μ§€, 데이터 κ°„ μš°μ„ λ„μ™€ κ°€μ€‘μΉ˜λŠ” μ–΄λ–»κ²Œ 두어야 ν•˜λŠ”μ§€

평가와 μˆ˜μ •μ„ λ°˜λ³΅ν•΄μ•Ό ν•œλ‹€. μΆ”μ²œμ‹œμŠ€ν…œμ— λ¨Έμ‹ λŸ¬λ‹ λ”₯λŸ¬λ‹μ΄ 적용될 μˆ˜λ„ μžˆλŠ” 것이지 ν•„μˆ˜λŠ” μ•„λ‹ˆκΈ° λ•Œλ¬Έμ—
ꡳ이 μΆ”μ²œμ‹œμŠ€ν…œμ„ μœ„ν•΄ λ¨Έμ‹ λŸ¬λ‹λΆ€ν„° λ°°μ›Œλ‚˜κ°ˆ ν•„μš”λŠ” μ—†λ‹€.