IT ์•Œ์•„๊ฐ€๊ธฐ

[์ธ๊ณต์ง€๋Šฅ ์•Œ์•„๊ฐ€๊ธฐ] ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ KNN ํšŒ๊ท€ - ํšŒ๊ท€์˜ ์ •์˜์™€ ์—ญ์‚ฌ, SciKitLearn์œผ๋กœ KNN ํšŒ๊ท€ํ•˜๋Š”๋ฒ•

์žก์‹๋ƒฅ์ด 2025. 2. 17. 16:51

์ €๋ฒˆ์—๋Š” ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ์ดˆ์ ์ธ ํ๋ฆ„์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ, ํŠนํžˆ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ์šด KNN ๋ถ„๋ฅ˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ค‘์‹ฌ์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ์ด๋ฒˆ์—๋Š” KNN ํšŒ๊ท€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด์•˜๋‹ค.


ํšŒ๊ท€ Regression

์ง€๋„ํ•™์Šต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ํฌ๊ฒŒ ๋ถ„๋ฅ˜์™€ ํšŒ๊ท€๋กœ ๋‚˜๋‰œ๋‹ค.

 

์•ž์—์„œ ๋‹ค๋ฃฌ ๋ถ„๋ฅ˜๋Š” ์ƒ˜ํ”Œ์„ ๋ช‡ ๊ฐœ์˜ ํด๋ž˜์Šค ์ค‘ ํ•˜๋‚˜๋กœ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํŠน์ง•๋“ค์„ ์ฃผ๊ณ  ์ด ๊ฒƒ์ด ๊ณ ์–‘์ด์ธ์ง€ ๊ฐœ์ธ์ง€ ๋ถ„๋ฅ˜ํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํšŒ๊ท€๋Š” ์ž„์˜์˜ ์–ด๋–ค ์ˆซ์ž๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฉด์ ๊ณผ ๋ฐฉ ๊ฐœ์ˆ˜ ๋“ฑ์˜ ํŠน์ง•์„ ์ฃผ๋ฉด ์ด ์ง‘์˜ ๊ฐ€๊ฒฉ์„ ์˜ˆ์ธกํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•œ๋‹ค. 

 

ํšŒ๊ท€๋ผ๋Š” ๋ง์€ 'ํ†ต๊ณ„'์— ์กฐ๊ธˆ์ด๋ผ๋„ ๋‹ค๊ฐ€๊ฐ€๋ฉด ๋ฐ˜๋“œ์‹œ ํ•œ๋ฒˆ์€ ๊ฑด๋“œ๋ฆฌ๋Š” ๋ง์ธ ๋“ฏํ•˜์—ฌ ์ •๋ง ๋งŽ์ด ๋“ค์–ด๋Š” ๋ณด์•˜์ง€๋งŒ ์ •ํ™•ํžˆ ๋ฌด์Šจ ๊ฐœ๋…์ธ์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ณ  ์ง€๋‚ด์™”์—ˆ๋‹ค. ์ด๋ฒˆ ๊ธฐํšŒ์— ๋‚˜๋ฌด์œ„ํ‚ค ์ฝ๋“ฏ ํ•œ๋ฒˆ ์•Œ์•„๋ณด์•˜๋‹ค. 

 

ํšŒ๊ท€์˜ ์—ญ์‚ฌ 

ํšŒ๊ท€๋Š” ์˜๊ตญ์˜ ํ†ต๊ณ„ํ•™์ž ํ”„๋žœ์‹œ์Šค ๊ณจํ„ด(Galton)์ด 19์„ธ๊ธฐ ํ›„๋ฐ˜์— ์ฒ˜์Œ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋ถ€๋ชจ์˜ ํ‚ค์™€ ์ž๋…€์˜ ํ‚ค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์—ฐ๊ตฌํ•˜๋ฉฐ, ์ž๋…€์˜ ํ‚ค๊ฐ€ ๋ถ€๋ชจ๋ณด๋‹ค ํ‰๊ท ์— ๋” ๊ฐ€๊นŒ์›Œ์ง€๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ•˜์˜€๊ณ , ์ด๋ฅผ"ํ‰๊ท ์œผ๋กœ์˜ ํšŒ๊ท€"๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ์ด ์—ฐ๊ตฌ๋Š” ์ถ”ํ›„์— ํšŒ๊ตฌ ๋ถ„์„(Regression Analysis)๋ผ๋Š” ํ†ต๊ณ„ ๊ธฐ๋ฒ•์œผ๋กœ ๋ฐœ์ „ํ–ˆ๋‹ค. 

 

