K means Clustering - kumakuma34/DataAnalysis GitHub Wiki
K-means Clustering (K-ํ๊ท ๊ตฐ์งํ)
์๊ณ ๋ฆฌ์ฆ ๊ฐ์
๋ถ๋ฆฌํ ๊ตฐ์งํ ์๊ณ ๋ฆฌ์ฆ ๋น์ง๋ํ์ต ๊ธฐ๋ฒ ์ค ํ๋๋ก์, ๋ฐ์ดํฐ ์ ์์ ์๋ก ์ ์ฌํ ๊ด์ฐฐ์น๋ค์ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๋ถ๋ฅํ์ฌ ๋ช๊ฐ์ง ๊ตฐ์ง(cluster)์ ์ฐพ์๋ด๋ ๊ฒ
- ๊ฐ ๊ตฐ์ง์ ํ๋์ ์ค์ฌ(centroid) ์ ๊ฐ์ง
- ๊ฐ์ฒด๋ ๊ฐ๊ฐ ๊ฐ์ฅ ๊ฐ๊น์ด ์ค์ฌ์ ํ ๋น๋๋ฉฐ, ๊ฐ์ ์ค์ฌ์ ํด๋น๋ ๊ฐ์ฒด๋ค์ด ๋ชจ์ฌ ํ๋์ ๊ตฐ์ง์ ์ด๋ฃธ
- ๊ฐ ๋ฐ์ดํฐ๋ค์ ์ ํด๋ฆฌ๋์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ฅ ๊ฐ๊น์ด ์ค์ฌ์ ํ ๋น, ๊ฐ์ ์ค์ฌ์ ๋ชจ์ธ ๋ฐ์ดํฐ ๊ทธ๋ฃน๋ค์ด ํ๋์ ํด๋ฌ์คํฐ๊ฐ ๋จ
- ์ฌ์ฉ์๊ฐ ์ฌ์ ์ ๊ตฐ์ง ์(k)๋ฅผ ์ ํด์ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํํ ์ ์์
ํ์ต ๊ณผ์
EM ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ผ๋ก ์๋ํจ
EM ์๊ณ ๋ฆฌ์ฆ : Expectation ์คํ + Maximization ์คํ ์ผ๋ก ๋๋จ. ์ด ์คํ ๋ค์ ์๋ ดํ ๋ ๊น์ง ๋ฐ๋ณต(์ฃผ๋ก ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ํ ๋ ๋ง์ด ์ฌ์ฉ๋จ)
- Expectation ์คํ : ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ์ฅ ๊ฐ๊น์ ์ค์ฌ์ ๊ตฐ์ง์ผ๋ก ํ ๋น
- 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