About LGBM - SoMinHyung/2020MiraeAsset GitHub Wiki
!pip install lightgbm==2.2.3
์์๋ฒ์ ์์๋ feature๊ฐ ํ๊ธ์ด๋ฉด ์ธ์์ ํ์ง ๋ชปํ๋ค๊ณ ํจ.
Light GBM์ Gradient Boosting ํ๋ ์ํฌ๋ก Tree ๊ธฐ๋ฐ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
๊ธฐ์กด์ Tree ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ค๋ฅธ ์ ์ Light GBM์ Tree๊ฐ ์์ง์ ์ผ๋ก ํ์ฅ๋๋ ๋ฐ๋ฉด์ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ Tree๊ฐ ์ํ์ ์ผ๋ก ํ์ฅ๋๋ค๋ ์ ์ด๋ค.
์ฆ, Light GBM์ leaf-wise ์ธ ๋ฐ๋ฉด ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ level-wise ์ด๋ค.
ํ์ฅํ๊ธฐ ์ํด์ max delta loss๋ฅผ ๊ฐ์ง leaf๋ฅผ ์ ํํ๊ฒ ๋๋ค.
๋์ผํ leaf๋ฅผ ํ์ฅํ ๋, leaf-wise ์๊ณ ๋ฆฌ์ฆ์ level-wise ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋ ๋ง์ loss, ์์ค์ ์ค์ผ ์ ์๋ค.
์ฅ์ : Light GBM์ ํฐ ์ฌ์ด์ฆ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์๊ณ ์คํ์ํฌ ๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํฉ๋๋ค. ๋ ๊ฒฐ๊ณผ์ ์ ํ๋์ ์ด์ ์ ๋ง์ถฐ์ ํ์ตํ๋ค.
๋จ์ : ํ๋ผ๋ฏธํฐ๊ฐ 100๊ฐ๊ฐ ๋์ด์ ์ฌ์ฉํ๊ธฐ ๋ณต์กํ ๋ถ๋ถ์ด ์๋ค.
-
max_depth : Tree์ ์ต๋ ๊น์ด๋ฅผ ๋งํฉ๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ ๋ชจ๋ธ ๊ณผ์ ํฉ์ ๋ค๋ฃฐ ๋ ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ฝ ์ฌ๋ฌ๋ถ์ ๋ชจ๋ธ์ด ๊ณผ์ ํฉ๋ ๊ฒ ๊ฐ๋ค๊ณ ๋๋ผ์ ๋ค๋ฉด ์ ์กฐ์ธ์ max_depth ๊ฐ์ ์ค์ด๋ผ๋ ๊ฒ์ ๋๋ค.
-
min_data_in_leaf : Leaf๊ฐ ๊ฐ์ง๊ณ ์๋ ์ต์ํ์ ๋ ์ฝ๋ ์์ ๋๋ค. ๋ํดํธ๊ฐ์ 20์ผ๋ก ์ต์ ๊ฐ์ ๋๋ค. ๊ณผ์ ํฉ์ ํด๊ฒฐํ ๋ ์ฌ์ฉ๋๋ ํ๋ผ๋ฏธํฐ์ ๋๋ค.
-
feature_fraction : Boosting (๋์ค์ ๋ค๋ค์ง ๊ฒ์ ๋๋ค) ์ด ๋๋ค ํฌ๋ ์คํธ์ผ ๊ฒฝ์ฐ ์ฌ์ฉํฉ๋๋ค. 0.8 feature_fraction์ ์๋ฏธ๋ Light GBM์ด Tree๋ฅผ ๋ง๋ค ๋ ๋งค๋ฒ ๊ฐ๊ฐ์ iteration ๋ฐ๋ณต์์ ํ๋ผ๋ฏธํฐ ์ค์์ 80%๋ฅผ ๋๋คํ๊ฒ ์ ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
-
bagging_fraction : ๋งค๋ฒ iteration์ ๋ ๋ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ์ ์ผ๋ถ๋ฅผ ์ ํํ๋๋ฐ ํธ๋ ์ด๋ ์๋๋ฅผ ๋์ด๊ณ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
-
early_stopping_round : ์ด ํ๋ผ๋ฏธํฐ๋ ๋ถ์ ์๋๋ฅผ ๋์ด๋๋ฐ ๋์์ด ๋ฉ๋๋ค. ๋ชจ๋ธ์ ๋ง์ฝ ์ด๋ค validation ๋ฐ์ดํฐ ์ค ํ๋์ ์งํ๊ฐ ์ง๋ early_stopping_round ๋ผ์ด๋์์ ํฅ์๋์ง ์์๋ค๋ฉด ํ์ต์ ์ค๋จํฉ๋๋ค. ์ด๋ ์ง๋์น iteration์ ์ค์ด๋๋ฐ ๋์์ด ๋ฉ๋๋ค.
-
lambda : lambda ๊ฐ์ regularization ์ ๊ทํ๋ฅผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฐ์ ๋ฒ์๋ 0 ์์ 1 ์ฌ์ด์ ๋๋ค.
-
min_gain_to_split : ์ด ํ๋ผ๋ฏธํฐ๋ ๋ถ๊ธฐํ๊ธฐ ์ํด ํ์ํ ์ต์ํ์ gain์ ์๋ฏธํฉ๋๋ค. Tree์์ ์ ์ฉํ ๋ถ๊ธฐ์ ์๋ฅผ ์ปจํธ๋กคํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
-
max_cat_group : ์นดํ ๊ณ ๋ฆฌ ์๊ฐ ํด ๋, ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๋ ๋ถ๊ธฐ ํฌ์ธํธ๋ฅผ ์ฐพ์ต๋๋ค. ๊ทธ๋์ Light GBM ์๊ณ ๋ฆฌ์ฆ์ด ์นดํ ๊ณ ๋ฆฌ ๊ทธ๋ฃน์ max_cat_group ๊ทธ๋ฃน์ผ๋ก ํฉ์น๊ณ ๊ทธ๋ฃน ๊ฒฝ๊ณ์ ์์ ๋ถ๊ธฐ ํฌ์ธํธ๋ฅผ ์ฐพ์ต๋๋ค. ๋ํดํธ ๊ฐ์ 64 ์ ๋๋ค.
-
Task : ๋ฐ์ดํฐ์ ๋ํด์ ์ํํ๊ณ ์ ํ๋ ์๋ฌด๋ฅผ ๊ตฌ์ฒดํํฉ๋๋ค. train ํธ๋ ์ด๋์ผ ์๋ ์๊ณ predict ์์ธก์ผ ์๋ ์์ต๋๋ค.
-
application : ๊ฐ์ฅ ์ค์ํ ํ๋ผ๋ฏธํฐ๋ก, ๋ชจ๋ธ์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ ํ๋๋ฐ ์ด๊ฒ์ด regression ํ๊ท๋ถ์ ๋ฌธ์ ์ธ์ง ๋๋ classification ๋ถ๋ฅ ๋ฌธ์ ์ธ์ง๋ฅผ ์ ํฉ๋๋ค. Light GBM์์ ๋ํดํธ๋ regression ํ๊ท๋ถ์ ๋ชจ๋ธ์ ๋๋ค.
- regression: ํ๊ท๋ถ์
- binary: ์ด์ง ๋ถ๋ฅ
- multiclass: ๋ค์ค ๋ถ๋ฅ
- boosting : ์คํํ๊ณ ์ ํ๋ ์๊ณ ๋ฆฌ์ฆ ํ์ ์ ์ ์ํฉ๋๋ค. ๋ํดํธ๊ฐ์ gdbt ์ ๋๋ค.
- gdbt : Traditional Gradient Boosting Decision Tree
- rf : Random Forest
- dart : Dropouts meet Multiple Additive Regression Trees
- goss : Gradient-based One-Side Sampling
- num_boost_round : boosting iteration ์๋ก ์ผ๋ฐ์ ์ผ๋ก 100 ์ด์์ ๋๋ค.
-
learning_rate : ์ต์ข ๊ฒฐ๊ณผ์ ๋ํ ๊ฐ๊ฐ์ Tree์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ์์ ๋๋ค. GBM์ ์ด๊ธฐ์ ์ถ์ ๊ฐ์์ ์์ํ์ฌ ๊ฐ๊ฐ์Tree ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉํ์ฌ ์ถ์ ๊ฐ์ ์ ๋ฐ์ดํธ ํฉ๋๋ค. ํ์ต ํ๋ผ๋ฏธํฐ๋ ์ด๋ฌํ ์ถ์ ์์ ๋ฐ์ํ๋ ๋ณํ์ ํฌ๊ธฐ๋ฅผ ์ปจํธ๋กคํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๊ฐ์ 0.1, 0.001, 0.003 ๋ฑ๋ฑ์ด ์์ต๋๋ค.
-
num_leaves : ์ ์ฒด Tree์ leave ์ ์ด๊ณ , ๋ํดํธ๊ฐ์ 31์ ๋๋ค.
-
device : ๋ํดํธ ๊ฐ์ cpu ์ธ๋ฐ gpu๋ก ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค.