๋จธ์‹ ๋Ÿฌ๋‹

๋จธ์‹ ๋Ÿฌ๋‹ ๋ถ„๋ฅ˜ ์„ฑ๋Šฅ ์ธก์ •

์ฃผ์˜ ๐Ÿฑ 2022. 12. 6. 00:07
728x90
๋ฐ˜์‘ํ˜•

๋จธ์‹ ๋Ÿฌ๋‹์—์„œ์˜ ํ•™์Šต์˜ ์ข…๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 3๊ฐ€์ง€์ด๊ณ , ๊ฐ๊ฐ ํ•ด๋‹นํ•˜๋Š” ์ž‘์—…์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ง€๋„ ํ•™์Šต ์ค‘์—์„œ ๋ถ„๋ฅ˜ ์ž‘์—…๊ณผ ๋ชจ๋ธ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ ์ธก์ •์— ๋Œ€ํ•ด ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์ดํ‚ท๋Ÿฐ์˜ ๋‹ค์–‘ํ•œ ๋ถ„๋ฅ˜๋ชจ๋ธ๋กœ ํ•™์Šต์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ„๋ฅ˜๋Š” ํšŒ๊ท€๋ณด๋‹ค ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ๋Šฅ ์ง€ํ‘œ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. 

 

1. ๊ต์ฐจ๊ฒ€์ฆ์„ ํ™œ์šฉํ•œ ์ •ํ™•๋„ ์ธก์ •

์‚ฌ์ดํ‚ท๋Ÿฐ์˜ cross_val_score()๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

ํด๋“œ๊ฐ€ 3๊ฐœ์ธ k-๊ฒน ๊ต์ฐจ ๊ฒ€์ฆ์„ ์‚ฌ์šฉํ•ด ๋ชจ๋ธ์„ ํ‰๊ฐ€ํ•˜๋Š” ์˜ˆ์‹œ

from sklearn.model_selection import cross_val_score
cross_val_score(ํ›ˆ๋ จํ•œ๋ชจ๋ธ,X_train,y_train, cv=3,scoring="accuracy")

๊ทธ๋Ÿฌ๋‚˜ ์ •ํ™•๋„๋Š” ๋ถ„๋ฅ˜๊ธฐ ์„ฑ๋Šฅ ์ธก์ •์ง€ํ‘œ๋กœ๋Š” ์„ ํ˜ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ถˆ๊ท ํ˜•ํ•œ ๋ฐ์ดํ„ฐ์…‹์ผ์ˆ˜๋ก ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. 

 

2. ์˜ค์ฐจํ–‰๋ ฌ

๋” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์˜ค์ฐจํ–‰๋ ฌconfusion matrix๋ฅผ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. 

์˜ค์ฐจ ํ–‰๋ ฌ์„ ๋งŒ๋“ค๋ ค๋ฉด ์‹ค์ œ ํƒ€๊นƒ๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์ธก๊ฐ’์„ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์„ธํŠธ๋กœ ์˜ˆ์ธก๊ฐ’์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  cross_val_predict()ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

from sklean.model_selection import cross_val_predict
y_train_pred = cross_val_predict(ํ›ˆ๋ จํ•œ ๋ชจ๋ธ,X_train, y_train, cv=3)

cross_val_predict()ํ•จ์ˆ˜๋Š” ๊ต์ฐจ๊ฒ€์ฆ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ ํ‰๊ฐ€ ์ ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฐ ํ…Œ์ŠคํŠธ ํด๋“œ์—์„œ ์–ป์€ ์˜ˆ์ธก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰ ํ›ˆ๋ จ์…‹์˜ ๋ชจ๋“  ์ƒ˜ํ”Œ์— ๋Œ€ํ•ด ๊นจ๊ฟ‹ํ•œ(ํ›ˆ๋ จํ•˜๋Š”๋™์•ˆ ๋ณด์ง€ ๋ชปํ•œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์˜ˆ์ธก)์˜ˆ์ธก์„ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

์ด์ œ confusion_matrix()ํ•จ์ˆ˜๋กœ ์˜ค์ฐจํ–‰๋ ฌ์„ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 

from sklearn.metrics import confusion_matrix
confusion_matrix(y_train,y_train_pred)

array[[55555,1111],

           [222.444]]