20์„ธ๊ธฐ ์ดˆ, ๊ณจํ„ด์˜ ์—ฐ๊ตฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์นผ ํ”ผ์–ด์Šจ(Carl Pearson)์ด ์ƒ๊ด€๊ด€๊ณ„(Correlation) ๊ฐœ๋…์„ ์ˆ˜ํ•™์ ์œผ๋กœ ์ •๋ฆฌ๋ฅผ ํ•˜๊ณ , Fisher๋Š” ์ตœ์†Œ์ œ๊ณฑ๋ฒ•(Least Squares Method)๋ฅผ ๋ฐœ์ „์‹œ์ผœ์„œ ํšŒ๊ท€ ๋ชจ๋ธ์„ ๋ณด๋‹ค ์ •๊ตํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. ์ด ์‹œ๊ธฐ๋ถ€ํ„ฐ ํšŒ๊ท€๋ถ„์„์€ ํ†ต๊ณ„ํ•™๊ณผ ๊ฒฝ์ œํ•™์—์„œ ์ค‘์š”ํ•œ ๋„๊ตฌ๋กœ ์ž๋ฆฌ์žก๊ฒŒ ๋˜์—ˆ๋‹ค. *์—ฌ๊ธฐ์„œ Pearson ์ƒ๊ด€๊ณ„์ˆ˜(r)์ธ ๋‘ ๋ณ€์ˆ˜๊ฐ„์˜ ๊ด€๊ณ„์„ฑ ๊ณ„์ˆ˜, LSM๊ณผ ANOVA ๊ธฐ๋ฒ•์ด ๋“ฑ์žฅํ–ˆ๋‹ค. 

 

20์„ธ๊ธฐ ์ค‘๋ฐ˜๋ถ€ํ„ฐ ํ›„๋ฐ˜๊นŒ์ง€๋Š” ํšŒ๊ท€ ๋ชจ๋ธ์ด ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ํ™•์žฅ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋ธ๋กœ ์„ ํ˜•ํšŒ๊ท€(Linear Regression)์ด ์ž๋ฆฌ ์žก์•˜๊ณ , ํ™•์žฅ๋œ ๋‹คํ•ญ ํšŒ๊ท€(Polynomial Regression), ๋กœ์ง€์Šคํ‹ฑ ํšŒ๊ท€(Logistic Regression)์ด ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ๋•Œ๋ถ€ํ„ฐ๋Š” ๊ฒฝ์ œํ•™๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‹ฌ๋ฆฌํ•™, ์ƒ๋ฌผํ•™, ์‚ฌํšŒ๊ณผํ•™ ๋ถ„์•ผ์—์„œ ์˜ˆ์ธก๋ชจ๋ธ๋กœ ํ™œ์šฉ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. 

 

21์„ธ๊ธฐ์—๋Š” ์ปดํ“จํ„ฐ์˜ ๋ฐœ์ „์œผ๋กœ ํšŒ๊ท€ ๋ชจ๋ธ์„ ๋” ๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด์— ๋‹ค์ค‘ํšŒ๊ท€(Multiple Regression), ๋ฆฟ์ง€ ํšŒ๊ท€(Ridge Regression), ๋ผ์˜ํšŒ๊ท€(Lasso Regression), ์„œํฌํŠธ ๋ฒกํ„ฐ ํšŒ๊ท€(SVR) ๋“ฑ์ด ๋“ฑ์žฅํ•˜์˜€๋‹ค๊ณ  ํ•œ๋‹ค. ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํšŒ๊ท€๋Š” ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๋”ฅ๋Ÿฌ๋‹์˜ ํ•ต์‹ฌ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก์•„, ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ ํšŒ๊ท€, ์‹ ๊ฒฝ๋ง ํšŒ๊ท€(๋”ฅ๋Ÿฌ๋‹), ๊ฐ•ํ™”ํ•™์Šต ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ฐ˜ ์˜ˆ์ธก ๋ชจ๋ธ์˜ ๊ธฐ๋ฐ˜์ด ๋˜๊ณ  ์žˆ๋‹ค. 

 

์ฆ‰ ํ˜„์žฌ์˜ 'ํšŒ๊ท€'๋Š” ์ž…๋ ฅ๊ฐ’๊ณผ ์ถœ๋ ฅ๊ฐ’์˜ ๊ด€๊ณ„, ๋‹ค์‹œ๋งํ•ด ๋ฐ์ดํ„ฐ์˜ ํŒจํ„ด์„ ํ•™์Šตํ•˜์—ฌ, ์—ฐ์†์ ์ธ ์ˆซ์ž ๊ฐ’์„ ์˜ˆ์ธกํ•˜๋Š” ํ†ต๊ณ„ํ•™์  / ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.


