๋จธ์‹ ๋Ÿฌ๋‹

์•™์ƒ๋ธ”ํ•™์Šต๊ณผ ๋ฐฐ๊น…

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

์•™์ƒ๋ธ” ํ•™์Šต์€ ๋‹ค์–‘ํ•œ ์˜ˆ์ธก๊ธฐ๋ฅผ ๊ฒฐํ•ฉํ•ด ํ•™์Šตํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์•™์ƒ๋ธ”์˜ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ํ›ˆ๋ จ์…‹์œผ๋กœ๋ถ€ํ„ฐ ๋ฌด์ž‘์œ„๋กœ ๋‹ค๋ฅธ ์„œ๋ธŒ์…‹์„ ๋งŒ๋“ค์–ด ์ผ๋ จ์˜ ๊ฒฐ์ •ํŠธ๋ฆฌ ๋ถ„๋ฅ˜๊ธฐ๋ฅผ ํ›ˆ๋ จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ธก์„ ํ•˜๋ ค๋ฉด ๋ชจ๋“  ๊ฐœ๋ณ„ํŠธ๋ฆฌ์˜ ์˜ˆ์ธก์„ ๊ตฌํ•˜๊ณ  ๊ฐ€์žฅ ๋งŽ์€์„ ํƒ์„ ๋ฐ›์€ ํด๋ž˜์Šค๋ฅผ ์˜ˆ์ธก์œผ๋กœ ์‚ผ์Šต๋‹ˆ๋‹คvoting.  ๊ฒฐ์ • ํŠธ๋ฆฌ์˜ ์•™์ƒ๋ธ”์€ ๋žœ๋คํฌ๋ ˆ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์•™์ƒ๋ธ” ๋ฐฉ๋ฒ•์€ ํ›จ์”ฌ ๋” ๋†’์€ ์ •ํ™•๋„๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

๋ฐฐ๊น… ํ›ˆ๋ จ์…‹์—์„œ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์—ฌ ์ƒ˜ํ”Œ๋งํ•˜๋Š” ๋ฐฉ์‹

ํŽ˜์ด์ŠคํŒ… ํ›ˆ๋ จ์…‹์—์„œ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ณ  ์ƒ˜ํ”Œ๋งํ•˜๋Š” ๋ฐฉ์‹

๋‘ ๋ฐฉ๋ฒ• ๋ชจ๋‘ ๊ฐ™์€ ํ›ˆ๋ จ์ƒ˜ํ”Œ์„ ์—ฌ๋Ÿฌ ์˜ˆ์ธก๊ธฐ์— ๊ฑธ์ณ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐฐ๊น…๋งŒ์ด ํ•œ ์˜ˆ์ธก๊ธฐ๋ฅผ ์œ„ํ•ด ๊ฐ™์€ ํ›ˆ๋ จ์ƒ˜ํ”Œ์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ƒ˜ํ”Œ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๋ถ€ํŠธ์ŠคํŠธ๋žฉ(bootstrap)

