๋ชฉํ
- RandomForest์ ๋ํ ์ดํด
- Ordinal encoding(์์ํ ์ธ์ฝ๋ฉ)๊ณผ OneHot encoding(์ํซ ์ธ์ฝ๋ฉ)์ ๊ตฌ๋ถํ์ฌ ์ฌ์ฉ
- ๋ฒ์ฃผํ ๋ณ์์ ์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ด ํธ๋ฆฌ๋ชจ๋ธ๊ณผ ์ ํํ๊ท ๋ชจ๋ธ์ ์ฃผ๋ ์ํฅ์ ๋ํด ์ดํด
๋ค์ด๊ฐ๊ธฐ ์
๋ฐ์ดํฐ๊ฐ ์ ํ/๋น์ ํ ์๊ด์์ด ๋ถ๋ฅ๋ฌธ์ ์ ์ ๊ธํ ๋ ๋๋คํฌ๋ ์คํธ๋ฅผ ๋จผ์ ์ ์ฉํด๋ณด๋ ๊ฒ์ ์ถ์ฒ
- ๊ฒฐ์ ํธ๋ฆฌ๋ชจ๋ธ : ํ๊ฐ์ ํธ๋ฆฌ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ ๋ ธ๋์์ ์๊ธด ์๋ฌ๊ฐ ํ๋ถ ๋ ธ๋์์๋ ๊ณ์ ์ํฅ์ ์ค๋๋ค. ๋ํ, ํธ๋ฆฌ์ ๊น์ด์ ๋ฐ๋ผ ๊ณผ์ ํฉ๋๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ๋๋คํฌ๋ ์คํธ๋ฅผ ํตํด ํด๊ฒฐ
ํ
%%time # ์
์คํํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋ณด์ฌ์ค
RandomForest(๋๋คํฌ๋ ์คํธ)
- ๋๋คํฌ๋ ์คํธ๋ Ensemble(์์๋ธ) ๋ฐฉ๋ฒ
- ์์๋ธ ๋ฐฉ๋ฒ์ ํ ์ข ๋ฅ์ ๋ฐ์ดํฐ๋ก ์ฌ๋ฌ ๋จธ์ ๋ฌ๋ ํ์ต๋ชจ๋ธ(๊ธฐ๋ณธ๋ชจ๋ธ, weak base learner)์ ๋ง๋ค์ด ๊ทธ ๋ชจ๋ธ๋ค์ ์์ธก๊ฒฐ๊ณผ๋ฅผ ํ๊ท ๊ฐ(ํ๊ท๋ฌธ์ ) ๋๋ ์ต๋น๊ฐ(๋ถ๋ฅ๋ฌธ์ )์ ๋ด์ด ์์ธกํ๋ ๋ฐฉ๋ฒ. ์ด๋ก ์ ์ผ๋ก ๋ช๊ฐ์ง ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ ์ฌ๋ฌ ์ข ๋ฅ์ ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋๋คํฌ๋ ์คํธ๋ ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ๋ชจ๋ธ๋ก ์ฌ์ฉํ๋ ์์๋ธ ๋ฐฉ๋ฒ
- ๊ฒฐ์ ํธ๋ฆฌ๋ค์ ๋ ๋ฆฝ์ ์ผ๋ก ๋ง๋ค์ด์ง๋ฉฐ ๊ฐ๊ฐ ๋๋ค์ผ๋ก ์์ธกํ๋ ์ฑ๋ฅ๋ณด๋ค ์ข์ ๊ฒฝ์ฐ, ๋๋คํฌ๋ ์คํธ๋ ๊ฒฐ์ ํธ๋ฆฌ๋ณด๋ค ์ฑ๋ฅ์ด ์ข์ต๋๋ค.
Bagging(B
ootstrap Agg
regating
)
Bootstrap sampling(๋ถํธ์คํธ๋ฉ ์ํ๋ง)
- ์์๋ธ์ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๋ชจ๋ธ๋ค์ ๋ถํธ์คํธ๋ํ์ด๋ผ๋ ์ํ๋ง ๊ณผ์ ์ ํตํด ์ป์ ๋ถํธ์คํธ๋ฉ set์ ํตํด ํ์ตํ๊ฒ ๋ฉ๋๋ค.(์๋ณธ ๋ฐ์ดํฐ์์ ๋ณต์ ์ถ์ถ์ ์งํํ๋ ๊ฒ)
$$๋ถํธ์คํธ๋ฉ ์ธํธ์ ํฌ๊ธฐ๊ฐ n์ด๋ผ ํ ๋, ํ ๋ฒ์ ์ถ์ถ๊ณผ์ ์์ ํ ์ํ์ด ์ถ์ถ๋์ง ์์ ํ๋ฅ = \displaystyle \frac {n-1}{n}$$
$$nํ์ ๋ณต์์ถ์ถ์ ์งํ, ๊ทธ ์ํ์ด ์ถ์ถ๋์ง ์์ ํ๋ฅ = \displaystyle \left({\frac {n-1}{n}}\right)^{n}$$
n์ ๋ฌดํํ ํฌ๊ฒ ํ์ ๋,
$$\displaystyle \lim_{{n\to \infty }}\left({1 - \frac {1}{n}}\right)^{n} = e^{-1} = 0.368$$
$$์ฐธ๊ณ : \displaystyle e = \lim_{{n\to \infty }}\left(1+{\frac {1}{n}}\right)^{n}$$
์ฆ, ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ ํฌ๋ค๋ ๊ฐ์ ํ์, ๋ถํธ์คํธ๋ฉ ์ธํธ๋ ํ๋ณธ์ ์ฝ 63.2%์ ํด๋นํ๋ ์ํ์ ๊ฐ์ง๋๋ค.
์ฌ๊ธฐ์ ์ถ์ถ๋์ง ์์ 36.8%์ ์ํ์ด Out-Of-Bag(OOB) ์ํ์ด๋ฉฐ ์ด ๋ฐ์ดํฐ๋ฅผ val set์ผ๋ก ํ์ฌ ๋ชจ๋ธ์ ๊ฒ์ฆํ๋๋ฐ ์ฌ์ฉํ๋ oob_score๊ฐ ์์ต๋๋ค.(๋ฐ์ดํฐ ์๊ฐ ๊ต์ฅํ ์ ์ด, train set์์ ๋ฐ๋ก val set์ ๊ฐ์ ธ์ค๊ธฐ ์ด๋ ค์ธ ๋ oob๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.)
pipe.named_steps['randomforestclassifier'].oob_score_ # ์ด๋ฐ ์์ผ๋ก ์ฌ์ฉํ๋ฉฐ, accuracy ๊ธฐ๋ฐ์ score ์
๋๋ค.
Aggregation(๊ธฐ๋ณธ๋ชจ๋ธ; weak learner ์ ํฉ์น๋ ๊ฒ)
- ๋ถํธ์คํธ๋ฉ ์ธํธ๋ก ๋ง๋ค์ด์ง ๊ธฐ๋ณธ๋ชจ๋ค๋ธ์ ํฉ์น๋ ๊ณผ์ (ํ๊ท๋ฌธ์ : 'ํ๊ท ๊ฐ', ๋ถ๋ฅ๋ฌธ์ : '์ต๋น๊ฐ'(๋ค์๊ฒฐ))
- ๋๋คํฌ๋ ์คํธ๋ ๊ธฐ๋ณธ๋ชจ๋ธ๋ค์ ํธ๋ฆฌ๋ฅผ ๋ง๋ค ๋ ๋ฌด์์๋ก ์ ํํ ํน์ฑ์ธํธ๋ฅผ ์ฌ์ฉ๊ฒฐ์ ํธ๋ฆฌ์์ ๋ถํ ์ ์ํ ํน์ฑ์ ์ ํ ์, ๋ชจ๋ ํน์ฑ(n๊ฐ)๋ฅผ ๊ณ ๋ คํ์ฌ ์ต์ ์ ํน์ฑ์ ๊ณ ๋ฅด๊ณ ๋ถํ
๋๋คํฌ๋ ์คํธ์์๋ ํน์ฑ n๊ฐ ์ค k๊ฐ์ ํน์ฑ์ ์ ํ(sampling)ํ๊ณ ์ด k๊ฐ์ ํน์ฑ ๋ด์์ ๋ถํ ์ ์ค์ํฉ๋๋ค.
$$k = log_2(n)$$
Ordinal Encoder(์์ํ ์ธ์ฝ๋)
- ๋ฒ์ฃผํ ์๋ฃ๋ฅผ ๊ฐ๋ ํน์ฑ์ ์ซ์๋ฅผ ๋งตํํฉ๋๋ค.(์ฆ, ์์๋ฅผ ๋ถ์ฌํ๊ฒ ๋ฉ๋๋ค.) ์ด๋ค ํน์ฑ์ ['a','b','c']์ ๋ฒ์ฃผ๊ฐ ์์ ๋, ์ด ๋ฒ์ฃผ๋ฅผ [1, 2, 3] ์ด๋ฐ์์ผ๋ก ๋์๋น๊ต๊ฐ ๊ฐ๋ฅํ ์ซ์๋ก ์ธ์ฝ๋ฉํฉ๋๋ค.
- ์ํซ์ธ์ฝ๋ฉ๊ณผ์ ์ฐจ์ด : ํธ๋ฆฌ๊ตฌ์กฐ์์๋ ์ํซ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํธ๋ฆฌ๊ตฌ์กฐ์์๋ ์ค์ํ ํน์ฑ์ ๋ํด ์์๋ ธ๋์์ ๋จผ์ ๋ถํ ์ด ์ผ์ด๋ฉ๋๋ค. ํด์ ์ค์ํ ํน์ฑ์ด ๋ฒ์ฃผ ์ข ๋ฅ๊ฐ ๋ง์(high cardinality) ๊ฒฝ์ฐ, ์ํซ์ธ์ฝ๋ฉ์ผ๋ก ์ธํด ์์๋ ธ๋์์ ์ ํ๋ ๊ธฐํ๊ฐ ์ ์ด์ง๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ์ํซ์ธ์ฝ๋ฉ ์ํฅ์ ์๋ฐ๋ ์์นํ ํน์ฑ์ด ์๋์ ์ผ๋ก ์์๋ ธ๋๋ฅผ ์ฐจ์งํ ๊ธฐํ๊ฐ ๋์์ง๊ณ ๊ทธ๋ ๊ฒ ๋๋ฉด ์ ์ฒด์ ์ธ ์ฑ๋ฅ ์ ํ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
- ๋ฒ์ฃผ์ ์ซ์๋ฅผ ๋ถ์ฌํ์ฌ '์์' ๊ฐ๋ ์ด ์๊ฒจ๋ ํธ๋ฆฌ ๋ชจ๋ธ์์๋ ๋ฌธ์ ๊ฐ ์๋จ(์ด์ฐจํผ ๋ถ๋ฅ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์) ๋จ, ์ด ๋ถ๋ถ์ ๋ค์ ํ๋ฒ ์ฐพ์๋ณด๊ณ ๊ณต๋ถํด์ผ๋ ๋ฏํ๋ค.
- ๋๋ ค ์ ํํ๊ท ๋ชจ๋ธ์์๋ ์์ํ ์ธ์ฝ๋ฉ์ ํ์ฌ '์์'๊ฐ ๋ถ์ฌ๋๋ฉด ์๋๋ ๋ฒ์ฃผํ ์๋ฃ์ '์์'๊ฐ ๋ถ์ฌ๋๋ฉด ๋ ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ๋ง์ฝ ๋ฒ์ฃผ์ ์์๋ฅผ ๋ฏธ๋ฆฌ ์๊ณ ์๋ค๋ฉด(๋๋ฉ์ธ ์ง์, ๊ตฌ๊ธ๋ง ๋ฑ์ ํตํด) mapping ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ๊ฐ ๋ฒ์ฃผ๋ง๋ค ์ซ์๋ฅผ ์ง์ ํด์ค ์ ์์ต๋๋ค.
RandomForest๊ฐ DecisionTree ๋ชจ๋ธ๋ณด๋ค ์๋์ ์ผ๋ก ๊ณผ์ ํฉ์ ํผํ ์ ์๋ ์ด์
- ๊ฒฐ์ ํธ๋ฆฌ๋ ๋ฐ์ดํฐ ์ผ๋ถ์ ๊ณผ์ ํฉํ๋ ๊ฒฝํฅ ์กด์ฌ. ์ด๋ฐ ์ ์ ์ญ์ด์ฉํด์ ๊ณผ์ ํฉ๋ ํธ๋ฆฌ๋ฅผ ๋ง์ด ๋ง๋ค๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ๊ท ๋๋ ๋ค์๊ฒฐ๋ก ์ข ํฉํ ๋ชจ๋ธ์ด ๋๋ค ํฌ๋ ์คํธ์ ๋๋ค. ์ด๋ฐ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๊ณผ์ ํฉ์ด ์ค์ด๋ค๊ณ ์ฑ๋ฅ์ด ์ ์ง๋๋ค๊ณ ์๋ ค์ ธ ์์ต๋๋ค.
๋๋คํฌ๋ ์คํธ์์ ํธ๋ฆฌ๋ฅผ ๋๋คํ๊ฒ ๋ง๋๋ ๋๊ฐ์ง ์ ์ฐจ
- ๋๋คํฌ๋ ์คํธ์ ๋ค์ด๊ฐ๋ ํธ๋ฆฌ๋ค์ bagging์ ํตํด ๋ง๋ค์ด์ง๋๋ค.(๋ณต์์ถ์ถ)
- ๊ฐ๊ฐ์ ํธ๋ฆฌ๋ ๋ฌด์์๋ก ์ ํ๋ ํน์ฑ๋ค์ ํตํด ๋ถ๊ธฐ๋ฅผ ์ํํฉ๋๋ค.(ํน์ฑ k๊ฐ ์ ๋ํด ๋ถ๊ธฐ)
RandomForest ์๊ณ ๋ฆฌ์ฆ
S : ์ ์ฒด ํธ๋ ์ด๋ ์ -> s : ๋ถํธ์คํธ๋ฉ ๋ฐ์ดํฐ ์
F : ์ ์ฒด ํน์ฑ -> f : ์ ๋ณ๋ ํน์ฑ ($log_2 n$)
B : ๋๋ํฌ๋ ์คํธ ์์ ๊ฐ๊ฐ์ ํธ๋ฆฌ
H : ํฌ๋ ์คํธ -> h : ํธ๋ฆฌ
'๐ฟ Data > ๋ถํธ์บ ํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[TIL]31.Model Selection(๋ชจ๋ธ ์ ํ) (0) | 2021.12.30 |
---|---|
[TIL]30.Evaluation Metrics for Classification(Precision, Recall, f1score, threshold, ROC curve, AUC) (0) | 2021.12.29 |
[TIL]28.Decision Tree(์์ฌ๊ฒฐ์ ๋๋ฌด) (0) | 2021.12.26 |
[TIL]27.Section2_sprint1 challenge (0) | 2021.12.24 |
[TIL]26.Logistic Regression(๋ก์ง์คํฑ ํ๊ท; ๋ถ๋ฅ) (0) | 2021.12.22 |