์์๋ธ ํ์ต์ ๋ค์ํ ์์ธก๊ธฐ๋ฅผ ๊ฒฐํฉํด ํ์ตํ๋ ๊ฒ์ ๋๋ค. ์์๋ธ์ ๋ฐฉ๋ฒ ์ค ํ๋๋ ํ๋ จ์ ์ผ๋ก๋ถํฐ ๋ฌด์์๋ก ๋ค๋ฅธ ์๋ธ์ ์ ๋ง๋ค์ด ์ผ๋ จ์ ๊ฒฐ์ ํธ๋ฆฌ ๋ถ๋ฅ๊ธฐ๋ฅผ ํ๋ จ์ํฌ ์ ์์ต๋๋ค. ์์ธก์ ํ๋ ค๋ฉด ๋ชจ๋ ๊ฐ๋ณํธ๋ฆฌ์ ์์ธก์ ๊ตฌํ๊ณ ๊ฐ์ฅ ๋ง์์ ํ์ ๋ฐ์ ํด๋์ค๋ฅผ ์์ธก์ผ๋ก ์ผ์ต๋๋ค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 ํ๊ฐ๋ฅผ ํ๊ท ํ์ฌ ์ป๋๋ค. ์ด ์ ์๋ ์ ํ๋์ ๊ฑฐ์ ๋น์ทํ๋ค.
'๋จธ์ ๋ฌ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ถ์คํ AdaBoost, gradient boosting, XGBoost (0) | 2022.12.09 |
---|---|
python numpy, pandas ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋, ์ฐจ์ด (0) | 2022.12.08 |
๋น์ง๋ํ์ต - ๊ตฐ์ง, k-means, ์ค๋ฃจ์ฃ์ ์ ์ฌ์ดํท๋ฐ (0) | 2022.12.07 |
๋จธ์ ๋ฌ๋ ๋ถ๋ฅ ์ฑ๋ฅ ์ธก์ (0) | 2022.12.06 |
์ฐจ์ ์ถ์, PCA python ์ฌ์ดํท๋ฐ (0) | 2022.12.05 |