KNN๊ณผ ํšŒ๊ท€

ํšŒ๊ท€๊ฐ€ ๊ฒฐ๊ตญ ๋ฐ์ดํ„ฐ์˜ ํŒจํ„ด์„ ํ•™์Šตํ•˜์—ฌ, ์ˆซ์ž ๊ฐ’์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค๋ฉด, KNN ๊ธฐ๋ฒ•์—์„œ๋Š” ์–ด๋–ป๊ฒŒ ํšŒ๊ท€๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ? ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณผ์ •์„ ์ƒ๊ฐํ•ด๋ณด์ž.

(1) ์˜ˆ์ธกํ•˜๋ ค๋Š” ์ƒˆ๋กœ์šด ์ƒ˜ํ”Œ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ƒ˜ํ”Œ k๊ฐœ๋ฅผ ์„ ํƒํ•œ๋‹ค

(2) ์ƒ˜ํ”Œ๋“ค์˜ ํƒ€๊นƒ ๊ฐ’์„ ํ™•์ธํ•˜์—ฌ, ์ˆ˜์น˜๋“ค์˜ ํ‰๊ท ์„ ๊ตฌํ•œ๋‹ค. 

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„ํŒŒํŠธ์˜ ํฌ๊ธฐ์™€ ๋งค๋งค๊ฐ€ ๋ฐ์ดํ„ฐ๋“ค์„ ํ•™์Šต์‹œํ‚จ KNN ๋ชจ๋ธ์—์„œ 38ํ‰ ์•„ํŒŒํŠธ์˜ ๋งค๋งค๊ฐ€๋ฅผ ๊ตฌํ•˜๊ณ  ์‹ถ์€ ์ƒํ™ฉ์ด๋ผ๋ฉด, 38ํ‰๊ณผ ๊ฐ€๊นŒ์šด ํ•™์Šต๋ฐ์ดํ„ฐ์˜ ์ƒ˜ํ”Œ k๊ฐœ, ์ด๋ฅผํ…Œ๋ฉด 37ํ‰, 37.5ํ‰, 38.3ํ‰์˜ ๋งค๋งค๊ฐ€๋ฅผ ํ™•์ธํ•˜๊ณ  ๊ทธ ๊ฐ’๋“ค์„ ํ‰๊ท ๋‚ธ ๊ฐ’์œผ๋กœ ๋‹ต์„ ๋‚ด๋Š”๊ฒŒ KNN ํšŒ๊ท€์ด๋‹ค.


ScikitLearn๊ณผ KNN Regression

์ง€๊ธˆ๋ถ€ํ„ฐ๋Š” KNN Regression์„ SciKitLearn์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ๋‹ค. ์ด์ „์— ํฌ์ŠคํŒ…ํ•œ SciKitLearn์˜ KNN Classification๊ณผ ๋น„๊ตํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋‹ค. ํ•ด๋‹น ๋‚ด์šฉ์€ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค!

 

[์ธ๊ณต์ง€๋Šฅ ์•Œ์•„๊ฐ€๊ธฐ] ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ KNN (K-์ตœ๊ทผ์ ‘ ์ด์›ƒ, K-Nearest Neighbors) (1) KNN ๋ถ„๋ฅ˜ ๋ชจ๋ธ

์ด๋ฒˆ์—๋Š” ๋จธ์‹ ๋Ÿฌ๋‹์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๊ณผ ๋ฐ์ดํ„ฐ์…‹ ๊ตฌ์ถ• ๊ทธ๋ฆฌ๊ณ  ์ „์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ ๋จธ์‹ ๋Ÿฌ๋‹ ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ธฐ์ดˆ์ ์ธ ํ๋ฆ„์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€๋ฅผ ํ•ด๋ณด์•˜๋‹ค! ํŠนํžˆ ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฌ

nyangwisdom.tistory.com


(1) ๋ฐ์ดํ„ฐ์…‹ ๋งˆ๋ จ

x : ๊ณ ์–‘์ด์˜ ํ‚ค Array => 2์ฐจ์›์œผ๋กœ reshapeํ•ด์•ผํ•จ. 

y : ๊ณ ์–‘์ด์˜ ๋ชธ๋ฌด๊ฒŒ Array

 

