1. ์์ ์์ ์ธ๊ธ๋์ง ์์ ๋ค๋ฅธ ์ข ๋ฅ์ category_encoders๋ฅผ 2๊ฐ ์ด์ ์ฌ์ฉํด ๊ฒฐ๊ณผ๋ฅผ ๊ณต์ ํด ๋ณด์๊ณ , ๋ค์ ์ง๋ฌธ์ ๋ํด ์๋ก ๋ ผ์ํด ๋ณด์ธ์. ์ฌ์ฉํ์ encoder๋ ๊ฐ๊ฐ ์ด๋ค ์ฅ๋จ์ ์ ๊ฐ๊ณ ์์ผ๋ฉฐ, ์ด๋ค ์ํฉ์์ ์ฌ์ฉํ๋ฉด ์ข์๊น์?
์ฌ๋ฌ ์ธ์ฝ๋ ์ค TargetEncoder์ CatBoostEncoder๊ฐ ๊ฐ์ฅ ํฅ๋ฏธ๊ฐ ์๊ฒจ ์ ์ฉํด๋ณด์์ต๋๋ค.
- OrdinalEncoder(๊ธฐ์ค)
ํผํ ์ ์๊ฐ : 4.27 s
์ ํ๋ ๋ฐ f1 score
- ํน์ฑ ์ค์๋
- TargetEncoder
ํผํ ์ ์๊ฐ : 5.29 s
์ ํ๋ ๋ฐ f1 score
- ํน์ฑ ์ค์๋
- CatBoostEncoder
ํผํ ์ ์๊ฐ : 14.1 s
์ ํ๋ ๋ฐ f1 score
- ํน์ฑ ์ค์๋
๋ ๊ฐ์ง์ ์ธ์ฝ๋๋ฅผ ์ค์ ํ ์ด์ ๋ ์์ธํ๋ ๋ชจ๋ฅด์ง๋ง, CatBoostEncoder๊ฐ TargetEncoder๋ณด๋ค ๊ฐ์ ๊ณ์ด์ ์์ ์ธ์ฝ๋(?) ๊ฐ์ CatBoostEncoder ํ๋๋ฅผ ์ ๋๋ก ๋ณด์ ๋ผ๋ ๋ง์์ด์์ต๋๋ค.
CatBoostEncoder๋ฅผ ์ค์ฌ์ผ๋ก ์ค๋ช ์ ํด๋ณด๊ฒ ์ต๋๋ค.
CatBoostEncoder์ ํน์ง
- Ordered Targeting Encoding
Target Encoding์ด๋
- ๋ฒ์ฃผํ ๋ณ์๋ฅผ ์ธ์ฝ๋ฉ์ํฌ ๋, target์ ๊ฐ์ ๊ณ ๋ คํ ์ซ์๋ฅผ ์ธ์ฝ๋ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์์๋ ์๋์ ๊ฐ์ต๋๋ค.
์์ ์ฌ์ง์์ cloudy ๋ฒ์ฃผ๋ ๊ฐ cloudy ๊ด์ธก์น๋ค์ด ๊ฐ์ง target ๊ฐ์ ํ๊ท ์ผ๋ก ์ธ์ฝ๋ฉ์ด ๋ ๊ฒ์ ๋๋ค.
cloudy = (15 +14 +20 + 25)/4 = 18.5
Ordered Target Encoding์ด๋
์์ Target Encoding์ ๋ฌธ์ ๋, ํน์ฑ์ ํ๊ฒ๊ฐ์ด ๋ฐ์๋์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๋์์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ด๋ก ์ธํด ๋น์ฐํ ์ค๋ฒํผํ ์ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด 'ํ์ฌ ๋ฐ์ดํฐ์ ์ธ์ฝ๋ฉํ๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ค์ ํ๊ฒ๊ฐ'์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด Ordered Target Encoding ์ ๋๋ค.
- Friday ์๋, cloudy = (15+14)/2 = 15.5 ๋ก ์ธ์ฝ๋ฉ ๋๋ค.
- Saturday ์๋, cloudy = (15+14+20)/3 = 16.3 ๋ก ์ธ์ฝ๋ฉ ๋๋ค.
์ฆ, ํ์ฌ ๋ฐ์ดํฐ์ ํ๊ฒ๊ฐ์ ์ฌ์ฉํ์ง ์์์ผ๋ก์จ ๋ฐ์ดํฐ ๋์๋ฅผ ๋ง๊ณ ์ค๋ฒํผํ ๋ ๋ง์ผ๋ฉด์ ์์น๊ฐ์ ๋ค์์ฑ๋ ๋ถ์ฌํด์ฃผ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- Level-wise Tree( vs Leaf-wise Tree)
์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด Tree model์ด ๋ถ๊ธฐ๋ฅผ ํ๋ ์์์ ๋ฐ๋ผ ๋๋์ด์ง๋๋ค. max depth์ ์ ํ์ด ์๋ค๋ฉด ๊ฒฐ๊ตญ์ ์ต์ข ์ ์ผ๋ก ๋ ๋ฐฉ๋ฒ์ ๊ฐ์ ๋ชจ๋ธ์ ํ์ตํ๊ฒ ๋ฉ๋๋ค. ๋ค๋ง, max depth๊ฐ ์ ํ๋ ์ํฉ์ด๋ผ๋ฉด Leaf-wise ๋ฐฉ๋ฒ์ด ์ข๋ '์๋ฆฌํ๊ฒ' ๋ถ๊ธฐ๋ฅผ ์ํํ๋ค๊ณ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.(๊ทธ์ depth๋ฅผ ๋๋ฆด์๋ก ๋ถ๊ธฐํ๋ ๊ฒ ์๋, ๊ฐ ๋ ธ๋์ information gain์ ์ ๋๋ฅผ ๋น๊ตํ๋ฉด์ ๊ฐ์ฅ ํฐ gain์ ์ป๋ ๋ ธ๋๋ถํฐ ๋ถ๊ธฐ๋ฅผ ํ๊ธฐ ๋๋ฌธ)
- Oredered Boosting
Boosting์ด๋ ( vs Bagging)
- Bagging์ '์ํ์ ์ฌ๋ฌ๋ฒ ๋ฝ์ ๊ฐ ๋ชจ๋ธ์ ํ์ต์์ผ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณ(Aggregating)ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- Boosting์ ์ข ๋ ์ด๋ ค์ด ๋ฌธ์ ๋ฅผ ๋ง์ถ๋๋ฐ ์ด์ ์ด ๋ง์ถฐ์ ธ์์ต๋๋ค. Bagging๊ณผ ๋์ผํ๊ฒ ๋ณต์ ๋๋ค ์ํ๋ง์ ํ์ง๋ง ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ๋ค๋ ์ฐจ์ด์ ์ด ์์ต๋๋ค.
- Bagging์ด ๋ณ๋ ฌ์ ์ผ๋ก ํ์ต์ ํ๋ ๋ฐ๋ฉด, Boosting์ ์์ฐจ์ ์ผ๋ก ํ์ต์ ํ๋ฉฐ ํ์ต์ด ๋๋๋ฉด ๋์จ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ๊ฐ์ค์น๋ฅผ ์ฌ๋ถ๋ฐฐํฉ๋๋ค.(๋ฐ์ดํฐ์ ๊ฐ์ ์์ฐจ๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ ์์ฐจ๋ฅผ ๊ณ์ ๊ฐ์์ํค๋ ๋ชจ๋ธ์ ํ์ต)
- ์ค๋ต์ ๋ํด ๋์ ๊ฐ์ค์น, ์ ๋ต์ ๋ํด ๋ฎ์ ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํจ์ผ๋ก์จ ์ค๋ต์ ๋ ์ง์คํ ์ ์๊ฒ ํฉ๋๋ค. ๊ทธ๋ก ์ธํด ์ ํ๋๊ฐ ๋๋ค๋ ์ฅ์ ์ด ์์ง๋ง, Outlier์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
- Bagging์ด variance๋ฅผ ๊ฐ์์ํค๋ ์ญํ ์ ํ๋ค๋ฉด, Boosting์ bias๋ฅผ ๊ฐ์์ํค๋ ์ญํ ์ ํฉ๋๋ค.
Ordered Boosting์ด๋
๊ธฐ์กด Boosting์์ ์ผ๊ด์ ์ผ๋ก ๋ชจ๋ train set์ ๋์์ผ๋ก ์์ฐจ๋ฅผ ๊ณ์ฐํ๋ค๋ฉด CatBoost๋ ์ผ๋ถ๋ฅผ ํตํด ์์ฐจ๋ฅผ ๊ณ์ฐํ ๋ค, ์ด๊ฑธ ๋ชจ๋ธ๋ก ๋ง๋ค๊ณ ๊ทธ ๋ค์ ๋ฐ์ดํฐ์ ์์ฐจ๋ ๋ชจ๋ธ๋ก ์์ธกํ ๊ฐ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๋์ ๊ฐ์ต๋๋ค.
- ๋จผ์ x1 ์ ์์ฐจ๋ง ๊ณ์ฐํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ธ์ ๋ง๋ ๋ค. ๊ทธ๋ฆฌ๊ณ x2 ์ ์์ฐจ๋ฅผ ์ด ๋ชจ๋ธ๋ก ์์ธกํ๋ค.
- x1, x2 ์ ์์ฐจ๋ฅผ ๊ฐ์ง๊ณ ๋ชจ๋ธ์ ๋ง๋ ๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก x3, x4 ์ ์์ฐจ๋ฅผ ๋ชจ๋ธ๋ก ์์ธกํ๋ค.
- x1, x2, x3, x4 ๋ฅผ ๊ฐ์ง๊ณ ๋ชจ๋ธ์ ๋ง๋ ๋ค. ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก x5, x6, z7, x8 ์ ์์ฐจ๋ฅผ ๋ชจ๋ธ๋ก ์์ธกํ๋ค.
- ... ๋ฐ๋ณต
- Random Permutation
- ์์ Ordered Boosting ์, ๋ฐ์ดํฐ์ ์์๋ฅผ ์์ด์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค. (์์ด์ฃผ์ง ์์ผ๋ฉด ๋งค๋ฒ ๊ฐ์ ์์๋๋ก ์์ฐจ๋ฅผ ์์ธกํ๋ ๋ชจ๋ธ์ด ๋ง๋ค์ด์ง๊ธฐ ๋๋ฌธ)
- Categorical Feature Combination
์๋ฅผ ๋ค์ด
์์ ๊ฒฝ์ฐ, country์ hair color ๋ณ์ ์ค ํ๋๋ง ์์ด๋ label์ ์์ธกํ ์ ์์ต๋๋ค. ์ฆ, information gain์ด ๋์ผํ feature๋ฅผ ํ๋๋ก ๋ฌถ์ด์ฃผ๋ ํน์ง์ด ์์ต๋๋ค.
- OneHot Encoding
CatBoostEncoder๋ ๋ฒ์ฃผํ ๋ณ์์ ํญ์ Target Encoding์ ํ๋ ๊ฒ์ด ์๋๋๋ค. ๋ฎ์ Cardinality๋ฅผ ๊ฐ๋ ๋ณ์์ ๋ํด์๋ ๊ธฐ๋ณธ์ ์ผ๋ก OneHot ์ธ์ฝ๋ฉ์ ์ํํฉ๋๋ค. ์ฌ๊ธฐ์ ์ด ๊ธฐ์ค์ ์ ํ๋ ํ๋ผ๋ฏธํฐ๋ one_hot_max_size
์
๋๋ค. 3์ผ๋ก ์ค์ ํ๋ฉด, cardinality๊ฐ 3์ดํ์ธ ๋ณ์๋ OneHot ์ธ์ฝ๋ฉ์ ์ค์ํฉ๋๋ค.
- Optimized Parameter tuning
๊ธฐ๋ณธ ํ๋ผ๋ฏธํฐ์ ์ต์ ํ๊ฐ ์๋์ด์์ด์, ํ๋์ ํฌ๊ฒ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋๋ค๊ณ ํฉ๋๋ค. ๋๋ถ๋ถ ๋ถ์คํ ๋ชจ๋ธ๋ค์ด ํ๋ผ๋ฏธํฐ๋ฅผ ํ๋ํ๋ ์ด์ ๋, ํธ๋ฆฌ์ ๋คํ์ฑ๊ณผ ์ค๋ฒํผํ ๋ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํจ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์์ ํน์ง๋ค์ ๋ณด์๋ค์ํผ ๋ด๋ถ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์์ฒด๋ก ์ด๋ฐ ๋ฌธ์ ๋ค์ ํด๊ฒฐํ๊ณ ์์ด ํ๋ผ๋ฏธํฐ์ ์กฐ์ ์ด ๊ฒฐ๊ณผ๊ฐ์ ํฐ ์ํฅ์ ๋ผ์น์ง ์๋๋ค๊ณ ํฉ๋๋ค.
2. ์ ํธ๋ฆฌ๋ชจ๋ธ์์๋ ordinal encoding์ ์ฃผ๋ก ์ฌ์ฉํ๋ฉฐ (one-hot encoding๋์ ), ๋ฒ์ฃผํ ์๋ฃ๋ฅผ ordinal encoding์ผ๋ก ์ฌ์ฉํด๋ ๋๋ ์ด์ ๋ ๋ฌด์์ด๋ผ๊ณ ์๊ฐํ์๋์ง ๋ ผ์ํด ๋ณด์ธ์
- ์ผ๋จ ๊ธฐ๋ณธ์ ์ผ๋ก OneHot ์ธ์ฝ๋ฉ์ ๊ฒฝ์ฐ ๋ณ์๋ฅผ ๋๋ฆฌ๋ ํน์ง์ด ์์ด, ํน์ฑ ์ค์๋๊ฐ ๋์ ํน์ฑ์ information gain์ ๋ถ์ฐ์ํค๋ ํจ๊ณผ๋ฅผ ์ฃผ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ํน์ฑ์ ํน์ฑ ์ค์๋๋ฅผ ์ ์งํ๋ฉด์ ๋ฒ์ฃผํ ๋ณ์๋ฅผ ์ซ์๋ก ๋ฐ๊ฟ์ฃผ๋ Ordinal ์ธ์ฝ๋ฉ์ด ๋ ์ ํฉํด๋ณด์ ๋๋ค. ์ด ๋, ๋ฒ์ฃผํ ๋ณ์ ์ค์์๋ '์์'๊ฐ๋ ์ด ๋ค์ด๊ฐ๋ ๋๋ ๊ฒฝ์ฐ์ ์๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ, max_depth์ ๋ํ ์ ํ์ด ์๋ค๋ฉด ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์๋ํ๋ฉด, max_depth์ ์ ํ์ด ์๋ค๋ฉด, ๋ ธ๋๋ค์ ๋ถ๊ธฐ๋ ๊ณ์ ์ผ์ด๋ ์ ์๊ณ ๊ฐ ๋ ธ๋์์์ ๋ถ๊ธฐ ์กฐ๊ฑด์ ์ฌ์ฉ๋์๋ feature๋ ๊ณ์ ์ฌ์ฉ๋ ์ ์๊ธฐ ๋๋ฌธ์(information gain๋ง ๋๋ค๋ฉด) ์์์ด ๋ค์ด๊ฐ์ ์ด๋ค '๊ฒฝํฅ์ฑ'์ ๊ฐ๋ ๊ฑด ๋ฌธ์ ๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋ค๋ง, max_depth๊ฐ ์ ํ๋๋ ์ํฉ์์๋ ๋ ธ๋์ ๋ถ๊ธฐ๊ฐ ์ค๊ฐ์ ์ ํ๋๊ธฐ ๋๋ฌธ์ ์๋์น ์๊ฒ ์๊ธด ์์๋ก ์ธํ '๊ฒฝํฅ์ฑ'์ด ์ ์๋ฏธํ ์ํฅ์ ๋ผ์น ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์์ ์ ์ฉ๋ encoder์ ๋ฐ๋ฅธ score ๊ฐ์ ๋ณํ์ ๋ํ ๋ถ์์ ์ถํ ๋ ๊ณต๋ถํ์ฌ ์งํํ๊ฒ ์ต๋๋ค..!
์ด์์ ๋๋ค. ๊ฐ์ฌํฉ๋๋ค! :)
์ฐธ๊ณ 1:CatBoostEncoder
์ฐธ๊ณ 2:CatBoostEncoder
์ฐธ๊ณ 3:TargetEncoder
์ฐธ๊ณ 4:Leaf-wise vs Level-wise
์ฐธ๊ณ 5:Bagging vs Boosting
์ฐธ๊ณ 6:Bagging vs Boosting
'๐ฟ Data > ์ด๋ชจ์ ๋ชจ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
HyperParameter tuning (0) | 2022.01.01 |
---|---|
Evaluation metrics for Classification (0) | 2021.12.31 |
์๊ฐํ๋ฅผ ํตํด ํ์ธํ Imputer์ ์ฐจ์ด (0) | 2021.12.26 |
Ridge regression, ๋ชจ๋ธ ์ฑ๊ณผ ํ๊ฐ ์งํ, OneHotencoding, feature selection (0) | 2021.12.23 |
์๋ก์ด ํน์ฑ(ํน์ฑ๊ณตํ), ์ด์์น, Scaler, ๋ชจ๋ธ ์ฑ๋ฅ ํฅ์ (0) | 2021.12.23 |