๐Ÿ ๋จธ์‹ ๋Ÿฌ๋‹ | ๋”ฅ๋Ÿฌ๋‹/์ถ”์ฒœ์‹œ์Šคํ…œ

[K-Data x ๋Ÿฌ๋‹์Šคํ‘ผ์ฆˆ] 2-1. ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ(CB), TF-IDF

xod22 2022. 1. 14. 23:57
728x90

# ์ปจํ…์ธ  ๊ธฐ๋ฐ˜ ์ถ”์ฒœ?

: CB(Content-based Recommendation)

 

์œ ์ € A๋ผ๋Š” ์‚ฌ๋žŒ์ด ๊ณผ๊ฑฐ์— ์„ ํ˜ธํ•œ ์•„์ดํ…œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ๋น„์Šทํ•œ ์•„์ดํ…œ์„ ์œ ์ € A์—๊ฒŒ ์ถ”์ฒœํ•œ๋‹ค.

 

=> ์•„์ดํ…œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ์˜ ์˜ˆ)

- ์˜ํ™” : ๋ฐฐ์šฐ, ๊ฐ๋…, ์˜ํ™”์žฅ๋ฅด

- ์Œ์•… : ์•„ํ‹ฐ์ŠคํŠธ, ์žฅ๋ฅด, ๋ฆฌ๋“ฌ, ๋ฌด๋“œ

- ๋ธ”๋กœ๊ทธ / ๋‰ด์Šค : ๋น„์Šทํ•œ ์ฃผ์ œ๋‚˜ ๋‚ด์šฉ์„ ๊ฐ€์ง„ ํ…์ŠคํŠธ(๋ฌธ์žฅ, ๋‹จ์–ด)

- ์‚ฌ๋žŒ : ๊ณตํ†ต์˜ ์นœ๊ตฌ๋ฅผ ๋งŽ์ด ๊ฐ€์ง„ ๋‹ค๋ฅธ ์‚ฌ๋žŒ

 

์œ ์ €๊ฐ€ ์„ ํ˜ธ(Like)ํ•˜๋Š” ์•„์ดํ…œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ด๋‹น ์•„์ดํ…œ๊ณผ ์œ ์‚ฌํ•œ ์•„์ดํ…œ์„ ์ถ”์ฒœ

# 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๊ฐ’์˜ ๋ณ€ํ™”๊ฐ€ ํฌ๊ธฐ ๋•Œ๋ฌธ์— smoothing์„ ์œ„ํ•ด ๋กœ๊ทธํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

=> IDF๊ฐ€ ์ž‘์•„์•ผ ์ข‹์Œ(?) ํฌ๊ท€ํ•œ ๋‹จ์–ด..์˜ˆ๋ฅผ๋“ค์–ด ์กฐ์‚ฌ?๊ฐ€ ์•„๋‹˜

 

TFIDF(w,d) = TF(w,d)*IDF(w)

 

* TF-IDF ์˜ˆ์‹œ

์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ์…‹์—์„œ TF-IDF๋ฅผ ๊ตฌํ•ด๋ณด๋ฉด!

d1~d4 : ๋ฌธ์„œ / w1-w6 : ๋‹จ์–ด

๊ฐ๊ฐ ํ‘œ์˜ ์ˆซ์ž๋“ค์€ ๋“ฑ์žฅํšŸ์ˆ˜ ์ฆ‰ 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

: ๋‘ ๋ฒกํ„ฐ์‚ฌ์ด์˜ ์œ ์‚ฌ๋„๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๊ฒƒ, ์ง๊ด€์ ์œผ๋กœ ๋‘ ๋ฒกํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฐฉํ–ฅ์ด ์–ผ๋งˆ๋‚˜ ์œ ์‚ฌํ•œ์ง€๋ฅผ ์˜๋ฏธ

 

๋‘ ๋ฒกํ„ฐ์˜ ๋ฐฉํ–ฅ์ด ๋น„์Šทํ• ์ˆ˜๋ก 1์— ๊ฐ€๊นŒ์›€ / ๋ฐฉํ–ฅ์ด ์ •๋ฐ˜๋Œ€์ธ ๊ฒฝ์šฐ -1์— ๊ฐ€๊นŒ์›€


์ž ์ด์ œ ์œ ์ €์—๊ฒŒ ์ถ”์ฒœ์„ ํ•ด๋ณด์ž

 

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

3.2๋Š” ์˜ํ™” m4์˜ ์˜ˆ์ธก๋œ ํ‰์ 


์ด๋ ‡๊ฒŒ ์˜ค๋Š˜์€ ๊ณ ๊ฐ์ด ์„ ํ˜ธํ•˜๋Š” ์•„์ดํ…œ์˜ ์•„์ดํ…œ๋ฒกํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ‰์ ์„ ์˜ˆ์ธกํ•˜๋Š”

์ปจํ…์ธ ๊ธฐ๋ฐ˜ ์ถ”์ฒœ(CB)๋ฅผ ๋‹ค๋ค„๋ดค๋Š”๋ฐ!

์‰ฝ๊ฒŒ ์ดํ•ด๋˜์…จ๊ธธ ๋ฐ”๋ผ๋ฉฐ~!

 

์˜ค๋Š˜์˜ ํฌ์ŠคํŒ… ๋—>_<

 

 

728x90