2์ฐจ์›์œผ๋กœ Array๋ฅผ ์™œ ๋ฐ”๊ฟ”์•ผํ•˜๋Š”๊ฐ€? ๊ทธ๋ƒฅ ์‚ฌ์ดํ‚ท๋Ÿฐ ํ”„๋ ˆ์ž„์—์„œ ํ›ˆ๋ จ์„ธํŠธ๋Š” 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋„ฃ์–ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค!

*2์ฐจ์›์œผ๋กœ Array๋ฅผ reshapeํ•˜๋Š” ๋ฐฉ๋ฒ• (numpy์˜ ๊ธฐ๋Šฅ)

๋งŒ์•ฝ array = [1, 2, 3, 4] ๋ผ๋Š” ๋ฐฐ์—ด์ด ์žˆ๋‹ค๋ฉด, ์ด array๋Š” ์š”์†Œ๊ฐ€ 4๊ฐœ์ธ 1์ฐจ์› array์ด๋‹ค. 

print(array.shape)๋ฅผ ํ•ด๋ณด๋ฉด (4, )์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์š”์†Œ๊ฐ€ 4๊ฐœ์ด๋ฉฐ 1์ฐจ์›์ด๋ผ๋Š” ๋œป์ด๋‹ค. 

 

์ด array๋ฅผ 2์ฐจ์›์œผ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. 

array.reshape(4,1) ๊ธฐ๋Šฅ์œผ๋กœ, ์ง์ ‘ array.shape๋ฅผ (4, 1) ํ˜•ํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์š”์†Œ๊ฐ€ 4๊ฐœ์ธ 2์ฐจ์› array๋ผ๋Š” ๋œป์œผ๋กœ, [[1], [2], [3], [4]] ์ด๋Ÿฐ์‹์œผ๋กœ ์ƒ๊ฒผ์„ ๊ฒƒ์ด๋‹ค.

ํ˜น์€ array.reshape(-1,1) ์ฒ˜๋Ÿผ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” 2์ฐจ์› ํ˜•ํƒœ๋กœ ๋งŒ๋“ค๊ณ , -1์€ ์•Œ์•„์„œ ์š”์†Œ๋“ค์„ ์ฑ„์šด๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

cf) KNN Classification

X : (๊ณ ์–‘์ด์™€ ๊ฐœ์˜ ํ‚ค, ๊ณ ์–‘์ด์™€ ๊ฐœ์˜ ๋ชธ๋ฌด๊ฒŒ)์˜ 2์ฐจ์› Array 

y : ๊ณ ์–‘์ด์ธ์ง€ ๊ฐœ์ธ์ง€ ๋ถ„๋ฅ˜

 

(2) ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์…‹์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ 

from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(x, y, random_state = N)

* ์—ฌ๊ธฐ์„œ x๋Š” 2์ฐจ์› array๋กœ reshape๋œ ๊ณ ์–‘์ด ํ‚ค ๋ฐ์ดํ„ฐ

 

cf) KNN Classification

from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target = train_test_split(X, y, stratify=y, random_state = N)

*2์ฐจ์›์˜ ํŠน์„ฑ(feature) array๋ฅผ X๋กœ ๋„ฃ๊ณ , classification์„ y๋กœ ๋„ฃ๋Š”๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  y๋กœ stratify๋ฅผ ํ•œ๋‹ค๋Š” ์ ์—์„œ ์ฐจ์ด๋ฅผ ๋ณด์ธ๋‹ค. 

 

(3) KNeighborsRegressor ํ›ˆ๋ จ, scoring

from sklearn.neighbors import KNeighborsRegressor
knr = KNeighborsRegressor()

# KNN ํ›ˆ๋ จ์‹œํ‚ค๊ธฐ
knr.fit(train_input, train_target)

# ์ด ๋ชจ๋ธ์˜ Score ํ™•์ธํ•˜๊ธฐ : ๊ฒฐ์ •๊ณ„์ˆ˜
print(knr.score(test_input, test_target))

 

KNeighborsClassifier์™€ ๋™์ผํ•˜๊ฒŒ fit(X, y)์™€ score() ๋ฉ”์„œ๋“œ๋กœ ๋ชจ๋ธ์„ ํ›ˆ๋ จ์‹œํ‚ค๊ณ  ์ •ํ™•๋„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์ ๋„ ์žˆ๋‹ค! Classifier์—์„œ score๋Š” Accuracy(์ •ํ™•๋„)๋กœ ์–ผ๋งˆ๋‚˜ ์ •๋‹ต์„ ๋งž์ท„๋Š”์ง€์˜ ์—ฌ๋ถ€์˜€๋‹ค. ๋ฐ˜๋ฉด Regressor๋Š” ์—ฐ์†์ ์ธ ์ˆซ์ž์—์„œ ํ•œ๊ฐ€์ง€ ์ž„์˜์˜ ๊ฐ’์„ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์— ์ •ํ™•ํ•œ ์ •๋‹ต์„ ๋งž์ถ”๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Regressor๋Š” "๊ฒฐ์ •๊ณ„์ˆ˜(coefficient of determination, R² )"๋ฅผ ํ†ตํ•ด์„œ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•œ๋‹ค. 

 

