๋จธ์‹ ๋Ÿฌ๋‹

๋น„์ง€๋„ํ•™์Šต - ๊ตฐ์ง‘, k-means, ์‹ค๋ฃจ์—ฃ์ ์ˆ˜ ์‚ฌ์ดํ‚ท๋Ÿฐ

์ฃผ์˜ ๐Ÿฑ 2022. 12. 7. 11:31
728x90

์ด๋ฒˆ์—๋Š” ์ง€๋„ํ•™์Šต๊ณผ ๋‹ค๋ฅธ, ์ •๋‹ต ๋ ˆ์ด๋ธ”์ด ์ฃผ์–ด์ง€์ง€์•Š๋Š” ๋น„์ง€๋„ ํ•™์Šต์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

๋น„์ง€๋„ํ•™์Šต์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

1. ๊ตฐ์ง‘(clustering)

๋น„์Šทํ•œ ์ƒ˜ํ”Œ์€ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ๊ตฐ์ง‘์€

๊ณ ๊ฐ๋ถ„๋ฅ˜ -> ์ถ”์ฒœ์‹œ์Šคํ…œ

- ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์‚ฌ์šฉ์ž๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ปจํ…์ธ ๋ฅผ ์ถ”์ฒœํ•˜๋Š” ์ถ”์ฒœ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค

์ค€์ง€๋„ํ•™์Šต

- ๋ ˆ์ด๋ธ”๋œ ์ƒ˜ํ”Œ์ด ์ ๋‹ค๋ฉด ๊ตฐ์ง‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ์— ์žˆ๋Š” ๋ชจ๋“  ์ƒ˜ํ”Œ์— ๋ ˆ์ด๋ธ”๋ง์„ ํ•  ์ˆ˜ ์žˆ์‹ญ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ฒ•์€ ์ด์–ด์ง€๋Š” ์ง€๋„ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ๋ ˆ์ด๋ธ”์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•ด ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. 

์ด๋ฏธ์ง€ ๋ถ„ํ• 

 - ์ƒ‰์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”ฝ์…€์„ ํด๋Ÿฌ์Šคํ„ฐ๋ง์ž…๋‹ˆ๋‹ค. ๊ทธ๋‹ค์Œ ํ”ฝ์…€ ์ƒ‰์„ ํ•ด๋‹น ํดใ„น๋Ÿฌ์Šคํ„ฐ์˜ ํ‰๊ท  ์ƒ‰์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฏธ์ง€์— ์žˆ๋Š” ์ƒ‰์ƒ์˜ ์ข…๋ฅ˜๋ฅผ ํฌ๊ฒŒ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๋ฌผ์ฒด์˜ ์œค๊ณฝ์„ ์žก๊ธฐ ์‰ฌ์›Œ์ ธ ๋ฌผ์ฒด ํƒ์ง€ ๋ฐ ์ถ”์  ์‹œ์Šคํ…œ์—์„œ ์ด๋ฏธ์ง€ ๋ถ„ํ• ์„ ๋งŽ์ด ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. 

์ด ์™ธ์—๋„ ๊ฒ€์ƒ‰ ์—”์ง„ ,๋ฐ์ดํ„ฐ ๋ถ„์„, ์ฐจ์› ์ถ•์†Œ ๊ธฐ๋ฒ• ๋“ฑ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

2. ์ด์ƒ์น˜ ํƒ์ง€

'์ •์ƒ'๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”์ง€ ํ•™์Šตํ•˜๊ณ  ๊ทธ๋‹ค์Œ ๋น„์ •์ƒ ์ƒ˜ํ”Œ์„ ๊ฐ์ง€ํ•˜๋Š”๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ์— ์นœํ™”์„ฑ(affinity)๊ฐ€ ๋‚ฎ์€ ์ƒ˜ํ”Œ์€ ์ด์ƒ์น˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์›น์‚ฌ์ดํŠธ ๋‚ด ํ–‰๋™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์‚ฌ์šฉ์ž์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด, ์ดˆ๋‹น ์›น์„œ๋ฒ„ ์š”์ฒญ์„ ๋น„์ •์ƒ์ ์œผ๋กœ ๋งŽ์ดํ•˜๋Š” ์‚ฌ์šฉ์ž๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ์กฐ๋ถ„์•ผ ํ˜น์€ ๋ถ€์ •๊ฑฐ๋ž˜ ๊ฐ์ง€์—๋„ ๋„๋ฆฌ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ œ์กฐ๋ผ์ธ์—์„œ ๊ฒฐํ•จ์ œํ’ˆ์„ ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜ ์‹œ๊ณ„์—ด์—์„œ ์ƒˆ๋กœ์šด ํŠธ๋ Œ๋“œ๋ฅผ ์ฐพ๋Š”๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ๋ฐ€๋„ ์ถ”์ •

