Decision Tree
- ์ฝ๋๋ ๋ธ๋ญ์ผ๋ก ๋ฐ๋ก ์ฒจ๋ถ X
- https://github.com/cAhyoung/dacon_stars_type_clf/blob/main/practive_code/dt_rf_practice.py
Hyper parameter
- criterion(๊ธฐ์ค) : default=”gini”, ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฅํ๊ธฐ ์ํ ์ฒ๋
- “gini”
- ์ง๋๊ณ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฐ์ดํฐ ๋ถ๋ฅ
- “entropy”
- ์ํธ๋กํผ ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฐ์ดํฐ ๋ถ๋ฅ
- “log_loss”
- log_loss๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ๋ฐ์ดํฐ ๋ถ๋ฅ
- “gini”
- splitter(๋ถํ ) : default=”best”
- “best”
- ๊ฐ์ฅ ์ข์ ๋ถํ ๋ฐฉ์์ ์ฐพ์
- “random”
- ๊ฐ์ฅ ์ข์ ๋๋ค ๋ถํ ๋ฐฉ์์ ์ฐพ์
- “best”
- max_depth : default=None
- ํธ๋ฆฌ๊ตฌ์กฐ์ ์ต๊ณ ๊น์ด๋ฅผ ์ค์ ํด์ฃผ๋ ํ๋ผ๋ฏธํฐ
- ์ต๊ณ ๊น์ด๋ฅผ ์ง์ ํด์ค์ผ๋ก์ overfitting์ ๋ง์ ์ ์์
- min_samples_split : default=2
- ๋ด๋ถ ๋ ธ๋์์ ์ํ๋ค์ ๋ถ๋ฆฌํ๊ธฐ ์ํ ์ต์ ์ํ ๊ฐฏ์
- min_samples_leaf : default=1
- ์ต์ ๋ฆฌํ๋ ธ๋ ๊ฐ์
- min_weight_fraction_leaf : default=0.0
- ๋ญ๊น์ผ?
- max_features : default=None
- best split์ ์ฐพ์ ๋ ๊ณ ๋ คํ ํผ์ณ์ ์
- int, floatํ์ด ์ฌ ์ ์์ผ๋ฉฐ, “auto”, “sqrt”, “log2”๋ ์ฌ ์ ์์
- “auto” → 1.3๋ฒ์ ๋ถํฐ ์ฌ๋ผ์ง ์์ ์
- max_features=sqrt(n_features)
- “sqrt”
- max_features=sqrt(n_features)
- “log2”
- max_features=log2(n_features)
- random_state : default=None
- ์ด๋ค training dataset์ด ์๋ค๊ณ ํ ๋, ์ด dataset์ nn๊ฐ๋ก ๋ถ๋ฆฌํ๋ค๊ณ ์น์. ์ด nn๊ฐ๋ก ์ชผ๊ฐ์ง ๋ฐ์ดํฐ ์ ๋ค์ ๊ฐ๊ฐ ๋ฒํธ๊ฐ ๋ถ์ด์๊ณ , ๊ทธ ๋ฒํธ์๋ ๋ฐ์ดํฐ mm๊ฐ๊ฐ ๋ค์ด์๋ค. ๋ช๋ฒ ๋ฐ์ดํฐ์ ์ ๊ฐ์ ธ์ฌ ๊ฒ์ธ์ง ์ค์ ํ๋ ๊ฒ์
- max_leaf_nodes : default=None
- leaf node์ ์ต๋๊ฐ์ ๊ฒฐ์ ํด์ค
- min_impurity_decrease : default=0.0
- A node will be split if this split induces a decrease of the impurity greater than or equal to this value.
- class_weight : default=None
- balanced
- ๊ท ํ์๊ฒ ๋ชจ๋ ํด๋์ค์ ๊ฐ์ค์น๋ฅผ ์ค
- dict, list of dict
- {class_label : weight} ์ ํํ๋ก ๊ฐ ํด๋์ค๋ณ๋ก ๊ฐ์ค์น๋ฅผ ์ค
- balanced
- ccp_alpha : default=0.0
- ์ต์๋น์ฉ ๋ณต์ก๋ pruning(๊ฐ์ง์น๊ธฐ๋ผ๋ ์๋ฏธ๋๋ฐ…ํ ?)์ ์ฌ์ฉ๋๋ ๋ณต์ก๋ ํ๋ผ๋ฏธํฐ
ํ๊ฐ๋ฐฉ๋ฒ
- log loss
- y๊ฐ์ ๋ง์ถ ๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ ํ๋๋ฅผ ์ธก์ ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋ธ์ด ํด๋น ์ ๋ต์ ๋ง์ถ ํ๋ฅ ์ ๋ฐ์ํ์ฌ ํ๊ฐํ๋ ๊ฒ์
- ์๋ชป ์์ธกํ ์๋ก ํจ๋ํฐ๋ฅผ ๋ถ์ฌ ← ์๋ชป ๋ถ๋ฅ๋ ์์น์ ์์ค๊ฐ์ ๊ณ์ฐ
- ํ๋ฅ ์ด ๋์ ์๋ก ๋ก๊ทธ๊ฐ์ ์๊ฒ ๋์ด → ๋ก๊ทธ๊ฐ์ด ์์์๋ก ์ข์ ์งํ์
from sklearn.metrics import log_loss # predict_proba ํจ์๋ฅผ ์ด์ฉํ์ฌ X_test ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ ์์ธก ํ๋ฅ ์ ๊ตฌํจ logloss_dt = log_loss(y_test, dt_clf.predict_proba(X_test)) print('log loss {0: .4f}'.format(logloss_dt))
- M์ ํด๋์ค์ ๊ฐฏ์
- y_i,m์ ์ด๋ค ํ i๊ฐ ํด๋์ค m์ ์ํ ๊ฒ์ ๋ง์ถ์๋๊ฐ? ๋ง์ท์ผ๋ฉด 1, ํ๋ ธ๋ค๋ฉด 0
- p_i,m์ ์ด๋ค ํ i๊ฐ ํด๋์ค m์ ์ํ ํ๋ฅ ๊ฐ
2. Confusion Matrix
- ํผ๋ํ๋ ฌ, ์ค์ฐจํ๋ ฌ์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด์ง๋ถ๋ฅ์์ ๋ง์ด ์ฌ์ฉ๋๋ ์ฑ๋ฅ์งํ์
์์ธกํด๋์ค (Negative) | ์์ธกํด๋์ค (Positive) | |
์ค์ ํด๋์ค (Negative) | True Negative | False Positive |
์ค์ ํด๋์ค (Positive) | False Negative | True Positive |
- True Negative : Negative์ธ ํด๋์ค๋ฅผ ๋ง์ถค
- False Positive : Negative์ธ ํด๋์ค๋ฅผ Positive๋ก ์์ธก → ์ ๋ต์ ๋ง์ถ์ง ๋ชปํจ
…
1) Accuracy(์ ํ๋)
(TN + TP) / (TN + FP + FN + TP)
- ์์ธก ๊ฐ๊ณผ ์ค์ ๊ฐ์ด ๋ชจ๋ ๊ฐ์ ๊ฒฝ์ฐ / ์ ์ฒด
- ํด๋์ค๊ฐ ์ด๋ ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ ธ ์๋ ๊ฒฝ์ฐ ์ ํ๋์ ์ ๋ขฐ๋๋ ๋จ์ด์ง ์ ์์
- ํ์ชฝ์ผ๋ก ์น์ฐ์ณ์ ธ์๋ ํด๋์ค๋ง ์ ๋ง์ถ๊ณ ๋ค๋ฅธ ํ ํด๋์ค๋ ์ ๋๋ก ๋ง์ถ์ง ๋ชปํ ์ ์์
2) Recall(์ฌํ์จ)
TP / (FN + TP)
- ์ค์ ๊ฐ์ด positive์ธ ๋์ ์ค ์์ธก๊ณผ ์ค์ ๊ฐ์ด positive๋ก ์ผ์นํ ๋ฐ์ดํฐ์ ๋น์จ
- FN + TP๋ ์ค์ ๊ฐ์ด ๋ชจ๋ Positive์ธ ๊ฒฝ์ฐ (์์ธก ๊ฒฐ๊ณผ ์๊ด X)
- ์ค์ ๋ฐ์ดํฐ๊ฐ Positive์ด์ง๋ง Negative๋ก ์๋ชป ํ๋จํ ๋ ์
๋ฌด์ ํฐ ์ํฅ์ด ์๋ ๊ฒฝ์ฐ Recall๊ฐ์ ์ค์ํ๊ฒ ๋ด
- ์ 1์ข ์ค๋ฅ
3) Precision(์ ๋ฐ๋)
TP / (FP + TP)
- ์์ธก๊ฐ์ด positive์ธ ๊ฒ๋ค ์ค ์์ธก ์ฑ๊ณตํ ๊ฒฝ์ฐ์ ๋น์จ
- FP + TP๋ ์์ธก๊ฐ์ด positive ์ธ ๊ฐ๋ค์ ํฉ
- ์ค์ ๋ก๋ negative๊ฐ์ธ ๋ฐ์ดํฐ๋ฅผ positive๋ก ํ๋จํ๊ฒ๋๋ฉด ์
๋ฌด์ ํฐ ์ํฅ์ด ์๋ ๊ฒฝ์ฐ precision์ ์ค์ํ๊ฒ ๋ด
- ์ 2์ข ์ค๋ฅ
์ถ์ฒ
- https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier
- https://www.youtube.com/watch?v=i5U2inxzXx4
- https://leehah0908.tistory.com/23
- https://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html#sklearn.metrics.log_loss
- https://white-joy.tistory.com/9?category=1015070
- ํ์ด์ฌ ๋จธ์ ๋ฌ๋ ์๋ฒฝ ๊ฐ์ด๋ 1ํ / ๊ถ์ฒ ๋ฏผ
'๐ก WIDA > DACON ๋ถ๋ฅ-ํ๊ท' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DACON/๊น๊ท๋ฆฌ] ๋ถ๋ฅ ๋ชจ๋ธ ๋ฏ์ด๋ณด๊ธฐ, ๋ถ๋ฅ ๋ชจ๋ธ ํ๊ฐ๋ฐฉ์ (0) | 2023.03.31 |
---|---|
[DACON/์ต๋ค์] ๋ถ๋ฅ ๋ชจ๋ธ ๋ฏ์ด๋ณด๊ธฐ, ๋ถ๋ฅ๋ชจ๋ธ ํ๊ฐ๋ฐฉ์ (0) | 2023.03.30 |
[DACON/๊น๋ฏผํ] ๋ถ๋ฅ ๋ชจ๋ธ ๋ฏ์ด๋ณด๊ธฐ, ๋ถ๋ฅ๋ชจ๋ธ ํ๊ฐ๋ฐฉ์ (0) | 2023.03.30 |
[DACON/๊น๊ท๋ฆฌ] ๋ถ๋ฅ ๋ชจ๋ธ ์์๋ณด๊ธฐ (1) | 2023.03.24 |
[DACON/์กฐ์์] ๋ถ๋ฅ ๋ชจ๋ธ ์์๋ณด๊ธฐ (0) | 2023.03.24 |