๊ทธ๋Ÿฌ๋‚˜ ๊ฒฐ์ •๊ณ„์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•œ๊ณ„๋„ ๋ถ„๋ช… ์กด์žฌํ•œ๋‹ค. (ํ›„์ˆ ํ•˜์˜€๋‹ค) ๋”ฐ๋ผ์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์ธ Mean Absolute Error(MAE)๋กœ ํšŒ๊ท€ ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์„ ์ถ”์ •ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” ํƒ€๊นƒ๊ณผ ์˜ˆ์ธก์˜ ์ ˆ๋Œ“๊ฐ’ ์˜ค์ฐจ๋ฅผ ํ‰๊ท ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์œผ๋กœ ๋ณด๋‹ค ์ง๊ด€์ ์œผ๋กœ ์„ฑ๋Šฅ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

from sklearn.metrics import mean_absolute_error

# ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ ์˜ˆ์ธก
test_prediction = knr.predict(test_input)

# ํ…Œ์ŠคํŠธ ์„ธํŠธ์— ๋Œ€ํ•œ MAE
mae = mean_absolute_error(test_target, test_prediction)

ํšŒ๊ท€๋ชจ๋ธ์˜ ์„ฑ๋Šฅ ํ‰๊ฐ€ ๋ฐฉ์‹ : ๊ฒฐ์ •๊ณ„์ˆ˜, MAE

๊ฒฐ์ •๊ณ„์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€ ( R²)

yi : ์‹ค์ œ๊ฐ’ , y^โ€‹iโ€‹ : ์˜ˆ์ธก๊ฐ’, yห‰โ€‹ : ์‹ค์ œ๊ฐ’์˜ ํ‰๊ท 

 

๊ฒฐ์ •๊ณ„์ˆ˜๋ž€ ํšŒ๊ท€ ๋ชจ๋ธ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋‚˜ ์ž˜ ์„ค๋ช…ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ง€ํ‘œ๋กœ, 1์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ์˜ˆ์ธก์ด ๋” ์ •ํ™•ํ•œ ๋ชจ๋ธ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ถ„์ž๋Š” ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ๊ฐ’์˜ ์ฐจ์ด๋กœ ์˜ค์ฐจ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ๋ถ„๋ชจ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ˆœํžˆ ํ‰๊ท ๊ฐ’์œผ๋กœ๋งŒ ์˜ˆ์ธกํ–ˆ์„ ๋•Œ ์˜ค์ฐจ๋Š” ์–ผ๋งˆ๋‚˜ ๋ ์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด์–ด, ์›๋ž˜ ๋ฐ์ดํ„ฐ ์ž์ฒด์˜ ๋ณ€๋™์„ฑ์„ ๋‹ด๊ณ  ์žˆ๋‹ค.

 

์ฒ˜์Œ์—๋Š” ๋ถ„์ž๊ฐ€ ๋“ค์–ด๊ฐ„ ์ด์œ ๋ฅผ ์•Œ๊ฒ ๋Š”๋ฐ, ๋ถ„๋ชจ๋Š” ์™œ ๋“ค์–ด๊ฐ„์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๊ฐ”์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋” ์•Œ์•„๋ดค๋Š”๋ฐ ๋งŒ์•ฝ์— ๋ฐ์ดํ„ฐ ์ž์ฒด์˜ ๋ณ€๋™์„ฑ์ด ํฌ๋‹ค๋ฉด ๋ชจ๋ธ์ด ์กฐ๊ธˆ ๋ชป ๋งž์ถฐ๋„ ๊ดœ์ฐฎ์„ ์ˆ˜ ์žˆ์œผ๋‚˜, ๋ฐ์ดํ„ฐ ์ž์ฒด์˜ ๋ณ€๋™์ด ์ ๋‹ค๋ฉด ๋” ์ •๊ตํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋“ค์–ด๊ฐ„ ๊ฒƒ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

 