๋ถ€ํŠธ์ŠคํŠธ๋žฉ(bootstrap)์€ ํ†ต๊ณ„ํ•™์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šฉ์–ด๋กœ, random sampling์„ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ผ์ปซ๋Š” ๋ง์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•œ ์‹์ž์žฌ๋งˆํŠธ์— ๋“ค์–ด์˜ค๋Š” ์ƒ์ถ”์˜ ์‹ ์„ ๋„๋ฅผ ์•Œ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ, ๋งˆํŠธ๋กœ ์ž…๊ณ ๋˜๋Š” ๋ชจ๋“  ์ƒ์ถ” ์ค‘ ์ž„์˜๋กœ 100๊ฐœ๋ฅผ ๋ฝ‘์•„ ๊ทธ ์ƒ์ถ”์˜ ์‹ ์„ ๋„ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š”๊ฒŒ ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋ฌด์Šจ ์˜๋ฏธ๊ฐ€ ์žˆ์„๊นŒ์š”? ๋ฐ”๋กœ raw data์˜ ๋ถ„ํฌ๋ฅผ ์ถ”์ •ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ธก์ •๋œ ๋ฐ์ดํ„ฐ ์ค‘์—์„œ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ ๋ณต์› ์ถ”์ถœ๋กœ n๊ฐœ๋ฅผ ๋ฝ‘๊ณ , ๋ฝ‘์€ n๊ฐœ์˜ ํ‰๊ท ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์„ m๋ฒˆ ๋ฐ˜๋ณตํ•˜์—ฌ ๋ชจ์œผ๊ฒŒ ๋˜๋ฉด ํ‰๊ท ์— ๋Œ€ํ•œ ๋ถ„ํฌ๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๊ณ , ์ด๋กœ๋ถ€ํ„ฐ sample mean์— ๋Œ€ํ•œ ์‹ ๋ขฐ ๊ตฌ๊ฐ„์„ ์ถ”์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ์€, ๋จธ์‹ ๋Ÿฌ๋‹์—์„œ๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ random sampling์„ ํ†ตํ•ด training data๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ฆ‰, ๋ฐฐ๊น…(Bagging)์€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ(bootstrap)์„ ์ง‘๊ณ„(Aggregating)ํ•˜์—ฌ ํ•™์Šต ๋ฐ์ดํ„ฐ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์ถฉ๋ถ„ํ•œ ํ•™์Šตํšจ๊ณผ๋ฅผ ์ฃผ์–ด ๋†’์€ bias์˜ underfitting ๋ฌธ์ œ๋‚˜, ๋†’์€ variance๋กœ ์ธํ•œ overfitting ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š”๋ฐ ๋„์›€์„ ์ค๋‹ˆ๋‹ค.(์ถœ์ฒ˜:https://data-analysis-science.tistory.com/61)

 

์‚ฌ์ดํ‚ท๋Ÿฐ์—์„œ ๋ฐฐ๊น…๊ณผ ํŽ˜์ด์ŠคํŒ…

BaggindClassifier BaggingRegressor๊ฐ€ ์žˆ์œผ๋ฉฐ, ํŽ˜์ด์ŠคํŒ…์€ bootstrap=False๋กœ ์„ค์ •ํ•˜๋ฉด ๋œ๋‹ค

from sklearn.ensemnle import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

baggingClf = BaggingClassifier(
	DecisionTreeClassifier(), n+estimators=500. max_samples=100, bootstrap=True, n_jobs=-1
   )
 baggingClf.fit(X_train, y_train)
 y-pred =baggingClf.predict(X_test)

์ „๋ฐ˜์ ์œผ๋กœ ๋ฐฐ๊น…์ด ๋” ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค๊ธฐ๋•Œ๋ฌธ์— ์„ ํ˜ธํ•˜์ง€๋งŒ, ์—ฌ์œ ๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ต์ฐจ๊ฒ€์ฆ์œผ๋กœ ๋‘ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ์จ๋ณธ ๋’ค ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

oobํ‰๊ฐ€(out-of-bag)

๋ฐฐ๊น…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์ƒ˜ํ”Œ์€ ์„ ํƒ๋˜์–ด ์—ฌ๋Ÿฌ๋ฒˆ ์ƒ˜ํ”Œ๋ง๋˜๊ณ , ์–ด๋–ค ๊ฒƒ์€ ์ „ํ˜€ ์„ ํƒ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค. ์„ ํƒ๋˜์ง€ ์•Š์€ ์ƒ˜ํ”Œ์„ oob ์ƒ˜ํ”Œ์ด๋ผ ํ•œ๋‹ค. ์˜ˆ์ธก๊ธฐ๊ฐ€ ํ›ˆ๋ จ๋˜๋Š” ๋™์•ˆ์— ๋ณ„๋„์˜ ๊ฒ€์ฆ ์„ธํŠธ๊ฐ€ ์•„๋‹Œ  oob์ƒ˜ํ”Œ๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ „์˜ ์ฝ”๋“œ์— ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ oob_score=True ๋กœ ๋„ฃ๊ณ  , fit ํ•œ ๋’ค clf.oob_score_ ๋กœ ํ‰๊ฐ€ ์ ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์•™์ƒ๋ธ” ํ‰๊ฐ€๋Š” ๊ฐ ์˜ˆ์ธก๊ธฐ์˜ oob ํ‰๊ฐ€๋ฅผ ํ‰๊ท ํ•˜์—ฌ ์–ป๋Š”๋‹ค. ์ด ์ ์ˆ˜๋Š” ์ •ํ™•๋„์™€ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค. 

 

 

 

๋ฐ˜์‘ํ˜•