๋ฐ์ดํ„ฐ์…‹ ์ƒ์„ฑ ํ™•๋ฅ  ๊ณผ์ •์˜ ํ™•๋ฅ ๋ฐ€๋„ํ•จ์ˆ˜๋ฅผ ์ถ”์ •ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ถ„์„๊ณผ ์‹œ๊ฐํ™”, ์ด์ƒ์น˜ ํƒ์ง€์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ€๋„๊ฐ€ ๋งค์šฐ ๋‚ฎ์€ ์˜์—ญ์— ๋†“์ธ ์ƒ˜ํ”Œ์ด ์ด์ƒ์น˜์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. 


์ด๋ฒˆ์—๋Š” ๊ตฐ์ง‘์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

๊ตฐ์ง‘์€ ๋น„์Šทํ•œ ์ƒ˜ํ”Œ์„ ํ•œ๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ํ• ๋‹นํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋ถ„๋ฅ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ ์ƒ˜ํ”Œ์€ ํ•œ ๊ทธ๋ฃน์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ถ„๋ฅ˜์™€ ๋‹ฌ๋ฆฌ ๊ตฐ์ง‘์€ ๋น„์ง€๋„ํ•™์Šต์ž…๋‹ˆ๋‹ค. ๋ ˆ์ด๋ธ”๋ง์ด ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋กœ์ง€์Šคํ‹ฑํšŒ๊ท€, svm, random forest์™€ ๊ฐ™์€ ๋ถ„๋ฅ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋งž์ง€๋งŒ, ๋ ˆ์ด๋ธ”์ด ์—†๋Š” ๋ฐ์ดํ„ฐ์…‹์€ ๋ถ„๋ฅ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๊ตฐ์ง‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. 

ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ๋ณดํŽธ์  ์ •์˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ƒํ™ฉ์— ๋•Œ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ centroid(์ค‘์‹ฌ์ )๋ผ ๋ถ„๋ฅด๋Š” ํŠน์ • ํฌ์ธํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๋ชจ์ธ ์ƒ˜ํ”Œ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒ˜ํ”Œ์ด ๋ฐ€์ง‘๋˜์–ด ์—ฐ์†๋œ ์˜์—ญ์„ ์ฐพ์Šต๋‹ˆ๋‹ค. ๋˜ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ณ„์ธต์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ข…๋ฅ˜๋Š” ์•„์ฃผ ๋งŽ์Šต๋‹ˆ๋‹ค. 

๊ฐ€์žฅ ์œ ๋ช…ํ•œ k-means๋ฅผ ๋จผ์ € ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

k-means๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ ํ›ˆ๋ จํ•˜๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋“œ์‹œ ์‹คํ–‰ ์ „ ์Šค์ผ€์ผ์„ ๋งž์ถฐ์ฃผ๋„๋กํ•ฉ์‹œ๋‹ค. 

from sklearn.cluster import KMeans
k=5
kmeans=KMeans(n_clusters=k)
y_pred=kmeans.fit_predict(X)

ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜ k๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋’ค์—์„œ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

๊ตฐ์ง‘์—์„œ ๊ฐ ์ƒ˜ํ”Œ์˜ ๋ ˆ์ด๋ธ”์€ ํ• ๋‹น๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ธ๋ฑ์Šค(์—ฌ๊ธฐ์„œ๋Š” 0~4)์ž…๋‹ˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ฐพ์€ ์ค‘์‹ฌ์  ๋‹ค์„ฏ๊ฐœ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

kmeans.cluster_centers_

ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฒฐ์ •๊ฒฝ๊ณ„๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด ๋ณด๋กœ๋…ธ์ด ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. transform()๋ฉ”์„œ๋“œ๋Š” ์ƒ˜ํ”Œ๊ณผ ๊ฐ ์„ผํŠธ๋กœ์ด๋“œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. 

kmeans.transform(X_new)

 

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

https://getacherryontop.tistory.com/82


์ตœ์ ์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜ ์ฐพ๊ธฐ