1์— ๊ฐ€๊นŒ์šฐ๋ ค๋ฉด ์ € ๋ถ„์ˆ˜์—์„œ ๋ถ„์ž๊ฐ€ ๊ฑฐ์˜ 0์— ์ˆ˜๋ ดํ•ด์•ผํ•œ๋‹ค. ์ฆ‰, ์‹ค์ œ๊ฐ’๊ณผ ์˜ˆ์ธก๊ฐ’์ด ๊ฑฐ์˜ ์ผ์น˜ํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๊ณ  ์ด๋Š” ๋ชจ๋ธ์˜ ์„ฑ๋Šฅ์ด ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ๋ฐ˜์˜ํ•œ๋‹ค.

๋ฐ˜๋ฉด 0์— ๊ฐ€๊นŒ์šฐ๋ ค๋ฉด ๋ถ„์ž์™€ ๋ถ„๋ชจ๊ฐ€ ๋น„์Šทํ•ด์•ผํ•œ๋‹ค. ์ด๋Š” ๋ชจ๋ธ์˜ ์˜ˆ์ธก๊ฐ’์ด ํƒ€๊นƒ์˜ ํ‰๊ท ์ •๋„๋ฅผ ์˜ˆ์ธกํ•˜๋Š” ์ˆ˜์ค€์ผ ๊ฒƒ์ด๊ณ , ์˜ˆ์ธก์˜ ์˜๋ฏธ๊ฐ€ ๋ณ„๋กœ ์—†๋‹ค. 

ํ˜น์€ ๋ถ„์ž๊ฐ€ ๋ถ„๋ชจ๋ณด๋‹ค ํฐ ๊ฒฝ์šฐ์—๋Š” ์Œ์ˆ˜๊ฐ’์ด ๋‚˜์˜ฌ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์˜คํžˆ๋ ค ํ‰๊ท ๊ฐ’๋ณด๋‹ค ๋ชปํ•œ ๋ชจ๋ธ๋กœ ์˜ˆ์ธก์ด ์™„์ „ ์—‰ํ„ฐ๋ฆฌ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

  • ์™„๋ฒฝํ•œ ํšŒ๊ท€ ๋ชจ๋ธ (๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์ •ํ™•ํžˆ ์˜ˆ์ธก๋จ) 
  • R² =0 → ๋ชจ๋ธ์ด ์•„๋ฌด๋Ÿฐ ์„ค๋ช…๋ ฅ์„ ๊ฐ€์ง€์ง€ ๋ชปํ•จ (๋‹จ์ˆœ ํ‰๊ท ์œผ๋กœ ์˜ˆ์ธกํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ)
  • R² ์ด ์Œ์ˆ˜์ด๋ฉด → ๋ชจ๋ธ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ „ํ˜€ ์„ค๋ช…ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์žˆ์Œ (์˜ˆ์ธก์ด ๋ฌด์˜๋ฏธํ•จ)
  • R²์ด ๋ณดํ†ต 0.8-0.99๋ฉด ๋งค์šฐ ์ข‹์€ ์„ฑ๋Šฅ / 0.5-0.79๋ฉด ๋ณดํ†ต ์ˆ˜์ค€ / 0.2-0.49๋ฉด ๋‚ฎ์€ ์ˆ˜์ค€ / 0-0.19๋ฉด ๊ฑฐ์˜ ์“ธ๋ชจ์—†๋Š” ์ˆ˜์ค€์ด๋ผ๊ณ  ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ๊ฒฐ์ •๊ณ„์ˆ˜๋Š” ๋น„์„ ํ˜• ๊ด€๊ณ„์—์„œ๋Š” ์ •ํ™•๋„๊ฐ€ ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์‹œ๋งํ•ด ๊ณก์„  ํ˜•ํƒœ ๋“ฑ์—์„œ๋Š” R² ๊ฐ’์ด ๋‚ฎ๋”๋ผ๋„ ์ข‹์€ ๋ชจ๋ธ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. ๋˜ํ•œ ๋…๋ฆฝ๋ณ€์ˆ˜(Feature)๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก R² ๊ฐ’์ด ์ž๋™์œผ๋กœ ์ฆ๊ฐ€๋˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์–ด์„œ, ๋‹ค์ค‘ํšŒ๊ท€๋ชจ๋ธ์ธ ๊ฒฝ์šฐ์—๋Š” ์กฐ์ •๋œ ๊ฒฐ์ •๊ณ„์ˆ˜(Adjusted R²)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 


MAE Mean Absolute Error๋ž€ ๋ฌด์—‡์ธ๊ฐ€? 

