์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฆฌ์กํธ
- cs231n
- ์๋ฒ ๋ฉ
- ์ธํ๋ฐ
- Titanic
- ๋ค์ดํฐ๋ธ
- ์ ํ๋์ํ
- ๋ฐฑ์ค
- ์ํ์ฝ๋ฉ
- ๊ฒฐ์ ํธ๋ฆฌ
- ๋ฐ์ดํฐ์๊ฐํ
- nlp
- ๋จธ์ ๋ฌ๋
- ๋ถ์
- linearalgebra
- ๋ฐ์ดํฐ๋ถ์
- AI
- ํ์ดํ๋
- Kaggle
- Git
- ์๊ณ ๋ฆฌ์ฆ
- ์๋๋ก์ด๋์คํ๋์ค
- react
- c++
- ํ๊ตญ์ด์๋ฒ ๋ฉ
- ๋ฅ๋ฌ๋
- ๋ฐ์ดํฐ
- ๊นํ
- native
- ๋์
- Today
- Total
yeon's ๐ฉ๐ป๐ป
์์ ๋ค์ ๊ธฐ๋ ๊ฒฐ์ ํธ๋ฆฌ(Decision Tree) ๋ค์ ์ ๋ฆฌํ๊ธฐ ํธํธ ๋ณธ๋ฌธ
์์ ๋ค์ ๊ธฐ๋ ๊ฒฐ์ ํธ๋ฆฌ(Decision Tree) ๋ค์ ์ ๋ฆฌํ๊ธฐ ํธํธ
yeon42 2021. 11. 3. 19:00๋จธ์ ๋ฌ๋ - 4. ๊ฒฐ์ ํธ๋ฆฌ(Decision Tree)
๊ฒฐ์ ํธ๋ฆฌ(Decision Tree, ์์ฌ๊ฒฐ์ ํธ๋ฆฌ, ์์ฌ๊ฒฐ์ ๋๋ฌด๋ผ๊ณ ๋ ํจ)๋ ๋ถ๋ฅ(Classification)์ ํ๊ท(Regression) ๋ชจ๋ ๊ฐ๋ฅํ ์ง๋ ํ์ต ๋ชจ๋ธ ์ค ํ๋์ ๋๋ค. ๊ฒฐ์ ํธ๋ฆฌ๋ ์ค๋ฌด๊ณ ๊ฐ ํ๋ฏ์ด ์/์๋์ค ์ง๋ฌธ์
bkshin.tistory.com
์ ๋ธ๋ก๊ทธ๋ฅผ ํ์ฌํ๋ฉฐ ๊ณต๋ถ
* ๋ชจ๋ ํ ์คํธ์ ์ด๋ฏธ์ง์ ์ถ์ฒ๋ ์ ๋ธ๋ก๊ทธ์ ๋๋ค.
* ๊ฒฐ์ ํธ๋ฆฌ (Decision Tree)
: ํน์ ๊ธฐ์ค(์ง๋ฌธ)์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ๋ถํ๋ ๋ชจ๋ธ
- ํ ๋ฒ์ ๋ถ๊ธฐ ๋๋ง๋ค ๋ณ์ ์์ญ์ ๋ ๊ฐ๋ก ๊ตฌ๋ถ
- ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์ ๊ตฌ๋ถํ ์ ์๋ ์ง๋ฌธ๋ค๋ก ๊ธฐ์ค์ ๋๋
- ์ง๋์น๊ฒ ๋ง์ด ํ๋ฉด ์์ฒ๋ผ ์ค๋ฒํผํ ์ด ๋จ.
- ๊ฒฐ์ ํธ๋ฆฌ์ ์๋ฌด ํ๋ผ๋ฏธํฐ๋ฅผ ์ฃผ์ง ์๊ณ ๋ชจ๋ธ๋งํ๋ฉด ์ค๋ฒํผํ ์ด ๋จ
๊ฐ์ง์น๊ธฐ(Pruning)
: ์ค๋ฒํผํ ์ ๋ง๊ธฐ ์ํ ์ ๋ต
- ํธ๋ฆฌ์ ์ต๋ ๊น์ด๋ ํฐ๋ฏธ๋ ๋ ธ๋์ ์ต๋ ๊ฐ์, or ํ ๋ ธ๋๊ฐ ๋ถํ ํ๊ธฐ ์ํ ์ต์ ๋ฐ์ดํฐ ์ ์ ํ
- min_sample_split ํ๋ผ๋ฏธํฐ๋ฅผ ์กฐ์ ํ์ฌ ํ ๋ ธ๋์ ๋ค์ด์๋ ์ต์ ๋ฐ์ดํฐ ์๋ฅผ ์ ํด์ค ์ ์์
ex. min_sample_split=10์ด๋ผ๋ฉด, ํ ๋ ธ๋์ 10๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์์ ๊ฒฝ์ฐ ๊ทธ ๋ ธ๋๋ ๋ ์ด์ ๋ถ๊ธฐ x
- max_depth๋ฅผ ํตํด ์ต๋ ๊น์ด ์ง์ ๊ฐ๋ฅ
ex. max_depth=4๋ผ๋ฉด, ๊น์ด๊ฐ 4๋ณด๋ค ํฌ๊ฒ ๊ฐ์ง๋ฅผ ์น์ง ์์
์ํธ๋กํผ(Entropy), ๋ถ์๋(Impurity)
- ๋ถ์๋(Impurity): ํด๋น ๋ฒ์ฃผ ์์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ผ๋ง๋ ์์ฌ ์๋์ง๋ฅผ ๋ปํจ
- ์ ๊ทธ๋ฆผ์์ ์์ชฝ ๋ฒ์ฃผ๋ ๋ถ์๋๊ฐ ๋ฎ๊ณ , ์๋์ชฝ ๋ฒ์ฃผ๋ ๋ถ์๋๊ฐ ๋๋ค.
- ํ ๋ฒ์ฃผ์ ํ๋์ ๋ฐ์ดํฐ๋ง ์๋ค๋ฉด ๋ถ์๋๊ฐ ์ต์์ด๊ณ , ํ ๋ฒ์ฃผ ์์ ์๋ก ๋ค๋ฅธ ๋ ๋ฐ์ดํฐ๊ฐ ์ ํํ ๋ฐ๋ฐ์ด๋ผ๋ฉด ๋ถ์๋๊ฐ ์ต๋
- ๊ฒฐ์ ํธ๋ฆฌ๋ ๋ถ์๋๋ฅผ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ํ์ต์ ์งํํจ
- ์ํธ๋กํผ(Entropy): ๋ถ์๋๋ฅผ ์์น์ ์ผ๋ก ๋ํ๋ธ ์ฒ๋
- ์ํธ๋กํผ๊ฐ ๋๋ค=๋ถ์๋๊ฐ ๋๋ค / ์ํธ๋กํผ๊ฐ ๋ฎ๋ค=๋ถ์๋๊ฐ ๋ฎ๋ค
- ์ํธ๋กํผ๊ฐ 1 = ๋ถ์๋ ์ต๋ (ํ ๋ฒ์ฃผ ์์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ ํํ ๋ฐ๋ฐ ์๋ค.)
- ์ํธ๋กํผ๊ฐ 0 = ๋ถ์๋ ์ต์ (ํ ๋ฒ์ฃผ ์์ ํ๋์ ๋ฐ์ดํฐ๋ง ์กด์ฌ)
(Pi = ํ ์์ญ ์์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ๊ฐ์ด๋ฐ ๋ฒ์ฃผ i์ ์ํ๋ ๋ฐ์ดํฐ์ ๋น์จ)
(์์ )
- P_slow = 2/4 = 0.5
- P_fast = 0.5
->> ์ํธ๋กํผ: 1 (์ ํํ ๋ฐ๋ฐ ์๋ค.)
์ ๋ณด ํ๋ (Information gain)
: ๋ถ๊ธฐ ์ด์ ์ ์ํธ๋กํผ์์ ๋ถ๊ธฐ ์ดํ์ ์ํธ๋กํผ๋ฅผ ๋บ ์์น
- ์ํธ๋กํผ๊ฐ 1์ธ ์ํ์์ 0.7๋ก ๋ฐ๋์๋ค๋ฉด ์ ๋ณด ํ๋์ 0.3
Information gain = entropy(parent) - [weighted average]entropy(children)
- entropy(parent): ๋ถ๊ธฐ ์ด์ ์ ์ํธ๋กํผ
- entropy(children): ๋ถ๊ธฐ ์ดํ์ ์ํธ๋กํผ
- [weighted average]entropy(children): entropy(children)์ ๊ฐ์ค ํ๊ท
- ๋ถ๊ธฐ ์ดํ ์ํธ๋กํผ์ ๋ํด ๊ฐ์ค ํ๊ท ์ ํ๋ ์ด์ : ๋ถ๊ธฐ๋ฅผ ํ๋ฉด ๋ฒ์ฃผ๊ฐ 2๊ฐ ์ด์์ผ๋ก ์ชผ๊ฐ์ง๊ธฐ ๋๋ฌธ
- ๋ฒ์ฃผ๊ฐ 1๊ฐ๋ผ๋ฉด ์ ์ํธ๋กํผ ๊ณต์์ผ๋ก ๋ฐ๋ก ์ํธ๋กํผ ๊ตฌํ ์ ์์ง๋ง
- ๋ฒ์ฃผ๊ฐ 2๊ฐ ์ด์์ด๋ผ๋ฉด ๊ฐ์ค ํ๊ท ์ ํ์ฉํด ๋ถ๊ธฐ ์ดํ ์ํธ๋กํผ๋ฅผ ๊ตฌํจ
- ๊ฒฐ์ ํธ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ณด ํ๋์ ์ต๋ํํ๋ ๋ฐฉํฅ์ผ๋ก ํ์ต์ด ์งํ๋๋ค.
- ์ด๋ feature์ ์ด๋ ๋ถ๊ธฐ์ ์์ ์ ๋ณด ํ๋์ด ์ต๋ํ๋๋์ง ํ๋จ์ ํด ๋ถ๊ธฐ๊ฐ ์งํ๋จ
(๊ฒฝ์ฌ ๊ธฐ์ค ๋ถ๊ธฐ)
- steep์ ์ด 3๊ฐ์ด๋ฉฐ ์ด ๋ ์๋๋ ๊ฐ๊ฐ slow, slow, fast
- flat์ ์ด 2๊ฐ์ด๋ฉฐ ์ด ๋ ์๋๋ fast
--->>> entropy(flat) = 0
* steep์ผ๋ก ๋ถ๊ธฐํ์ ๋,
- slow๋ 2๊ฐ --> P_slow=2/3
- fast๋ 1๊ฐ --> P_fast=1/3
--->>> entropy(steep) = 0.9184 (๊ณต์ ์ด์ฉ)
* ๋ถ๊ธฐ ์ดํ ๋ ธ๋์ ๋ํ ๊ฐ์คํ๊ท ์?
[weighted average] entropy(children) = weighted average of steep * entropy(steep) + weighted average of flat * entropy(flat)
= 3/4 * 0/9184 + 1/4 * 0
= 0.6888
Information gain = entropy(parent) - [weighted average] entropy(children)
= 1 - 0.688
= 0.3112
- ๊ฒฝ์ฌ feature๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ถ๊ธฐ๋ฅผ ํ์ ๋ 0.3112๋งํผ์ ์ ๋ณด ํ๋(information gain)์ด ์๋ค๋ ๋ป
(ํ๋ฉด ๊ธฐ์ค ๋ถ๊ธฐ)
- bumpy๋ ์ด 2๊ฐ์ด๋ฉฐ ์ด ๋ ์๋๋ slow, fast
- smooth๋ ์ด 2๊ฐ์ด๋ฉฐ ์ด ๋ ์๋๋ slow, fast
-->> ํ๋์ ๋ฒ์ฃผ์ ์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๊ฐ ์ ํํ ๋ฐ๋ฐ ์์ผ๋ฏ๋ก entropy(bumpy) = entropy(smooth) = 1
information gain = entropy(parent) - [weighted average] entropy(children)
= 1 - (2/4) * 1 - (2/4) * 1
= 0
- ์ฆ, ํ๋ฉด์ ๊ธฐ์ค์ผ๋ก ๋ถ๊ธฐํ์ ๋๋ ์ ๋ณด ํ๋์ด ์ ํ x
(์๋ ์ ํ ๊ธฐ์ค ๋ถ๊ธฐ)
- yes์ ๊ฒฝ์ฐ slow, slow
- no์ ๊ฒฝ์ฐ fast, fast
--->> entropy(yes) = entropy(no) = 0
์ฆ, information gain = 1
- ๊ฒฝ์ฌ, ํ๋ฉด, ์๋์ ํ ๊ธฐ์ค์ผ๋ก ๋ถ๊ธฐ๋ฅผ ํ์ ๋ ์ ๋ณด ํ๋์ ๊ฐ๊ฐ 0.3112, 0, 1์ด๋ค.
- ๊ฒฐ์ ํธ๋ฆฌ๋ ์ ๋ณด ํ๋์ด ๊ฐ์ฅ ๋ง์ ๋ฐฉํฅ์ผ๋ก ํ์ต์ด ์งํ๋๋ฏ๋ก ์ฒซ ๋ถ๊ธฐ์ ์ ์๋์ ํ ๊ธฐ์ค์ผ๋ก ์ก๋๋ค.
- ์ด๋ฐ์์ผ๋ก max_depth๋ min_sample_split์ผ๋ก ์ค์ ํ ๋ฒ์๊น์ง ๋ถ๊ธฐ๋ฅผ ํ๊ฒ ๋๋ค.
์ด๊ฒ ๋ฐ๋ก ๊ฒฐ์ ํธ๋ฆฌ์ ์ ์ฒด์ ์ธ ์๊ณ ๋ฆฌ์ฆ !!
์ฒ์ ์ ๋ธ๋ก๊ทธ๋ก ๊ฒฐ์ ํธ๋ฆฌ๋ฅผ ๊ณต๋ถํ์ ๋, ์ ๋ณด ํ๋ ๋ถ๋ถ์ด ์์งํ ์ ํ ์ดํด๊ฐ ๊ฐ์ง ์์์๋ค. ๊ทธ๋ฌ๋ค ์ต๊ทผ ํ๊ต ์์ ์์ ๋ฐฐ์ฐ๊ณ ๋ค์ ๋ณต์ต์ ํด๋ณด๋ ์ดํด๊ฐ ์์ .. ๋ ์ฌ๋ฐ๋ค ์ด๋ฐ ๊ณต๋ถ ํํ
'Computer ๐ป > Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋์ด๋ธ ๋ฒ ์ด์ฆ (Naive Bayes Classification) (0) | 2021.11.05 |
---|---|
๋ฒ ์ด์ฆ ์ถ์ (Bayesian Estimation) (0) | 2021.11.05 |
์์๋ธ ๋ชจ๋ธ (0) | 2021.11.03 |
๋ถํธ์คํธ๋ฉ(Bootstrap) (0) | 2021.11.03 |
์ฒจ๋(Kurtosis)์ ์๋(Skewness) (0) | 2021.09.10 |