# ์ปจํ ์ธ ๊ธฐ๋ฐ ์ถ์ฒ?
: CB(Content-based Recommendation)
์ ์ A๋ผ๋ ์ฌ๋์ด ๊ณผ๊ฑฐ์ ์ ํธํ ์์ดํ ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ๋น์ทํ ์์ดํ ์ ์ ์ A์๊ฒ ์ถ์ฒํ๋ค.
=> ์์ดํ ์ ๋ฉํ๋ฐ์ดํฐ์ ์)
- ์ํ : ๋ฐฐ์ฐ, ๊ฐ๋ , ์ํ์ฅ๋ฅด
- ์์ : ์ํฐ์คํธ, ์ฅ๋ฅด, ๋ฆฌ๋ฌ, ๋ฌด๋
- ๋ธ๋ก๊ทธ / ๋ด์ค : ๋น์ทํ ์ฃผ์ ๋ ๋ด์ฉ์ ๊ฐ์ง ํ ์คํธ(๋ฌธ์ฅ, ๋จ์ด)
- ์ฌ๋ : ๊ณตํต์ ์น๊ตฌ๋ฅผ ๋ง์ด ๊ฐ์ง ๋ค๋ฅธ ์ฌ๋
# Item Profile
์ถ์ฒ ๋์์ด ๋๋ ์์ดํ ์ Profile์ ๋ง๋ค์ด์ผํ๋ค.
Profile์ ์์ดํ ์ด ๊ฐ์ง๊ณ ์๋ ํน์ง๋ค๋ก ๊ตฌ์ฑ๋์๋๋ฐ ์ด ์์ฑ๋ค์ Vectorํํ๋ก ํํํ๋ค.
* ๋ฌธ์์ ๊ฒฝ์ฐ
Item Profile : ์ค์ํ ๋จ์ด๋ค์ ์งํฉ์ผ๋ก ํํ
๋จ์ด์ ๋ํ ์ค์๋๋ฅผ ๋ํ๋ด๋ ์ค์ฝ์ด๊ฐ ํ์!
๋จ์ดw๊ฐ ๋ฌธ์d์ ๋ง์ด ๋ฑ์ฅํ๋ฉด์(Term Frequency)
๋จ์ด w๊ฐ ๋ฌธ์ ์ ์ฒด์์๋ ์ ๊ฒ ๋ฑ์ฅ(Inverse Documnet Frequency)
=> ํน์ ๋ฌธ์์ ๋ง์ด ๋ฑ์ฅํ๋ฉด์ ๋ค๋ฅธ ๋ฌธ์์ ์ ๊ฒ ๋ฑ์ฅํด์ผ๋๋ค๋ ์๋ฏธ
=> ๋จ์ด w๋ ๋ฌธ์ d๋ฅผ ์ค๋ช ํ๋ ์ค์ํ ํผ์ณ๊ฐ ๋จ / TF-IDF ๊ฐ์ด ๋์!
* TF-IDF
1) TF
: ๋จ์ด w๊ฐ ๋ฌธ์ d์ ๋ฑ์ฅํ๋ ํ์
=> TF๊ฐ ํฌ๋ค๋ฉด ๋จ์ด w๋ ๋ฌธ์d๋ฅผ ์ ์ค๋ช ํ๊ณ ์๋ค๋ ๊ฒ
2) IDF
: ์ ์ฒด ๋ฌธ์ ๊ฐ์ด๋ฐ ๋จ์ด w๊ฐ ๋ฑ์ฅํ ๋น์จ์ ์ญ์
=> IDF๊ฐ ์์์ผ ์ข์(?) ํฌ๊ทํ ๋จ์ด..์๋ฅผ๋ค์ด ์กฐ์ฌ?๊ฐ ์๋
TFIDF(w,d) = TF(w,d)*IDF(w)
* TF-IDF ์์
์ด๋ฌํ ๋ฐ์ดํฐ์ ์์ TF-IDF๋ฅผ ๊ตฌํด๋ณด๋ฉด!
๊ฐ๊ฐ ํ์ ์ซ์๋ค์ ๋ฑ์ฅํ์ ์ฆ TF๋ฅผ ์๋ฏธํ๋ค.
TF-IDF(w,d) = TF(w,d) * IDF(w)์ด๋ฏ๋ก
IDF(w)๋ฅผ ๊ตฌํด๋ณด๋ฉด
๊ฐ ๋จ์ด๊ฐ ์ด ๋ฌธ์์์ ๋ช๋ฒ ๋ฑ์ฅํ๋์ง์ ๋ํ IDF๊ฐ์ ๊ตฌํ ์ ์๋ค!
์ดํ TF๊ฐ๊ณผ IDF๊ฐ์ ๊ณฑํด์ฃผ๋ฉด
TFIDF(w2,d1) = 2*log(4/1) = 1.2
TFIDF(w3,d1) = 1*log(4/3) = 0.12
TFIDF(w4,d1) = 3*log(4/4) = 0.0
์ด๋ฐ ์์ผ๋ก TFIDF๊ฐ์ ๊ตฌํ ์ ์๊ฒ๋๋ค.
=> ๋ฌธ์ ๋ด์ ๋ฑ์ฅํ๋ ๋จ์ด์ ๊ฐ์๊ฐ ์ด 6๊ฐ์ธ ๊ฒฝ์ฐ, ๋ฌธ์๋ฅผ ํํํ๋ item profile vector๋ 6์ฐจ์ vector๊ฐ ๋๋ค
# User Profile
์ ์ ๊ฐ ๊ณผ๊ฑฐ์ ์ ํธํ๋ ์์ดํ ๋ฆฌ์คํธ(๊ฐ๊ฐ TF-IDF๋ก ๋ฒกํฐํ๋จ)์ ๋ฒกํฐ๋ค์ด ๊ฒฐ๊ตญ User Profile์ด ๋๋ค!
์ ์ ํ๋กํ์ผ ๋ฒกํฐ๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ๋?
๋ค์ ๊ตฌํด์ง TF-IDF๋ฅผ ํ์ฉํด์ ์ ์ ํ๋กํ์ผ๋ฒกํฐ๋ฅผ ๊ณ์ฐํ ์ ์๋๋ฐ
์ ์ ๊ฐ d1, d3๋ฅผ ์ ํธํ๋ค๋ฉด
User vector = (Vd1+Vd3) / 2 ์ด๋ ๊ฒ ๊ณ์ฐํ ์ ์๋ค!
# Cosine Similarity
: ๋ ๋ฒกํฐ์ฌ์ด์ ์ ์ฌ๋๋ฅผ ๊ณ์ฐํ๋๊ฒ, ์ง๊ด์ ์ผ๋ก ๋ ๋ฒกํฐ๊ฐ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ์ด ์ผ๋ง๋ ์ ์ฌํ์ง๋ฅผ ์๋ฏธ
์ ์ด์ ์ ์ ์๊ฒ ์ถ์ฒ์ ํด๋ณด์
User Vector u, Item Vector i์ ๋ํด์
์ฝ์ฌ์ธ ์ ์ฌ๋๊ฐ ํด์๋ก ํด๋น ์์ดํ ์ด ์ ์ ์๊ฒ ๊ด๋ จ์ฑ์ด ๋๋ค๊ณ ํ๋จ.
๋ง์ฝ ์ ์ u๊ฐ i์ ๋ํด ๊ฐ์ง ์ ํธ๋(ํ์ )์ ์ ํํ๊ฒ ์์ธกํ๊ณ ์ถ๋ค๋ฉด ?
User Vector๋ฅผ ๋ฐ๋ก ๊ตฌํ์ง ์๊ณ , ์ ์ ๊ฐ ์ ํธ๋๋ฅผ ํ์ํ ๋ชจ๋ Item Vector๋ฅผ ํ์ฉ.
์ ์ u๊ฐ ์ ํธํ๋ ์์ดํ (I)์ ์์ดํ ๋ฒกํฐ(V), ํ์ ์ r์ด๋ผ๊ณ ํ ๋
์๋ก์ด ์์ดํ I'์ ๋ํด์ ํ์ ์ ์์ธกํ๊ณ ์ถ๋ค๋ฉด
๊ฐ๊ฐ์ ์์ดํ ๊ณผ ์๋ก์ด ์์ดํ ์ธ i' ๊ฐ์ ์ฝ์ฌ์ธ ์ ์ฌ๋๋ฅผ๊ตฌํ ํ
๊ฐ์คํ๊ตฐ์ ๊ตฌํ์ฌ i'์ ํ์ ์ ์ถ๋ก ํ๋ค.
๋น์ฐํ ํน์ ์์ดํ ๊ณผ์ ์ ์ฌ๋๊ฐ ๋๋ค๋ฉด!
ํ์ ์ด ๋ํด์ง ๋ ํน์ ์์ดํ ์ ํ์ ์ด ๋ ํฐ ๊ฐ์ค์น๋ก ๋ํด์ง๊ฒ ์ฃ (?)
* ํ์ ์์ธก ์์
ํน์ ์ ์ ์ ๋ํด์ ์ ํธํ ์ํ๊ฐ 3๊ฐ ์์ ๋,
m1(์ ํธํ๋ ์ํ1) : rm1=3.0, vm1(์์ดํ ๋ฒกํฐ1)=[0.2, 0.4, 1.2, 1.5]
m2(์ ํธํ๋ ์ํ2) : rm2=2.5, vm2(์์ดํ ๋ฒกํฐ2)=[0.4, 0.7, 0.3, 0.5]
m3(์ ํธํ๋ ์ํ3) : rm3=4.0, vm3(์์ดํ ๋ฒกํฐ3)=[0.3, 1.2, 1.0, 1.0]
์์ธกํ๋ ค๋ ์ํ m4์ ์์ดํ ๋ฒกํฐ vm4=[0.4, 1.4, 3.1, 1.0]์ด๋ผ๋ฉด,
์ฐ์ ์ ์ฌ๋๋ฅผ ๊ฐ๊ฐ ์์ดํ ๋ณ๋ก ๊ตฌํด์ค ํ์ ์ด๋ฅผ ๊ฐ์ค์น๋ก ํ์ฉํด ํ์ ์ ๋ํด์ค๋ค
sim(m4, m1) = cos(vm4, vm1) = 0.83
sim(m4, m2) = cos(vm4, vm2) = 0.72
sim(m4, m3) = cos(vm4, vm3) = 0.88
์ด๋ ๊ฒ ์ค๋์ ๊ณ ๊ฐ์ด ์ ํธํ๋ ์์ดํ ์ ์์ดํ ๋ฒกํฐ๋ฅผ ํ์ฉํ์ฌ ํ์ ์ ์์ธกํ๋
์ปจํ ์ธ ๊ธฐ๋ฐ ์ถ์ฒ(CB)๋ฅผ ๋ค๋ค๋ดค๋๋ฐ!
์ฝ๊ฒ ์ดํด๋์ จ๊ธธ ๋ฐ๋ผ๋ฉฐ~!
์ค๋์ ํฌ์คํ ๋>_<