MAE (Mean Absolute Error, ํ‰๊ท  ์ ˆ๋Œ€ ์˜ค์ฐจ)๋Š” ํšŒ๊ท€ ๋ชจ๋ธ์˜ ์˜ˆ์ธก๊ฐ’๊ณผ ์‹ค์ œ๊ฐ’ ์‚ฌ์ด์˜ ํ‰๊ท ์ ์ธ ์˜ค์ฐจ ํฌ๊ธฐ๋ฅผ ์ธก์ •ํ•˜๋Š” ์ง€ํ‘œ์ด๋‹ค. ์ฆ‰, ์˜ˆ์ธก๊ฐ’์ด ์‹ค์ œ๊ฐ’๊ณผ ์–ผ๋งˆ๋‚˜ ์ฐจ์ด๊ฐ€ ๋‚˜๋Š”์ง€๋ฅผ ํ‰๊ท ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. 

n์€ ์ƒ˜ํ”Œ ๊ณ„์ˆ˜, yi๋Š” ์‹ค์ œ๊ฐ’, y^โ€‹iโ€‹ = ์˜ˆ์ธก๊ฐ’

 

  • MAE ๊ฐ’์ด ์ž‘์„์ˆ˜๋ก → ๋ชจ๋ธ์˜ ์˜ˆ์ธก์ด ์‹ค์ œ๊ฐ’๊ณผ ๋” ๊ฐ€๊นŒ์›Œ์„œ ์„ฑ๋Šฅ์ด ์ข‹์Œ 
  • MAE ๊ฐ’์ด ํด์ˆ˜๋ก → ๋ชจ๋ธ์˜ ์˜ˆ์ธก์ด ์‹ค์ œ๊ฐ’๊ณผ ๋งŽ์ด ์ฐจ์ด๊ฐ€ ๋‚˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ๋‚˜์จ 

 

๋‹จ์œ„๊ฐ€ ์˜ˆ์ธก๊ฐ’๊ณผ ๋™์ผํ•˜์—ฌ ์ง๊ด€์ ์ด๊ณ  ํ•ด์„์ด ์‰ฌ์šฐ๋ฉฐ, Outlier๊ฐ€ ๋งŽ์•„๋„ ์ ˆ๋Œ€๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋œ ๋ฏผ๊ฐํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. 


KNN ํšŒ๊ท€ ๋ชจ๋ธ์˜ ๊ณผ๋Œ€์ ํ•ฉ(Overfitting)๊ณผ ๊ณผ์†Œ์ ํ•ฉ(Underfitting), ๊ทธ๋ฆฌ๊ณ  ํ•ด๊ฒฐ์ฑ…

์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ์–ธ๊ธ‰ํ•œ k๊ฐ’์— ๋”ฐ๋ฅธ ๊ณผ๋Œ€์ ํ•ฉ๊ณผ ๊ณผ์†Œ์ ํ•ฉ ๊ฐ€๋Šฅ์„ฑ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๊ฐ€์ ธ์™€๋ดค๋‹ค!

 

K๊ฐ’์ด ๋„ˆ๋ฌด ์ž‘์œผ๋ฉด  (K=1, 2) : ๋ฐ์ดํ„ฐ์…‹ ๋‚ด ์ด์ƒ์น˜(Outlier)๊ฐ€ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•œ ๋‘๊ฐœ์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๊ฐ’์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ํ•˜๋‚˜ํ•˜๋‚˜์— ๋„ˆ๋ฌด ์˜์กดํ•˜๊ฒŒ ๋˜์–ด ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ๊ณผ์ ํ•ฉ(Overfitting)์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ํ›ˆ๋ จ๋ฐ์ดํ„ฐ์—๋งŒ ์ตœ์ ํ™”๋˜์–ด์„œ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ์—์„œ ํ…Œ์ŠคํŠธํ•˜๋ฉด ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง€๋Š” ํ˜„์ƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด ๊ฐ•๋ฐ•์ ์ด๊ณ  ๊ณผํ•˜๋‹ค! ๊ณผ๋Œ€์ ํ•ฉ 

 

