์ด๋ฒ์๋ Decision Tree (๊ฒฐ์ ํธ๋ฆฌ)์ ๋ฐํ์ฌ ์์๋ณด๊ฒ ์ต๋๋ค.
๊ฒฐ์ ํธ๋ฆฌ(Decision Tree)๋ ๋ถ๋ฅ์ ํ๊ท ๋ฌธ์ ์ ๋ชจ๋ ์ฌ์ฉ๋ ์ ์๋ ์ง๋ํ์ต ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค.
์ด ๋ชจ๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ๋ถํ ํ์ฌ ์์ธก์ ์ํํ๋ฉฐ, ๊ฐ ๋ด๋ถ ๋ ธ๋๋ ํน์ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ถํ ์ ๋ํ๋ด๊ณ , ๊ฐ์ง(branch)๋ ๊ทธ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ต์ข ๋ฆฌํ ๋ ธ๋(leaf node)๋ ์์ธก ๊ฐ์ ์ ๊ณตํฉ๋๋ค.
Decision Tree์ ์ฃผ์ ํน์ง
- ์ง๊ด์ฑ: ๊ฒฐ์ ํธ๋ฆฌ๋ ์๊ฐ์ ์ผ๋ก ํํํ ์ ์์ด ์ดํด๊ฐ ์ฝ์ต๋๋ค.
- ๋น๋ชจ์์ ๋ฐฉ๋ฒ: ๋ฐ์ดํฐ์ ๋ถํฌ์ ๋ํด ํน์ ๊ฐ์ ์ ํ์ง ์์ผ๋ฏ๋ก ๋ค์ํ ๋ฐ์ดํฐ์ ์ ์ ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
- ํด์ ์ฉ์ด์ฑ: ๋ชจ๋ธ์ด ์ด๋ป๊ฒ ๊ฒฐ์ ์ ๋ด๋ ธ๋์ง ์ฝ๊ฒ ํด์ํ ์ ์์ต๋๋ค.
Decision Tree์ ๊ธฐ๋ณธ ์๋ฆฌ
๋ ธ๋์ ๊ฐ์ง
- ๋ฃจํธ ๋ ธ๋ (Root Node): ํธ๋ฆฌ์ ์ต์๋จ์ ์์นํ๋ฉฐ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ํฌํจํฉ๋๋ค.
- ๋ด๋ถ ๋ ธ๋ (Internal Node): ๊ฐ ๋ ธ๋๋ ํน์ ํน์ฑ์ ์กฐ๊ฑด์ ๋ํ๋ ๋๋ค.
- ๋ฆฌํ ๋ ธ๋ (Leaf Node): ์ต์ข ์ ์ผ๋ก ์์ธก ๊ฐ์ ๋ํ๋ ๋๋ค.
- ๊ฐ์ง (Branch): ๋ ธ๋ ๊ฐ์ ์ฐ๊ฒฐ๋ก, ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ ๋๋ค.
๋ถํ
- ๋ฐ์ดํฐ๋ ๊ฐ ๋ ธ๋์์ ํน์ ํน์ฑ์ ๊ธฐ์ค์ผ๋ก ๋ถํ ๋ฉ๋๋ค.
- ์ด๋ ์ฌ์ฉ๋๋ ๊ธฐ์ค์ ์ ๋ณด ์ด๋(Information Gain) ๋๋ ์ง๋ ๋ถ์๋(Gini Impurity) ๋ฑ์ด ์์ต๋๋ค.
Decision Tree - ๋ถํ ๊ธฐ์ค
Decision Tree (๊ฒฐ์ ํธ๋ฆฌ)์ ๋ถํ ๊ธฐ์ค์ ์ ๋ณด์ด๋(Information Gain)์ ๋ฐ๋ผ์ ๊ฒฐ์ ๋ฉ๋๋ค.
Information Gain (์ ๋ณด ์ด๋)
์ ๋ณด์ด๋์ ๋ถํ ์ ํ์ ์ํธ๋กํผ(Entropy) ์ฐจ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฒฐ์ ๋ฉ๋๋ค.
์ํธ๋กํผ๋ ๋ฐ์ดํฐ์ ๋ถํ์ค์ฑ์ ๋ํ๋ด๋ฉฐ, ํด๋์ค๊ฐ ์ผ๋ง๋ ํผํฉ๋์ด ์๋์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
ํน์ ํน์ฑ์ ๋ํด ์ ๋ณด ์ด๋์ด ์ต๋๊ฐ ๋๋ ๋ถํ ์ ์ ํํฉ๋๋ค.
- ์ฌ๊ธฐ์ D๋ ๋ฐ์ดํฐ์ , pi๋ ํด๋์ค i์ ํ๋ฅ , c๋ ํด๋์ค์ ์ ์ ๋๋ค.
- A๋ ํน์ฑ, D๋ ํน์ฑ A๊ฐ์ v์ ๋ฐํ ๋ฐ์ดํฐ ๋ถ๋ถ ์งํฉ ์ ๋๋ค.
์์
1. ์ด๊ธฐ ๋ฐ์ดํฐ์ D ์์ ์ํธ๋กํผ H(D)๋ฅผ ๊ณ์ฐํฉ๋๋ค.
2. ๊ฐ ํน์ฑ ์ ๋ํด ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๋ํด ๋ฐ์ดํฐ์ ์ ๋ถํ ํ๊ณ , ๋ถํ ๋ ๊ฐ ๋ถ๋ถ์งํฉ์ ์ํธ๋กํผ๋ฅผ ๊ณ์ฐํฉ๋๋ค.
3. ๊ฐ ๋ถํ ์ ์ ๋ณด ์ด๋ IG(D, A)๋ฅผ ๊ณ์ฐํ๊ณ , ์ ๋ณด ์ด๋์ด ์ต๋๊ฐ ๋๋ ํน์ฑ์ ์ ํํ์ฌ ๋ถํ ํฉ๋๋ค.
์ง๋ ๋ถ์๋(Gini Impurity)
์ง๋ ๋ถ์๋๋ ๋ ธ๋๊ฐ ํ ํด๋์ค์ ์ํ ํ๋ฅ ์ ์ธก์ ํ์ฌ ๋ถ์๋๋ฅผ ๊ณ์ฐํ๋ ์งํ์ ๋๋ค.
์ง๋ ๋ถ์๋ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋ ํน์ฑ์ผ๋ก ๋ถํ ์ ๊ฒฐ์ ํฉ๋๋ค.
- D๋ ๋ฐ์ดํฐ์ , pi๋ ํด๋์ค i์ ํ๋ฅ , c๋ ํด๋์ค ์ ์ ๋๋ค.
์์
1. ์ด๊ธฐ ๋ฐ์ดํฐ์ D ์์ ์ง๋ ๋ถ์๋ G(D)๋ฅผ ๊ณ์ฐํฉ๋๋ค.
2. ๊ฐ ํน์ฑ ์ ๋ํด ๊ฐ๋ฅํ ๋ชจ๋ ๊ฐ์ ๋ํด ๋ฐ์ดํฐ์ ์ ๋ถํ ํ๊ณ , ๋ถํ ๋ ๊ฐ ๋ถ๋ถ์งํฉ์ ์ง๋ ๋ถ์๋๋ฅผ ๊ณ์ฐํฉ๋๋ค.
3. ๊ฐ ๋ถํ ์ ์ง๋ ๋ถ์๋ ๊ฐ์ G ๋ฅผ ๊ณ์ฐํ๊ณ , ์ง๋ ๋ถ์๋ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋ ํน์ฑ ๋ฅผ ์ ํํ์ฌ ๋ถํ ํฉ๋๋ค.
Decision Tree - ๊ฒฐ์ ํธ๋ฆฌ์ ์ฅ,๋จ์
๊ฒฐ์ ํธ๋ฆฌ์ ์ฅ์
- ์ง๊ด์ ์ด๊ณ ํด์ ์ฉ์ด: ํธ๋ฆฌ ๊ตฌ์กฐ๋ก ์๊ฐํํ์ฌ ์ฝ๊ฒ ์ดํดํ ์ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ์ต์ํ: ํน์ฑ ์ค์ผ์ผ๋ง์ด๋ ์ ๊ทํ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
- ๋น๋ชจ์์ ๋ฐฉ๋ฒ: ๋ฐ์ดํฐ ๋ถํฌ์ ๋ํ ๊ฐ์ ์ด ํ์ ์์ต๋๋ค.
- ๋ค์ํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ: ๋ฒ์ฃผํ ๋ฐ ์ฐ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ฒฐ์ ํธ๋ฆฌ์ ๋จ์
- ๊ณผ์ ํฉ: ํธ๋ฆฌ๊ฐ ๊น์ด์ง์๋ก ํ๋ จ ๋ฐ์ดํฐ์ ๊ณผ์ ํฉํ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค.
- ๋ณ๋์ฑ: ๋ฐ์ดํฐ์ ์์ ๋ณํ์๋ ํธ๋ฆฌ ๊ตฌ์กฐ๊ฐ ํฌ๊ฒ ๋ณํ ์ ์์ต๋๋ค.
Decision Tree Example Code
# ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.metrics import classification_report, ConfusionMatrixDisplay
import matplotlib.pyplot as plt
# ์์ธ ๋ฐ์ดํฐ์
๋ก๋
wine = load_wine()
X, y = wine.data, wine.target
# ๋ฐ์ดํฐ์
์ ํ์ต ์ธํธ์ ํ
์คํธ ์ธํธ๋ก ๋ถํ
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# ๊ฒฐ์ ํธ๋ฆฌ ๋ชจ๋ธ ํ์ต
tree = DecisionTreeClassifier(random_state=42)
tree.fit(X_train, y_train)
# ์์ธก ๋ฐ ํ๊ฐ
y_pred = tree.predict(X_test)
print(classification_report(y_test, y_pred))
precision recall f1-score support
0 0.93 0.93 0.93 14
1 0.93 1.00 0.97 14
2 1.00 0.88 0.93 8
accuracy 0.94 36
macro avg 0.95 0.93 0.94 36
weighted avg 0.95 0.94 0.94 36
# ํผ๋ ํ๋ ฌ ์๊ฐํ
ConfusionMatrixDisplay.from_estimator(tree, X_test, y_test)
plt.title("Decision Tree Confusion Matrix")
plt.show()
# ๊ฒฐ์ ํธ๋ฆฌ ๊ตฌ์กฐ ์๊ฐํ
plt.figure(figsize=(20,10))
plot_tree(tree, filled=True, feature_names=wine.feature_names, class_names=wine.target_names)
plt.title("Decision Tree Structure")
plt.show()
'๐ Machine Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ML] ์ ๊ฒฝ๋ง (Neural Network) - ๋ค์ธต ํผ์ ํธ๋ก (0) | 2024.08.16 |
---|---|
[ML] Random Forest (๋๋ค ํฌ๋ ์คํธ) (0) | 2024.08.12 |
[ML] Support Vector Machine (SVM, ์ํฌํธ ๋ฒกํฐ ๋จธ์ ) (0) | 2024.08.11 |
[ML] Logistic Regression (๋ก์ง์คํฑ ํ๊ท) (0) | 2024.08.07 |
[ML] K-Nearest Neighbors, K-NN (K-์ต๊ทผ์ ์ด์) (0) | 2024.08.07 |