์ตœ์„ ์˜ ํด๋Ÿฌ์Šคํ„ฐ ๊ฐœ์ˆ˜๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ์‹ค๋ฃจ์—ฃ ์ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋ชจ๋“  ์ƒ˜ํ”Œ์— ๋Œ€ํ•œ ์‹ค๋ฃจ์—ฃ ๊ณ„์ˆ˜์˜ ํ‰๊ท ์ž…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ์˜ ์‹ค๋ฃจ์—ฃ ๊ณ„์ˆ˜๋Š” (b-a)/max(a,b)๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. a๋Š” ๋™์ผํ•œ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด๋ถ€์˜ ํ‰๊ท ๊ฑฐ๋ฆฌ์ด๊ณ , b๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํด๋Ÿฌ์Šคํ„ฐ๊นŒ์ง€์˜ ํ‰๊ท  ๊ฑฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ƒ˜ํ”Œ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ž์‹์ด ์†ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋Š” ์ œ์™ธํ•˜๊ณ  b๊ฐ€ ์ตœ์†Œ์ธ ํด๋Ÿฌ์Šคํ„ฐ ์ž…๋‹ˆ๋‹ค. ์‹ค๋ฃจ์—ฃ๊ณ„์ˆ˜๋Š” -1๋ถ€ํ„ฐ +1๊นŒ์ง€, +1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ž์‹ ์˜ ํด๋Ÿฌ์Šคํ„ฐ์— ์ž˜ ์†ํ•ด์žˆ๊ณ  ๋‹ค๋ฅธํด๋Ÿฌ์Šคํ„ฐ์™€๋Š” ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ์žˆ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. 0์— ๊ฐ€๊นŒ์šฐ๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ๊ฒฝ๊ณ„์— ์œ„์น˜ํ•ด์žˆ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ  -1์— ๊ฐ€๊นŒ์šธ์ˆ˜๋ก ์ž˜๋ชป ํ• ๋‹น๋˜์–ด์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. 

์‹ค๋ฃจ์—ฃ ์ ์ˆ˜๋ฅผ ์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

from sklearn.metrics import silhouette_score
silhouette_score(X,kmeans.labels_)

ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ทธ๋ ค๋ณด๋ฉด

4๊ฐ€ ์ข‹์€ ์„ ํƒ์ด์ง€๋งŒ 5๋„ ๊ฝค ์ข‹์Šต๋‹ˆ๋‹ค. 

์‹ค๋ฃจ์—ฃ ๋‹ค์ด์–ด๊ทธ๋žจ์„ ๊ทธ๋ฆฌ๋ฉด,

ํด๋Ÿฌ์Šคํ„ฐ๋งˆ๋‹ค ์นผ ๋ชจ์–‘์˜ ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„์˜ ๋†’์ด๋Š” ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์ƒ˜ํ”Œ์˜ ๊ฐœ์ˆ˜์ด๊ณ , ๋„ˆ๋น„๋Š” ํด๋Ÿฌ์Šคํ„ฐ์— ํฌํ•จ๋œ ์ •๋ ฌ๋œ ์‹ค๋ฃจ์—ฃ๊ณ„์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค = ๋„“์„์ˆ˜๋ก ์ข‹์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง ํŒŒ์„ ์€ ๊ฐ ํด๋Ÿฌ์Šคํ„ฐ๊ฐœ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์‹ค๋ฃจ์—ฃ ์ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋งŽ์€ ์ƒ˜ํ”Œ์ด ํŒŒ์„ ์˜ ์™ผ์ชฝ์—์„œ ๋ฉˆ์ถ”๋ฉด ํด๋Ÿฌ์Šคํ„ฐ ๊ฐ„ ๊ฑฐ๋ฆฌ๊ฐ€ ๋„ˆ๋ฌด ๊ฐ€๊น๋‹ค๋Š” ์˜๋ฏธ๋กœ ๋‚˜์œ ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. 3๊ณผ 6์—์„œ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ 4๋‚˜ 5๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์ƒ˜ํ”Œ์ด ํŒŒ์„ ์„ ๋„˜๊ณ , 1.0์— ๊ทผ์ ‘ํ•ด ์ข‹์€ ํด๋Ÿฌ์Šคํ„ฐ์ž…๋‹ˆ๋‹ค. 4์ผ๋Œ€ ์ธ๋ฑ์Šค1์˜ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์•„์ฃผ ํฐ๋ฐ, 5๋Š” ๋ชจ๋‘๋‹ค ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 5๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. 

 

๋ฐ˜์‘ํ˜•