๋ฐ˜๋Œ€๋กœ, K๊ฐ’์ด  ๋„ˆ๋ฌด ํฌ๋ฉด (K=20, 50) : ๋ฐ์ดํ„ฐ๊ฐ€ ํ‰๊ท ํ™”(Averaging)๋˜์–ด์„œ ๊ฐœ๋ณ„ ๋ฐ์ดํ„ฐ์˜ ํŠน์ง•์ด ํฌ์„๋  ์ˆ˜ ์žˆ๋‹ค. ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ๋‹จ์ˆœํ•ด์ ธ์„œ (Underfitting) ์—ญ์‹œ ์ผ๋ฐ˜ํ™”ํ•˜๊ธฐ ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ํ›ˆ๋ จ์„ธํŠธ๋ณด๋‹ค ํ…Œ์ŠคํŠธ ์„ธํŠธ์˜ ์ ์ˆ˜๊ฐ€ ๋†’๊ฑฐ๋‚˜, ๋‘ ์ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ๋‹ค์‹œ๋งํ•ด ๋„ˆ๋ฌด ๋‘ฅ๊ธ€๊ณ  ๋ญ‰๋šฑ๊ทธ๋ ค์ ธ์„œ ๊ธฐ๋Šฅ์„ ์žƒ๋Š”๋‹ค! ๊ณผ์†Œ์ ํ•ฉ


๋งŒ์•ฝ ํ›ˆ๋ จ์„ธํŠธ์˜ score๊ณผ ํ…Œ์ŠคํŠธ์„ธํŠธ์˜ score๋ฅผ ๋น„๊ตํ•˜๋‹ˆ, ๊ณผ์†Œ์ ํ•ฉ์ด ์˜ˆ์ƒ๋˜๋ฉด ์–ด๋–ป๊ฒŒ ํ• ๊นŒ? ์ด๋Ÿฐ ๊ฒฝ์šฐ ๋ชจ๋ธ์ด ๋„ˆ๋ฌด ๋‹จ์ˆœํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. KNN ๋ชจ๋ธ์—์„œ๋Š” ๋‹จ์ˆœํžˆ K๊ฐ’์„ ๋‚ฎ์ถ”๋ฉด๋œ๋‹ค. 

# ๊ธฐ๋ณธ๊ฐ’์ธ k=5์—์„œ 3์œผ๋กœ ๋ณ€๊ฒฝ 
knr.n_neighbors = 3 

 


์ฐธ๊ณ : ํ˜ผ์ž๊ณต๋ถ€ํ•˜๋Š” ๋จธ์‹ ๋Ÿฌ๋‹+๋”ฅ๋Ÿฌ๋‹ (ํ•œ๋น›๋ฏธ๋””์–ด, ๋ฐ•ํ•ด์„ )

 

728x90

'IT ์•Œ์•„๊ฐ€๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ƒ์‚ฐ์„ฑ] ์ธ์ƒ ๋ชฉํ‘œ ์„ค์ •ํ•˜๊ณ  ๋…ธ์…˜์œผ๋กœ ๊ด€๋ฆฌ๊นŒ์ง€! (๋ฌด๋ฃŒ ๋งŒ๋‹ค๋ผํŠธ ํ…œํ”Œ๋ฆฟ ๊ณต์œ ) : ์›ฐ๋‹ˆ์Šค/๋งŒ๋‹ค๋ผํŠธ/๋…ธ์…˜ ๋งŒ๋‹ค๋ผํŠธ ๊ฐค๋Ÿฌ๋ฆฌ ์ƒ์„ฑ ๋ฐฉ๋ฒ•  (2) 2025.02.19
[์ธ๊ณต์ง€๋Šฅ ์•Œ์•„๊ฐ€๊ธฐ] ์„ ํ˜•ํšŒ๊ท€ - ์‚ฌ์ดํ‚ท๋Ÿฐ, ๋‹คํ•ญํšŒ๊ท€  (0) 2025.02.19
[์ธ๊ณต์ง€๋Šฅ ์•Œ์•„๊ฐ€๊ธฐ] ๋จธ์‹ ๋Ÿฌ๋‹ ์•Œ๊ณ ๋ฆฌ์ฆ˜ KNN (K-์ตœ๊ทผ์ ‘ ์ด์›ƒ, K-Nearest Neighbors) (1) KNN ๋ถ„๋ฅ˜ ๋ชจ๋ธ  (0) 2025.02.17
[์ฝ”๋”ฉ ๊ธฐ์ดˆ] ํŒŒ์ด์ฌ - ๋ฆฌ์ŠคํŠธ(list)์™€ ๋ฐฐ์—ด(array) & ๋Œ€ํ‘œ์ ์ธ ๋ฐฐ์—ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, Numpy์— ๋Œ€ํ•ด์„œ!  (0) 2025.02.11
[์ฝ”๋”ฉ ๊ธฐ์ดˆ] ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด - ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ 1ํŽธ. ํด๋ž˜์Šค, ๊ฐ์ฒด, ๋ฉ”์„œ๋“œ, ์†์„ฑ ๋“ฑ์— ๋Œ€ํ•˜์—ฌ  (0) 2025.02.11