K means Clustering - kumakuma34/DataAnalysis GitHub Wiki

K-means Clustering (K-ํ‰๊ท  ๊ตฐ์ง‘ํ™”)

์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ์š”

๋ถ„๋ฆฌํ˜• ๊ตฐ์ง‘ํ™” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋น„์ง€๋„ํ•™์Šต ๊ธฐ๋ฒ• ์ค‘ ํ•˜๋‚˜๋กœ์„œ, ๋ฐ์ดํ„ฐ ์…‹์—์„œ ์„œ๋กœ ์œ ์‚ฌํ•œ ๊ด€์ฐฐ์น˜๋“ค์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ๋ถ„๋ฅ˜ํ•˜์—ฌ ๋ช‡๊ฐ€์ง€ ๊ตฐ์ง‘(cluster)์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ

  • ๊ฐ ๊ตฐ์ง‘์€ ํ•˜๋‚˜์˜ ์ค‘์‹ฌ(centroid) ์„ ๊ฐ€์ง
  • ๊ฐœ์ฒด๋Š” ๊ฐ๊ฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ค‘์‹ฌ์— ํ• ๋‹น๋˜๋ฉฐ, ๊ฐ™์€ ์ค‘์‹ฌ์— ํ•ด๋‹น๋œ ๊ฐœ์ฒด๋“ค์ด ๋ชจ์—ฌ ํ•˜๋‚˜์˜ ๊ตฐ์ง‘์„ ์ด๋ฃธ
  • ๊ฐ ๋ฐ์ดํ„ฐ๋“ค์„ ์œ ํด๋ฆฌ๋””์•ˆ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ค‘์‹ฌ์— ํ• ๋‹น, ๊ฐ™์€ ์ค‘์‹ฌ์— ๋ชจ์ธ ๋ฐ์ดํ„ฐ ๊ทธ๋ฃน๋“ค์ด ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ๋จ
  • ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์ „์— ๊ตฐ์ง‘ ์ˆ˜(k)๋ฅผ ์ •ํ•ด์•ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ

ํ•™์Šต ๊ณผ์ •

EM ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘๋™ํ•จ

EM ์•Œ๊ณ ๋ฆฌ์ฆ˜ : Expectation ์Šคํ… + Maximization ์Šคํ…์œผ๋กœ ๋‚˜๋‰จ. ์ด ์Šคํ…๋“ค์„ ์ˆ˜๋ ดํ•  ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต(์ฃผ๋กœ ์–ด๋ ค์šด ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ๋งŽ์ด ์‚ฌ์šฉ๋จ)

  1. Expectation ์Šคํ… : ๋ชจ๋“  ๊ฐœ์ฒด๋ฅผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์›€ ์ค‘์‹ฌ์— ๊ตฐ์ง‘์œผ๋กœ ํ• ๋‹น
  2. Maximization ์Šคํ… : ์ค‘์‹ฌ์„ ๊ตฐ์ง‘ ๊ฒฝ๊ณ„์— ๋งž๊ฒŒ ์—…๋ฐ์ดํŠธ

์ด ๊ณผ์ •๋“ค์„ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š๊ฒŒ ๋˜๊ฑฐ๋‚˜(= ํ•ด๊ฐ€ ์ˆ˜๋ ด) , ์‚ฌ์šฉ์ž๊ฐ€ ์ •ํ•œ ๋ฐ˜๋ณต์ˆ˜๋ฅผ ๋ชจ๋‘ ์ฑ„์šฐ๊ฒŒ ๋˜๋ฉด ํ•™์Šต์ด ๋๋‚จ.

์ˆ˜ํ•™์  ๋กœ์ง

  • N๊ฐœ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ K๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋‚˜๋ˆ„์–ด์•ผ ํ•œ๋‹ค. (K๊ฐ’์€ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด์ฃผ์–ด์•ผ ํ•จ)
  • ์ด๋ฅผ ์œ„ํ•ด ๋ชฉ์ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์ฃผ๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ํ•จ์ˆ˜๋ฅผ **์™œ๊ณก ์ธก์ •ํ•จ์ˆ˜(distortion measure)**ํ•จ์ˆ˜๋ผ๊ณ  ํ•œ๋‹ค.
  • J๊ฐ’์ด ์ตœ์†Œ๊ฐ€ ๋  ๋–„์˜ ๊ฐ’์„ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.
  • ๋ฒกํ„ฐ๊ฐ€ K๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ์— ์†ํ•˜๋Š” ๊ฒฝ์šฐ Uk๋กœ ํ‘œ๊ธฐํ•˜๊ณ , Uk๋Š” k๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ •์ค‘์•™์— ๋†“์ธ ๋ฒกํ„ฐ(๋ฌด๊ฒŒ์ค‘์‹ฌ)์ด๋ผ๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
  • ๋”ฐ๋ผ์„œ ์ฒ˜์Œ์—๋Š” ์ด Uk์˜ ์ž„์˜์˜ ์ดˆ๊ธฐ๊ฐ’์„ ์คŒ์œผ๋กœ์„œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ค‘์‹ฌ์„ ์ž„์˜๋กœ ์žก๋Š”๋‹ค
  • ์ดํ›„ Uk์˜ ๊ฐ’์„ ๊ณ ์ •ํ•œ ์ฑ„๋กœ J๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” rnk์˜ ๊ฐ’์„ ๊ตฌํ•œ๋‹ค
  • ์ด ๋•Œ, rnk๋Š” 0 / 1์ธ๋ฐ xn์ด k๋ฒˆ์งธ ํด๋Ÿฌ์Šคํ„ฐ์— ์†ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ 1 , ์•„๋‹Œ ๊ฒฝ์šฐ 0์ด ๋œ๋‹ค.
  • rnk์˜ ๊ฐ’์ด ๊ตฌํ•ด์ง€๋ฉด ์ƒˆ๋กญ๊ฒŒ ์–ป์–ด์ง„ rnk์˜ ๊ฐ’์„ ๊ณ ์ •ํ•˜๊ณ , ๋‹ค์‹œ uk๋ฅผ ๊ตฌํ•œ๋‹ค.
  • ์ด ๊ณผ์ •์„ ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฑฐ๋‚˜ ๋”์ด์ƒ ํ•™์Šตํ•ด๋„ ๋‹ฌ๋ผ์ง€์ง€ ์•Š์„ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

ํŠน์ง•๊ณผ ๋‹จ์ 

  • ๊ฐ ๊ตฐ์ง‘ ์ค‘์‹ฌ์˜ ์ดˆ๊ธฐ๊ฐ’์„ ๋žœ๋คํ•˜๊ฒŒ ์ •ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ๋ฐ, ์ดˆ๊ธฐ๊ฐ’์˜ ์œ„์น˜์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ
  • ๊ตฐ์ง‘์˜ ํฌ๊ธฐ๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ
  • ๊ตฐ์ง‘์˜ ๋ฐ€๋„๊ฐ€ ๋‹ค๋ฅผ ๊ฒฝ์šฐ์—๋„ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Œ
  • ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๊ฐ€ ํŠน์ดํ•œ ์ผ€์ด์Šค๋„ ๊ตฐ์ง‘์ด ์ž˜ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Œ

์ด ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ๋ฒˆ ๊ตฐ์ง‘ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•ด ๊ฐ€์žฅ ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋“ฑ์žฅํ•˜๋Š” ๊ตฐ์ง‘์— ํ• ๋‹นํ•˜๋Š” majority voting์„ ์“ฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

Reference

https://ratsgo.github.io/machine%20learning/2017/04/19/KC/ https://medium.com/@nsh235482/k-means-clustering-6ab85a2a32ad