๋ฐ์ํ
Extra Trees (์์คํธ๋ผ ํธ๋ฆฌ)
์์คํธ๋ผ ํธ๋ฆฌ(Extra Trees)๋ ๋๋ค ํฌ๋ ์คํธ์ ๋งค์ฐ ์ ์ฌํ๊ฒ ๋์ํ๋ฉฐ, ๊ธฐ๋ณธ์ ์ผ๋ก 100๊ฐ์ ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ํ๋ จํฉ๋๋ค.
- ์ด ๋ชจ๋ธ์ ๋๋ค ํฌ๋ ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋๋ถ๋ถ์ ๊ฒฐ์ ํธ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ํ๊ณ , ์ผ๋ถ ํน์ฑ์ ๋๋คํ๊ฒ ์ ํํ์ฌ ๋ ธ๋๋ฅผ ๋ถํ ํ๋ ๋ฐ ์ฌ์ฉํฉ๋๋ค.
- ๋๋ค ํฌ๋ ์คํธ์ ์์คํธ๋ผ ํธ๋ฆฌ์ ์ฃผ์ ์ฐจ์ด์ ์ ๋ถํธ์คํธ๋ฉ ์ํ์ ์ฌ์ฉํ์ง ์๋๋ค๋ ์ ์ ๋๋ค.
- ์ฆ, ๊ฐ ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ์ ์ฒด ํ๋ จ ์ธํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋์ , ๋ ธ๋๋ฅผ ๋ถํ ํ ๋ ๊ฐ์ฅ ์ข์ ๋ถํ ์ ์ฐพ์ง ์๊ณ ๋ฌด์์๋ก ๋ถํ ํฉ๋๋ค.
- ์ฌ์ค, ์ด์ ์ DecisionTreeClassifier์ spliter ๋งค๊ฐ๋ณ์๋ฅผ 'random'์ผ๋ก ์ค์ ํ ๊ฒ์ด ๋ฐ๋ก ์์คํธ๋ผ ํธ๋ฆฌ์์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ๋๋ค.
- ๊ฐ ๊ฒฐ์ ํธ๋ฆฌ์์ ํน์ฑ์ ๋ฌด์์๋ก ๋ถํ ํ๋ฏ๋ก ๊ฐ๋ณ ํธ๋ฆฌ์ ์ฑ๋ฅ์ ๋จ์ด์ง ์ ์์ต๋๋ค.
- ๊ทธ๋ฌ๋ ์ฌ๋ฌ ํธ๋ฆฌ๋ฅผ ์์๋ธํ๋ฉด ๊ณผ๋์ ํฉ์ ๋ง๊ณ ๊ฒ์ฆ ์ธํธ์ ์ ์๋ฅผ ๋์ผ ์ ์์ต๋๋ค.
- ์ฌ์ดํท๋ฐ์์ ์์คํธ๋ผ ํธ๋ฆฌ๋ ExtraTreesClassifier ํด๋์ค๋ก ์ ๊ณต๋ฉ๋๋ค.
from sklearn.ensemble import ExtraTreesClassifier
et = ExtraTreesClassifier(n_jobs=-1, random_state=42)
scores = cross_validate(et, train_input, train_target, return_train_score=True, n_jobs=-1)
print(np.mean(scores['train_score']), np.mean(scores['test_score']))
# 0.9974503966084433 0.8887848893166506
- ์์คํธ๋ผ ํธ๋ฆฌ ๋ชจ๋ธ์ ๊ต์ฐจ ๊ฒ์ฆ ์ ์๋ฅผ ํ์ธํ ๊ฒฐ๊ณผ, ๋๋ค ํฌ๋ ์คํธ์ ๋น์ทํ ์ฑ๋ฅ์ ๋ณด์์ต๋๋ค.
- ์ด ์์ ์์๋ ํน์ฑ์ด ๋ง์ง ์์ ๋ ๋ชจ๋ธ ๊ฐ์ ์ฐจ์ด๊ฐ ํฌ์ง ์์์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์์คํธ๋ผ ํธ๋ฆฌ๋ ๋ฌด์์์ฑ์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ ๋๋ค ํฌ๋ ์คํธ๋ณด๋ค ๋ ๋ง์ ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ํ๋ จํด์ผ ํ ์ ์์ต๋๋ค.
- ํ์ง๋ง ๋ ธ๋๋ฅผ ๋ฌด์์๋ก ๋ถํ ํ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ ์๋๊ฐ ๋ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์์คํธ๋ผ ํธ๋ฆฌ๋ ๋๋ค ํฌ๋ ์คํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ํน์ฑ ์ค์๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
์์๋ [์์ฝ์ฌ ๋์, ๋น๋, pH]์ธ๋ฐ, ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์์คํธ๋ผ ํธ๋ฆฌ๋ ๊ฒฐ์ ํธ๋ฆฌ๋ณด๋ค ๋น๋์ ๋ํ ์์กด์ฑ์ด ์์ต๋๋ค.
et.fit(train_input, train_target)
print(et.feature_importances_)
# [0.20183568 0.52242907 0.27573525]
- ์์คํธ๋ผ ํธ๋ฆฌ์ ํ๊ท ๋ฒ์ ์ ExtraTreesRegressor ํด๋์ค ์ ๋๋ค.
Summary
์์คํธ๋ผ ํธ๋ฆฌ (Extra Trees)
- ์์คํธ๋ผ ํธ๋ฆฌ: ๋๋ค ํฌ๋ ์คํธ์ ์ ์ฌํ์ง๋ง, ๋ถํธ์คํธ๋ฉ ์ํ์ ์ฌ์ฉํ์ง ์๊ณ ๋ ธ๋๋ฅผ ๋ฌด์์๋ก ๋ถํ ํ์ฌ ๊ณผ๋์ ํฉ์ ๊ฐ์์ํต๋๋ค.
- ์ฃผ์ ๋งค๊ฐ๋ณ์:
- n_estimators, criterion, max_depth, min_samples_split, max_features: ๋๋ค ํฌ๋ ์คํธ์ ๋์ผ
- bootstrap: ๋ถํธ์คํธ๋ฉ ์ํ ์ฌ์ฉ ์ฌ๋ถ (๊ธฐ๋ณธ๊ฐ: False)
- oob_score: OOB ์ํ์ ์ฌ์ฉํ์ฌ ๋ชจ๋ธ ํ๊ฐ ์ฌ๋ถ (๊ธฐ๋ณธ๊ฐ: False)
- n_jobs: ๋ณ๋ ฌ ์คํ์ ์ฌ์ฉํ CPU ์ฝ์ด ์ (๊ธฐ๋ณธ๊ฐ: 1)
๋ฐ์ํ
'๐น๏ธ ํผ๊ณต๋จธ์ ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํผ๊ณต๋จธ์ ] Clustering Algoritm (๊ตฐ์ง ์๊ณ ๋ฆฌ์ฆ) (0) | 2024.08.06 |
---|---|
[ํผ๊ณต๋จธ์ ] Tree's Ensemble - Gradient Boosting (๊ทธ๋ ์ด์ธํธ ๋ถ์คํ ) (0) | 2024.07.30 |
[ํผ๊ณต๋จธ์ ] Tree's Ensemble - Random Forest (๋๋ค ํฌ๋ ์คํธ) (0) | 2024.07.30 |
[ํผ๊ณต๋จธ์ ] Cross-Validation & Grid Search (0) | 2024.07.30 |
[ํผ๊ณต๋จธ์ ] Decision Tree (๊ฒฐ์ ํธ๋ฆฌ) (0) | 2023.11.06 |