1. ๊ฐ์
1) ์์๋ธ์ด๋?
- ์ฌ๋ฌ๊ฐ์ classifier๋ฅผ ์์ฑํ๊ณ ๊ฐ classifier๊ฐ ์์ธกํ ๊ฐ๋ค์ ๊ฒฐํฉํจ์ผ๋ก์จ ์ ํํ ์ต์ข ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๋ ๊ธฐ๋ฒ
- ๋๋ถ๋ถ์ ์ ํ๋ฐ์ดํฐ ๋ถ๋ฅ ์ ์์๋ธ ๋ชจ๋ธ๋ค์ด ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ํ๋
- ๋๋ค ํฌ๋ ์คํธ, ๊ทธ๋๋์ธํธ ๋ถ์คํ ๋ฑ์ ๋ชจ๋ธ๋ค์ด ์์
2) ํ์ต ์ ํ
- ํฌํ๋ฅผ ํตํด ์ต์ข
์์ธก ๊ฒฐ๊ณผ ๊ฒฐ์
- ๋ณดํ
- ๋ฐฐ๊น
- ์ฌ๋ฌ๊ฐ์ ๋ถ๋ฅ๊ธฐ๊ฐ ์์ฐจ์ ์ผ๋ก ์ญ์ต ์ํ, ์์ธก์ด ํ๋ฆฐ ๋ฐ์ดํฐ์ ๋ํด์๋ ๊ฐ์ค์น ๋ถ์ฌ
- ๋ถ์คํ
- ์ฌ๋ฌ๊ฐ์ง ๋ค๋ฅธ ๋ชจ๋ธ๋ค์ ์์ธก ๊ฒฐ๊ณผ๊ฐ์ ํ์ต ๋ฐ์ดํฐ๋ก ๋ง๋ค๊ณ , ๋ค๋ฅธ ๋ชจ๋ธ(๋ฉํ๋ชจ๋ธ)์ ์ด๋ฅผ ์ฌํ์ต์์ผ ๊ฒฐ๊ณผ๋ฅผ ์์ธก
- ์คํํน
- ์ด ์ธ์๋ ๋ค์ํ ์ ํ์ด ์์
2. ์์๋ธ ํ์ต ์ ํ
1) ๋ณดํ
- ์ผ๋ฐ์ ์ผ๋ก ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง classifier๋ฅผ ๊ฒฐํฉํจ
- ๋ณดํ
์ ํ
- ํ๋๋ณดํ
- ๋ค์๊ฒฐ์ ์์น๊ณผ ๋น์ทํ ๋ถ๋ฅ
- ์์ธก ๊ฒฐ๊ณผ๊ฐ ์ค ๋ค์์ ๋ถ๋ฅ๊ธฐ๊ฐ ๊ฒฐ์ ํ ์์ธก๊ฐ์ ์ต์ข ๋ณดํ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ ์
- ์ํํธ๋ณดํ
- ๋ถ๋ฅ๊ธฐ๋ค์ ๋ ์ด๋ธ ๊ฐ ๊ฒฐ์ ํ๋ฅ ์ ๋ชจ๋ ๋ํ๊ณ ์ด๋ฅผ ํ๊ท ์ ๋ด์ด ํ๋ฅ ์ด ๊ฐ์ฅ ๋์ ๋ ์ด๋ธ ๊ฐ์ ์ต์ข ๋ณดํ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ ์
- ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋๋ ์ ํ์
- ๋ณดํ
์์ ์คํ ์ ์ฃผ์์
- logistic regression ๋ชจ๋ธ์ ํ์ดํผํ๋ผ๋ฏธํฐ ์ค max_iter์ ๊ฐ์ ๋ฃ์ด์ฃผ์ง ์๋ ๊ฒฝ์ฐ ์ด๋ฐ ์๋ฌ๊ฐ ๋ธ
- ์ด ๊ฒฝ์ฐ max_iter์ ์ถฉ๋ถํ ํฐ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ์ฌ๋ผ์ง
- ํ๋๋ณดํ
...\\anaconda3\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:814: ConvergenceWarning: lbfgs failed to converge (status=1):
STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.
Increase the number of iterations (max_iter) or scale the data as shown in:
<https://scikit-learn.org/stable/modules/preprocessing.html>
Please also refer to the documentation for alternative solver options:
<https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression>
n_iter_i = _check_optimize_result(
- ๋ณดํ ์์
- ํน์ฑ
- ๋ณดํ ๋ถ๋ฅ๊ธฐ๊ฐ ํญ์ ์ฑ๋ฅ์ด ์ข๊ฒ ๋์ค๋ ๊ฒ์ ์๋
- ๋ฐ์ดํฐ์ ํน์ฑ, ๋ถํฌ ๋ฑ ๋ค์ํ ์กฐ๊ฑด์ ์ํด ์์ธก ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง
- ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์์ ๊ฐ์ฅ ์ฃผ์ํด์ผ ํ๋ ์ ์ ํธํฅ-๋ถ์ฐ ํธ๋ ์ด๋์คํ
2) ๋ฐฐ๊น (Bootstrapping Aggregating)
- ๊ฐ๊ฐ์ classifier๊ฐ ๋ชจ๋ ๊ฐ์ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฐ์ด์ง๋ง ๋ฐ์ดํฐ ์ํ๋ง์ ์๋ก ๋ค๋ฅด๊ฒ ๊ฐ์ ธ๊ฐ๋ฉด์ ํ์ต์ ์ํํด ๋ณดํ ์ ์ํํจ
- ์ด๋ ๋ฐ์ดํฐ ์ํ๋ง์ ์ผ๋ถ ๋ฐ์ดํฐ๋ค์ด ์ค์ฒฉ๋๋๋ก ํ๊ณ ๊ฐ classifier์๊ฒ ํ ๋นํ๋ ๊ฒ์ Bootstrapping ๋ถํ ๋ฐฉ์์ด๋ผ๊ณ ๋ถ๋ฆ
- ๋ฐฐ๊น
๋ํ ๋ชจ๋ธ
- Random Forest
- Decision Tree ๋ชจ๋ธ์ ์ฌ๋ฌ๊ฐ ์ด์ฉํด ์์ธก ํ ๋ณดํ ์ผ๋ก ์ต์ข ๊ฒฐ์ ์ ๋ด๋ฆผ
- ์ฃผ์ ํ์ดํผํ๋ผ๋ฏธํฐ
- n_estimators
- ๋๋คํฌ๋ ์คํธ์์ ๊ฒฐ์ ํธ๋ฆฌ์ ๊ฐ์๋ฅผ ์ง์ ํจ
- default=10
- ๋ง์ด ์ค์ ํ ์๋ก ์ฑ๋ฅ์ด ์ข์์ง ์ ์์ผ๋ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ํฅ์๋๋ ๊ฒ์ ์๋๋ฉฐ, ํ์ต ์ํ์๊ฐ์ด ์ค๋๊ฑธ๋ฆผ
- max_features
- decision tree์์ ์ฌ์ฉ๋๋ ํ์ดํผํ๋ผ๋ฏธํฐ์ ๋๊ฐ์ ๊ฒ
- default = ‘auto’
- ํธ๋ฆฌ ๋ถํ ์ ์ ์ฒด feature๋ฅผ ๋ชจ๋ ์ฐธ์กฐํ๋ ๊ฒ์ด ์๋ sqrt(์ ์ฒด feature)๋งํผ ์ฐธ์กฐํจ (sqrt = ๋ฃจํธ)
- max_depth
- ํธ๋ฆฌ์ ์ต๋ ๊น์ด ์ค์
- min_samples_leaf
- ์ต์ ๋ฆฌํ๋ ธ๋์ ์
- n_estimators
- ์์
- Random Forest
3) ๋ถ์คํ
- ์ฌ๋ฌ๊ฐ์ classifier๊ฐ ์์ฐจ์ ์ผ๋ก ํ์ต, ์์์ ํ์ตํ ๋ถ๋ฅ๊ธฐ๊ฐ ์์ธก์ด ํ๋ฆฐ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํด ์ฌ๋ฐ๋ฅด๊ฒ ์์ธกํ ์ ์๋๋ก ํจ
- ์์ธก ์ฑ๋ฅ์ด ๋ฐ์ด๋ ์์๋ธ ํ์ต์ ์ฃผ๋ํ๊ณ ์์ผ๋ฉฐ ๋ํ์ ์ธ ๋ถ์คํ
- ๋ถ์คํ
๊ตฌํ
- AdaBoost(Adaptive Boosting)
- ์๋ชป ๋ถ๋ฅ๋ ๋ฐ์ดํฐ์ ๋ํ์ฌ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๊ณ ๋ ์ ๋ถ๋ฅํ ์ ์๋๋ก ํจ
- ์ด๋ ํ์ต ํ์ฐจ๊ฐ ๋์ด๋ ์๋ก ๊ฐ์ค์น๊ฐ ์ ์ ๋ ์ปค์ง
- ์ฌ๋ฌ๋ฒ์ ํ์ต ๊ฒฐ๊ณผ๋ฅผ ํฉ์ณ ์์ธก ๊ฒฐ๊ณผ๋ฅผ ๋ด๋์
- Gradient Boosting
- AdaBoost์ ๋ฐฉ๋ฒ์ด ์ ์ฌํ๋ ๊ฐ์ค์น ์ ๋ฐ์ดํธ ์ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ด์ฉํจ
- ๊ฒฐ๊ณผ๊ฐ์ y, ์์ธก ํจ์๋ฅผ F(x)๋ผ๊ณ ํ ๋ ์๋ฌ๊ฐ h(x) = y - F(x)
- ์ด ์์ ๊ฐ์ ์ต์ํ ์ํค๊ธฐ ์ํด ๋ฐ๋ณต์ ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์
- AdaBoost(Adaptive Boosting)
- ๋ถ์คํ
๋ํ ๋ชจ๋ธ
- GBM(Gradient Boosting Machine)
- ์ผ๋ฐ์ ์ผ๋ก ๋๋คํฌ๋ ์คํธ๋ณด๋ค ๋์ ์ฑ๋ฅ์ ๋ณด์ด๋ ์ํ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ๋ ธ๋ ฅ๋ ํ์ํจ
- ์ฃผ์ ํ์ดํผํ๋ผ๋ฏธํฐ
- max_depth, max_features
- loss
- ๊ฒฝ์ฌ ํ๊ฐ๋ฒ์์ ์ฌ์ฉํ ๋น์ฉํจ์ ์ง์
- default=deviance
- learning_rate
- ํ์ต ์งํ ์ ์ ์ฉํ๋ ํ์ต๋ฅ ๋ก ์๋ฌ ๊ฐ์ ๋ณด์ ํ ๋ ์ฌ์ฉํ๋ ๊ณ์
- 0~1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ default๋ 0.1
- ๋๋ฌด ์์ ๊ฐ์ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๋ฅผ ํด๋ ๊ฐ์ด ์์ ์ต์ ์ค๋ฅ๋ฅผ ์ ๊ตํ๊ฒ ์ฐพ์ ์ ์์ง๋ง ์ํ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆฌ๋ฉฐ ํ์ต ๋ฐ๋ณต์ด ์๋ฃ๋๊ธฐ ์ ์ ์ต์ ์ค๋ฅ๊ฐ์ ๋ชป์ฐพ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์์.
- ๋๋ฌด ํฐ๊ฐ์ ์ง์ ํ๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๋ ๊ฐ์ด ๋๋ฌด ์ปค์ ธ ์ต์ ์ค๋ฅ๋ฅผ ์ง๋์ณ ์์ธก ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ผ๋ ์ํ ์๊ฐ์ ์งง์์ง
- n_estimators์ ์ํธ๋ณด์์ ์ผ๋ก ์กฐํฉํด ์ฌ์ฉํจ
- n_estimators
- weak learner์ ๊ฐ์๋ก ๊ฐ weak learner๊ฐ ์์ฐจ์ ์ผ๋ก ์ค๋ฅ๋ฅผ ๋ณด์ ํ๋ฏ๋ก ๊ฐ์๊ฐ ๋ง์์๋ก ์์ธก ์ฑ๋ฅ์ด ์ข์์ง ์ ์์ผ๋ ์ํ์๊ฐ์ด ์ค๋๊ฑธ๋ฆผ
- default=100
- subsample
- weak learner๊ฐ ํ์ต์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์ํ๋ง ๋น์จ
- default=1
- 0~1์ฌ์ด์ ๊ฐ์ ๊ฐ์ง
- ์์
- https://github.com/cAhyoung/dacon_stars_type_clf/blob/main/practive_code/gbm_study.ipynb
- XGBoost(eXtra Gradient Boost)
- ํธ๋ฆฌ๊ธฐ๋ฐ ์์๋ธ ํ์ต
- GBM ๊ธฐ๋ฐ์ด์ง๋ง ๋๋ฆฐ ์ํ์๊ฐ, ๊ณผ์ ํฉ ๊ท์ ์ ๋ถ์ฌ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๊ฐ๊ด๋ฐ์
- ๋ณ๋ ฌ CPU ํ๊ฒฝ์์ ๋ณ๋ ฌํ์ต์ด ๊ฐ๋ฅํด GBM๋ณด๋ค ๋น ๋ฅด๊ฒ ํ์ต์ ์๋ฃํ ์ ์์๋ฐ์ด๋ ์์ธก ์ฑ๋ฅ ๋ถ๋ฅ์ ํ๊ท ์์ญ์์ ๋ฐ์ด๋ ์์ธก ์ฑ๋ฅ์ ๋ณด์
GBM ๋๋น ๋น ๋ฅธ ์ํ์๊ฐ ๋ณ๋ ฌ ์ํ ๋ฐ ๋ค์ํ ๊ธฐ๋ฅ์ ํตํด GBM๋ณด๋ค ๋น ๋ฅธ ์๋๋ฅผ ๋ณด์. ๋ค๋ง GBM์ ์ ์ธํ ๋ค๋ฅธ ๋ชจ๋ธ๋ค๊ณผ ๋น๊ตํ์ ๋ ๋น ๋ฅธ ๊ฒ์ ์๋ ๊ณผ์ ํฉ ๊ท์ (Regurarization) ํ์ค GBM์ ๊ฒฝ์ฐ ๊ณผ์ ํฉ ๊ท์ ๊ธฐ๋ฅ์ด ์ ์น๋ XGBoost๋ ์์ฒด์ ์ผ๋ก ๊ณผ์ ํฉ ๊ท์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์ → ๋ ๊ฐํ ๋ด๊ตฌ์ฑ์ ๋ณด์ Tree pruning GBM์ ๋ถํ ์ ๋ถ์ ์์ค์ด ๋ฐ์ํ๋ฉด ๋ถํ ์ ๋์ด์ ์ํํ์ง ์์ผ๋์ด๋ฌํ ๋ฐฉ์์ ์ง๋์น๊ฒ ๋ง์ ๋ถํ ์ ์ผ์ผํฌ ์ ์์. ์ด๋ฐ XGBoost์ ๊ฒฝ์ฐ max_depth์ ๊ฐ์ ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง ๊ธ์ ์ ์ธ ์ด๋์ด ์กด์ฌํ์ง ์๋ ๋ถํ ์ ๊ฒฝ์ฐ ๊ฐ์ง์น๊ธฐ๋ฅผ ํจ์ผ๋ก์จ ๋ถํ ๋๋ ์๋ฅผ ์ค์ผ ์ ์์ ์์ฒด ๋ด์ฅ ๊ต์ฐจ๊ฒ์ฆ ๋ฐ๋ณต ํ์ต ์ ๋ด๋ถ์ ์ผ๋ก train set๊ณผ test set์ ์ด์ฉํด ๊ต์ฐจ๊ฒ์ฆ์ ์ํํ์ฌ ์ต์ ํ๋ ๋ฐ๋ณต ์ํ ํ์๋ฅผ ์ฐพ์๋. ์ด๋ ์ง์ ๋ ํ์ ์ ์ ์ต์ ํ๋ ๊ฐ์ ์ฐพ์๋ด๋ฉด ์กฐ๊ธฐ ์ค๋จํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ ๊ฒฐ์๊ฐ ์์ฒด ์ฒ๋ฆฌ ๊ฒฐ์๊ฐ ์์ฒด ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ๊ฐ์ง - ์๋๋ ์ฌ์ดํท๋ฐ๊ณผ ํธํ๋๋ ํจํค์ง๊ฐ ์๋์์ผ๋ ์ฌ์ดํท๋ฐ์ ๋ง์ด ์ฌ์ฉํ๊ธฐ์ ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ดํท๋ฐ๊ณผ ์ฐ๋๋๋ ๋ํผ ํด๋์ค๋ฅผ ์ ๊ณต
- ๋ ์์ ์ธ XGBoost → ํ์ด์ฌ ๋ํผ(wrapper) XGBoost ๋ชจ๋
- ์ฌ์ดํท๋ฐ๊ณผ ์ฐ๋๋๋ XGBoost → ์ฌ์ดํท๋ฐ ๋ํผ XGBoost ๋ชจ๋
- ์๋์ฝ๋ค ์ธํฐํ๋ฆฌํฐ์ ์๋ ๋ชจ๋ธ์ด๊ธฐ์ ์๋์ฝ๋ค ํ๋กฌํํธ๋ฅผ ์ด์ฉํด ์ค์นํด์ค์ผ ํจ
- ์๋์ฝ๋ค ํ๋กฌํํธ๋ฅผ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ
- conda install -c anaconda py-xgboost
- ์ฃผ์ ํ์ดํผํ๋ผ๋ฏธํฐ-ํ์ด์ฌ๋ํผ์ฉ ํ๋ผ๋ฏธํฐ(์ฌ์ดํท๋ฐ ๋ํผ์ฉ ํ๋ผ๋ฏธํฐ)
- ์ผ๋ฐ ํ๋ผ๋ฏธํฐ: ์คํ ์ ์ค๋ ๋ ๊ฐ์, ๋ชจ๋ ๋ฑ์ ์ ํ, ๋ํดํธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
- booster: gbtree ๋๋ gblinear → default=gbtree
- silent: ์ถ๋ ฅ ๋ฉ์ธ์ง๋ฅผ ๋ํ๋ผ๊น๋ง๊น? default=0 (๋ํ๋)
- nthread: CPU ์คํ ์ค๋ ๋ ๊ฐ์๋ฅผ ์กฐ์ , default=์ ์ฒด๋ค์
- ๋ถ์คํฐ ํ๋ผ๋ฏธํฐ: ์ต์ ํ, ๋ถ์คํ
, regularization ๋ฑ๊ณผ ๊ด๋ จ๋ ํ๋ผ๋ฏธํฐ ์ค์
- eta(learning_rate): ํ์ต๋ฅ ๊ณผ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก 0~1 ์ฌ์ด์ ๊ฐ์ ์ง์ ํ๋ ์ผ๋ฐ์ ์ผ๋ก 0.01~0.2 ์ฌ์ด์ ๊ฐ์ ์ ํธ. default=0.3(0.1)
- num_boost_rounds: n_estimators์ ๊ฐ์ ํ๋ผ๋ฏธํฐ
- min_child_weight: ํธ๋ฆฌ์์ ์ถ๊ฐ์ ์ผ๋ก ๊ฐ์ง๋ฅผ ๋๋ ๊ฒ์ธ์ง ๊ฒฐ์ ํ weight์ ์ดํฉ์ผ๋ก ํด์๋ก ๋ถํ ์ ์์ ํจ. default=1
- gamma(min_split_loss): ํธ๋ฆฌ์ ๋ฆฌํ๋ ธ๋๋ฅผ ์ถ๊ฐ์ ์ผ๋ก ๋๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์ต์ ์์ค ๊ฐ์ ๊ฐ์ผ๋ก ํด๋น ๊ฐ๋ณด๋ค ํฐ loss๊ฐ ๊ฐ์ํ์ ๋ ๋ฆฌํ๋ ธ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ๊ณผ์ ํฉ์ ๊ฐ์์ํฌ ์ ์์. default=1
- max_depth: ํธ๋ฆฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ max_depth์ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก 0์ผ๋ก ์ค์ ์ ๊น์ด์ ์ ํ์ด ์์ผ๋ฉฐ ๊ฐ์ด ๋์์๋ก ํน์ ํผ์ณ ์กฐ๊ฑด์ ํนํ๋ ๋ฃฐ์ด ๋ง๋ค์ด์ง๋ฏ๋ก ๊ณผ์ ํฉ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋ฉฐ 3~10์ ๊ฐ์ ์ฃผ๋ก ์ด์ฉํจ. default=6
- sub_sample: GBM์ supsample๊ณผ ๊ฐ์ ํ๋ผ๋ฏธํฐ๋ก ํธ๋ฆฌ๊ฐ ์ปค์ ธ ๊ณผ์ ํฉ๋๋ ๊ฒ์ ์ ์ดํ๊ธฐ ์ํด ๋ฐ์ดํฐ ์ํ๋ง ๋น์จ์ ์ค์ ํ๊ณ , ์ผ๋ฐ์กฑ์ผ๋ก 0.5~1์ ๊ฐ์ ์ฌ์ฉํจ. default=1
- colsample_bytree(): GBM์ max_features์ ์ ์ฌํ๋ฉฐ ํธ๋ฆฌ ์์ฑ์ ํ์ํ ํผ์ณ๋ฅผ ์์๋ก ์ํ๋งํ๋๋ฐ ์ฌ์ฉ. ํผ์ณ๊ฐ ๋ง์ ๊ฒฝ์ฐ ๊ณผ์ ํฉ ์กฐ์ ์ ์ฌ์ฉ๋จ. default=1
- lambda(reg_lambda): L2 regularization ์ ์ฉ, ํผ์ณ ๊ฐ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ ์ฉ์ ๊ฒํ ํ๋ฉฐ ๊ฐ์ด ํด์๋ก ๊ณผ์ ํฉ ๊ฐ์ ํจ๊ณผ๊ฐ ์์. default=1
- alpha(reg_alpha): L1 regularization ์ ์ฉ, ํผ์ณ ๊ฐ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ์ ์ฉ์ ๊ฒํ ํ๋ฉฐ ๊ฐ์ด ํด์๋ก ๊ณผ์ ํฉ ๊ฐ์ ํจ๊ณผ๊ฐ ์์. default=0
- scale_pos_weight: ํน์ ๊ฐ์ผ๋ก ์น์ฐ์น ๋น๋์นญ ํด๋์ค๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ์ ์ ๊ท ํ์ ์ ์งํ๊ธฐ ์ํ ํ๋ผ๋ฏธํฐ. default=1
- ํ์ต ํ์คํฌ ํ๋ผ๋ฏธํฐ: ํ์ต ์ํ ์ ๊ฐ์ฒด ํจ์, ํ๊ฐ๋ฅผ ์ํ ์งํ ๋ฑ์ ์ค์
- objective: ์ต์๊ฐ์ ๊ฐ์ ธ์ผํ๋ ์์คํจ์๋ฅผ ์ ์. ์ด์ง๋ถ๋ฅ์ธ์ง ๋ค์ค๋ถ๋ฅ์ธ์ง์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง
- binary:logistic: ์ด์ง๋ถ๋ฅ์ผ ๋ ์ ์ฉํ๋ ์์คํจ์
- multi:softmax: ๋ค์ค๋ถ๋ฅ์ผ ๋ ์ ์ฉํ๋ ์์คํจ์๋ก ์ด ๊ฒฝ์ฐ label class์ ๊ฐ์์ธ num_class ํ๋ผ๋ฏธํฐ๋ฅผ ์ค์ ํด์ค์ผ ํจ
- multi:softprob: softmax์ ์ ์ฌํ๋ ๊ฐ๋ณ label class์ ํด๋น๋๋ ์์ธก ํ๋ฅ ์ ๋ฐํํจ
- eval_metric: ๊ฒ์ฆ์ ์ฌ์ฉ๋๋ ํจ์๋ฅผ ์ ์ํ๋ฉฐ default=rmse(ํ๊ท์ธ ๊ฒฝ์ฐ), default=error(๋ถ๋ฅ์ธ ๊ฒฝ์ฐ)
- rmse: Root Mean Square Error
- mae: Mean Absolute Error
- logloss: Negative log-likelihood
- error: Binary classification error rate (0.5 threshold)
- merror: Multiclass classification error rate
- mlogloss: Multiclass logloss
- auc: Area under the curve
- objective: ์ต์๊ฐ์ ๊ฐ์ ธ์ผํ๋ ์์คํจ์๋ฅผ ์ ์. ์ด์ง๋ถ๋ฅ์ธ์ง ๋ค์ค๋ถ๋ฅ์ธ์ง์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง
- ์ผ๋ฐ ํ๋ผ๋ฏธํฐ: ์คํ ์ ์ค๋ ๋ ๊ฐ์, ๋ชจ๋ ๋ฑ์ ์ ํ, ๋ํดํธ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
- ๊ณผ์ ํฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ํด๊ฒฐ ๋ฐฉ๋ฒ
- eta๊ฐ์ ๋ฎ์ถ๊ณ num_round๊ฐ์ ๋์ฌ์ค
- max_depth๊ฐ์ ๋์
- min_child_weight ๊ฐ์ ๋์
- gamma ๊ฐ์ ๋์
- subsample๊ณผ colcample_bytree๋ฅผ ์กฐ์ ํ๋ ๋ฐฉ์์ ํตํด ํธ๋ฆฌ๊ฐ ๋ณต์ ํ๊ฒ ์์ฑ๋๋ ๊ฒ์ ๋ง์
- LightGBM
- XGBoost๋ณด๋ค ์๊ฐ์ด ํจ์ ์ ๊ฒ ๊ฑธ๋ฆฌ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๋ ์๋์ ์ผ๋ก ์ ์
- ํ๊ฐ์ง ๋จ์ ์ ์ ์ ๋ฐ์ดํฐ์ ์ ํ์ต์ํค๋ ๊ฒฝ์ฐ ๊ณผ์ ํฉ์ด ๋ฐ์ํ๊ธฐ ์ฌ์ → ์ผ๋ฐ์ ์ผ๋ก 10000๊ฑด ์ดํ์ ๊ฒฝ์ฐ ๊ณผ์ ํฉ์ด ๋ฐ์ํ๊ธฐ ์ฝ๋ค๊ณ ํจ
- GBM์ ํธ๋ฆฌ ๋ถํ ๋ฐฉ์๊ณผ๋ ๋ค๋ฅธ ๋ฆฌํ ์ค์ฌ ํธ๋ฆฌ ๋ถํ ๋ฐฉ์์ ์ฌ์ฉํด ๊ท ํ์กํ ํธ๋ฆฌ๋ก ๋ง๋๋ ๊ฒ์ด ์๋ ์ต๋ ์์ค๊ฐ์ ๊ฐ์ง๋ ๋ฆฌํ๋ ธ๋๋ฅผ ์ง์์ ์ผ๋ก ๋ถํ ํ์ฌ ๋น๋์นญ์ ์ธ ํธ๋ฆฌ๊ฐ ๋ง๋ค๊ณ , ์์ธก ์ค๋ฅ ์์ค์ ์ต์ํ ํ ์ ์์
- ์ฌ์ดํท๋ฐ ๋ํผ ๋ชจ๋์ด ์กด์ฌํ๋ฉฐ ๋ถ๋ฅ์ฉ ๋ชจ๋ธ๊ณผ ํ๊ท์ฉ ๋ชจ๋ธ์ด ๋ชจ๋ ์กด์ฌ
- ํ์ดํผํ๋ผ๋ฏธํฐ
- ์ฃผ์ ํ๋ผ๋ฏธํฐ
- num_iterations(n_estimators): ๋ฐ๋ณต ์ํํ๋ ค๋ ํธ๋ฆฌ์ ๊ฐ์๋ฅผ ์ง์ ํ๋ฉฐ ํฌ๊ฒ ์ง์ ํ ์๋ก ์์ธก ์ฑ๋ฅ์ด ๋์์ง ์ ์์ผ๋ ์คํ๋ ค ๊ณผ์ ํฉ์ ๋ถ๋ฌ์ฌ ์ ์์. default=100
- learning_rate: 0~1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ฉฐ ๋ถ์คํ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ ๋ ์ ๋ฐ์ดํธ๋๋ ํ์ต๋ฅ ๋ก ์ง๋์น๊ฒ ์์์ง๋ฉด ๊ณผ์ ํฉ ์ด์๊ฐ ๋ฐ์ํ ์ ์๊ณ , ํ์ต ์๊ฐ์ด ๊ธธ์ด์ง๊ฒ ๋จ. default=0.1
- max_depth: 0๋ณด๋ค ์์ ๊ฐ์ ์ง์ ํ๋ฉด ๊น์ด์ ์ ํ์ด ์์ผ๋ฉฐ Leaf Wise ๊ธฐ๋ฐ์ผ๋ก Depth Wise๋ณด๋ค ์๋์ ์ผ๋ก ๊น์ด๊ฐ ๋ ๊น์. default=1
- min_data_in_leaf(min_child_samples): decision tree์ min_samples_leaf์ ๊ฐ์ ํ๋ผ๋ฏธํฐ์ด๋ฉฐ ์ต์ข ์ ์ผ๋ก ๊ฒฐ์ ๋๋ ํด๋์ค์ธ ๋ฆฌํ๋ ธ๋๊ฐ ๋๊ธฐ ์ํด์ ์ต์ํ์ผ๋ก ํ์ํ ๊ฐ์ ์ค์ ํ๋ ๊ฒ์. ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณผ์ ํฉ์ ์ ์ดํ๊ธฐ ์ํ ํ๋ผ๋ฏธํฐ์. default=20
- num_leaves: ํ๋์ ํธ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๋ฆฌํ์ ๊ฐ์. default=31
- boosting: ๋ถ์คํ ํธ๋ฆฌ๋ฅผ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ์ ํ๋ ๊ฒ์ผ๋ก gbdt ๋๋ rf๋ก ์ค์ ํ ์ ์์. default=gbdt
- bagging_fraction(subsample): ๋ฐ์ดํฐ ์ํ๋ง ๋น์จ์ ์ง์ ํ๋ ํ๋ผ๋ฏธํฐ๋ก ๊ณผ์ ํฉ์ ๋ง๋๋ฐ ๋์์ ์ค. default=1.0
- feature_fraction(colsample_bytree): ๊ฐ๊ฐ์ ํธ๋ฆฌ๋ฅผ ํ์ต์ํฌ ๋ ๋ฌด์์๋ก ์ ํํ๋ ํผ์ณ์ ๋น์จ์ด๋ฉฐ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณผ์ ํฉ์ ๋ง๊ธฐ์ํด ์ฌ์ฉ๋จ. default=1.0
- lambda_l2(reg_lambda): L2 Regulation์ ์ํ ๊ฐ์ผ๋ก ํผ์ณ์ ๊ฐ์๊ฐ ๋ง์์๋ก ์ ์ฉ์ ๊ฒํ ํ๊ณ ๊ฐ์ด ํด์๋ก ๊ณผ์ ํฉ ๊ฐ์ ํจ๊ณผ๊ฐ ์์. default=0.0
- lambda_l1(reg_alpha): L1 regulation์ ์ํใ ใด ๊ฐ์ผ๋ก ๊ณผ์ ํฉ ์ ์ด๋ฅผ ์ํ ํ์ดํผํ๋ผ๋ฏธํฐ์. default=0.0
- Learning Task ํ๋ผ๋ฏธํฐ
- objective: ์ต์๊ฐ์ ๊ฐ์ ธ์ผ ํ ์์คํจ์๋ฅผ ์ ์ํ๋ฉฐ ํ๊ท, ๋ค์คํด๋์ค ๋ถ๋ฅ, ์ด์ง๋ถ๋ฅ์ ๋ฐ๋ผ ์์คํจ์ ์ง์
num_iterations n_estimators n_estimators learning_rate leaning_rate leaning_rate max_depth max_depth max_depth min_data_in_leaf min_child_samples bagging_fraction subsamples subsamples feature_fraction colsample_bytree colsample_bytree lambda_l2 reg_lambda reg_lambda lambda_l1 reg_alpha reg_alpha early_stopping_round early_shoppimg_rounds early_shoppimg_rounds num_leaves num_leaves min_sum_hessian_in_leaf min_child_weight min_child_weight - ์ฃผ์ ํ๋ผ๋ฏธํฐ
- ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋
- num_leaves๋ ๊ฐ๋ณ ํธ๋ฆฌ๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ ๋ฆฌํ์ ๊ฐ์๋ก ๋์ด๋ฉด ์ ํ๋๊ฐ ๋์์ง๋ ํธ๋ฆฌ์ ๊ฐ์ด๊ฐ ๊น์ด์ง๋ฉฐ ๋ชจ๋ธ ๋ณต์ก๋๊ฐ ์ปค์ ธ ๊ณผ์ ํฉ ์ํฅ๋๊ฐ ์ปค์ง
- min_data_in_leaf๋ ์ฌ์ดํท๋ฐ ๋ํผ ํด๋์ค์์ min_child_samples๋ก ์ด๋ฆ์ด ๋ฐ๋๋ฉฐ ๊ณผ์ ํฉ ๊ฐ์ ์ ์ํ ์ค์ํ ํ๋ผ๋ฏธํฐ ์ค ํ๋์. ๊ฐ์ด ํด์๋ก ํธ๋ฆฌ๊ฐ ๊น์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํจ
- max_depth๋ ๋ช ์์ ์ผ๋ก ๊น์ด์ ํฌ๊ธฐ๋ฅผ ์ ํํ๋ฉฐ, num_leaves์ min_data_in_leaf๋ ๊ฒฐํฉํ์ฌ ๊ณผ์ ํฉ์ ๊ฐ์ ํ๋๋ฐ ์ฌ์ฉํจ
- ์์
- https://github.com/cAhyoung/dacon_stars_type_clf/blob/main/practive_code/sklearn_wrapper_lgbm.ipynb
- ํ์ด์ฌ ๋ํผ ์ค์นํ๊ธฐ
- GBM(Gradient Boosting Machine)
# ์๋์ฝ๋ค ํ๋กฌํํธ๋ฅผ ๊ด๋ฆฌ์๊ถํ์ผ๋ก ์คํ
conda install -c conda-forge lightgbm
- ํด๋น ๋ฉ์ธ์ง๋ ๋ค์ ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์ฌ๋ผ์ง ์์ ์ด๋ผ๊ณ ํ๋ ์ฐธ๊ณ ํ์
\\anaconda3\\lib\\site-packages\\lightgbm\\sklearn.py:726: UserWarning: 'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. Pass 'early_stopping()' callback via 'callbacks' argument instead.
_log_warning("'early_stopping_rounds' argument is deprecated and will be removed in a future release of LightGBM. "
\\anaconda3\\lib\\site-packages\\lightgbm\\sklearn.py:736: UserWarning: 'verbose' argument is deprecated and will be removed in a future release of LightGBM. Pass 'log_evaluation()' callback via 'callbacks' argument instead.
_log_warning("'verbose' argument is deprecated and will be removed in a future release of LightGBM. "
'๐ก WIDA > DACON ๋ถ๋ฅ-ํ๊ท' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DACON/๊น์ธ์ฐ] ํ๋ก์ ํธ ์์ธ์ด (4) | 2023.05.05 |
---|---|
[DACON/๊น๊ท๋ฆฌ] ํ๋ก์ ํธ ์์ธ์ด (4) | 2023.05.05 |
[DACON/์ฐธ๊ณ ์๋ฃ] SVM ์ฐธ๊ณ ์๋ฃ (0) | 2023.04.26 |
[DACON/์ต๋ค์] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |
[DACON/๊น๊ท๋ฆฌ] ํ์ด์ฌ์ ์ด์ฉํ EDA (0) | 2023.04.07 |