์˜ค์ฐจํ–‰๋ ฌ์˜ ํ–‰์€ ์‹ค์ œ ํด๋ž˜์Šค, ์—ด์€ ์˜ˆ์ธกํ•œ ํด๋ž˜์Šค๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. 55555๊ฐœ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ง„์งœ ์Œ์„ฑ์œผ๋กœ ๋ถ„๋ฅ˜ํ–ˆ๊ณ , ๋‚˜๋จธ์ง€ 1111๊ฐœ๋Š” ์Œ์„ฑ์ธ๋ฐ ์–‘์„ฑ์ด๋ผ๊ณ  ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘๋ฒˆ์งธ ํ–‰์€ ์–‘์„ฑ ํด๋ž˜์Šค์— ๋Œ€ํ•ด, 222๊ฐœ๋Š” ์–‘์„ฑ์ธ๋ฐ ์Œ์„ฑ์œผ๋กœ ์ž˜๋ชป๋ถ„๋ฅ˜ํ–ˆ๊ณ , ๋‚˜๋จธ์ง€ 444๊ฐœ๋งŒ ์ •ํ™•ํžˆ ์•ผใ…‘ใ…‡์„ฑ์ธ๋ฐ ์–‘์„ฑ์œผ๋กœ ๋ถ„๋ฅ˜ํ–ˆ์Šต๋‹ˆ๋‹ค. ์™„๋ฒฝํ•œ ๋ถ„๋ฅ˜๊ธฐ๋ผ๋ฉด ๋Œ€๊ฐ์„ ์ด 0, 0์ด๋ฉ๋‹ˆ๋‹ค(์˜ค๋ฅธ์ชฝ์œ„์—์„œ ์™ผ์ชฝ์•„๋ž˜๋กœ์˜ ๋Œ€๊ฐ์„ )

 

2.1 ์ •๋ฐ€๋„์™€ ์žฌํ˜„์œจ์ด ๋ชจ๋‘ ๋†’์•„์•ผ ์ข‹๋‹ค!

์˜ค์ฐจํ–‰๋ ฌ๋ณด๋‹ค๋Š” ๋” ์š”์•ฝ๋œ ์ง€ํ‘œ๊ฐ€ ํ•„์š”ํ•  ๊ฒฝ์šฐ์—๋Š” ์–‘์„ฑ์˜ˆ์ธก์˜ ์ •ํ™•๋„ = ์ •๋ฐ€๋„, ์žฌํ˜„์œจ(๋ฏผ๊ฐ๋„)๋ฅผ ๋ด…๋‹ˆ๋‹ค. 

 

 

์‚ฌ์ดํ‚ท๋Ÿฐ์€ ์ด๋Ÿฌํ•œ ์ง€ํ‘œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

from sklearn.metrics import precision_score, recall_score
precision_score(y_train,t_train_pred)
recall_score(y_train,t_train_pred)

 

2.2 ์ •๋ฐ€๋„์™€ ์žฌํ˜„์œจ์„ ํ•˜๋‚˜์˜ ์ง€ํ‘œ๋กœ = F1 Score

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

๋‘๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ์–ป์„ ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ •๋ฐ€๋„๊ฐ€ ์ฆ๊ฐ€ํ•˜๋ฉด ์žฌํ˜„์œจ์ด ์ค„์–ด๋“ญ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ •๋ฐ€๋„/์žฌํ˜„์œจ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 

์ข‹์€ ์ •๋ฐ€๋„/์žฌํ˜„์œจ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„ ์„ ํƒํ•˜๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์€ ์žฌํ˜„์œจ์— ๋Œ€ํ•œ ์ •๋ฐ€๋„ ๊ณก์„ ์„ ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์žฌํ˜„์œจ์ด 70%๊ทผ์ฒ˜์—์„œ ๊ธ‰๊ฐํ•œ๋‹ค๊ณ ํ• ๊นจ ํ•˜๊ฐ•์ ์ง์ „์„ ์ข‹์€ ์ •๋ฐ€๋„/์žฌํ˜„์œจ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„๋กœ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์žฌํ˜„์œจ์ด ๋„ˆ๋ฌด ๋‚ฎ๋‹ค๋ฉด ๋†’์€ ์ •๋ฐ€๋„์˜ ๋ถ„๋ฅ˜๊ธฐ๋Š” ์ „ํ˜€ ์œ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

3.ROC๊ณก์„ 

์ด์ง„ ๋ถ„๋ฅ˜์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ฑฐ์ง“์–‘์„ฑ(FP)๋น„์œจ์— ๋Œ€ํ•œ TPR(์žฌํ˜„์œจ)์˜ ๊ณก์„ ์ž…๋‹ˆ๋‹ค. ๊ฑฐ์ง“์–‘์„ฑ๋น„์œจ์€ ์Œ์„ ์ธ๋ฐ ์–‘์„ฑ์œผ๋กœ ์ž˜๋ชป ๋ถ„๋ฅ˜๋œ ์ƒ˜ํ”Œ์˜ ๋น„์œจ์ž…๋‹ˆ๋‹ค. ์ด๋Š” 1์—์„œ TNR์„(ํŠน์ด๋„)๋ฅผ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ฆ‰, ROC๊ณก์„ ์€ ์žฌํ˜„์œจ(๋ฏผ๊ฐ๋„)์— ๋Œ€ํ•œ 1-ํŠน์ด๋„ ๊ทธ๋ž˜ํ”„์ž…๋‹ˆ๋‹ค. 

 

๋ฐ˜์‘ํ˜•