0Pricing
Python Academy · Pelajaran

Model Berbasis Pohon: Decision Tree dan Random Forest

Bangun dan sesuaikan model decision tree serta ensemble forest.

Model Berbasis Pohon: Decision Tree dan Random Forest adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Konsep Pohon Keputusan

Pohon keputusan membagi data menjadi beberapa subset dengan mengajukan serangkaian pertanyaan biner. Setiap simpul internal adalah ambang fitur, sedangkan setiap daun adalah prediksi.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = DecisionTreeClassifier(max_depth=3, random_state=0).fit(X, y)
print("Depth:", model.get_depth())
print("Leaves:", model.get_n_leaves())

DecisionTreeClassifier

Hiperparameter utama: max_depth, min_samples_split, min_samples_leaf. Pohon yang lebih dalam cenderung terlalu menyesuaikan data, sedangkan pohon yang lebih dangkal cenderung kurang menyesuaikan data.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = DecisionTreeClassifier(max_depth=5, min_samples_leaf=5)
model.fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

DecisionTreeRegressor

Pohon keputusan juga dapat menangani regresi dengan memprediksi nilai target rata-rata pada setiap daun.

from sklearn.tree import DecisionTreeRegressor
from sklearn.datasets import make_regression
from sklearn.metrics import mean_squared_error

X, y = make_regression(noise=15, random_state=0)
model = DecisionTreeRegressor(max_depth=4).fit(X, y)
print("RMSE:", mean_squared_error(y, model.predict(X))**0.5)

Kepentingan Fitur

model.feature_importances_ memberikan tingkat kepentingan relatif setiap fitur berdasarkan pengurangan impuritas.

from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris
import numpy as np

X, y = load_iris(return_X_y=True)
feature_names = load_iris().feature_names
model = DecisionTreeClassifier().fit(X, y)
for name, imp in sorted(zip(feature_names, model.feature_importances_), key=lambda x: -x[1]):
    print(f"{name}: {imp:.3f}")

Gambaran Umum Random Forest

Random Forest melatih banyak pohon keputusan yang tidak berkorelasi pada sampel bootstrap, lalu merata-ratakan prediksinya—sehingga mengurangi varians tanpa meningkatkan bias.

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

model = RandomForestClassifier(n_estimators=100, random_state=0)
model.fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

RandomForestRegressor

Random Forest juga bekerja sama baiknya untuk regresi.

from sklearn.ensemble import RandomForestRegressor
from sklearn.datasets import make_regression
from sklearn.metrics import r2_score

X, y = make_regression(noise=10, random_state=0)
model = RandomForestRegressor(n_estimators=100, random_state=0).fit(X, y)
print("R²:", r2_score(y, model.predict(X)))

Skor Out-of-Bag

Atur oob_score=True untuk memperoleh skor validasi secara cuma-cuma menggunakan sampel yang tidak termasuk dalam bootstrap setiap pohon (tidak diperlukan kumpulan pengujian terpisah).

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification

X, y = make_classification(random_state=0)
model = RandomForestClassifier(n_estimators=100, oob_score=True, random_state=0).fit(X, y)
print("OOB score:", model.oob_score_)

Gradient Boosting

Gradient boosting (GBM) melatih pohon secara berurutan, dengan setiap pohon memperbaiki kesalahan pohon sebelumnya. Metode ini sering lebih akurat daripada Random Forest, tetapi lebih lambat saat dilatih.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)
model = GradientBoostingClassifier(n_estimators=100).fit(X_tr, y_tr)
print("Test acc:", model.score(X_te, y_te))

XGBoost / LightGBM

XGBoost dan LightGBM adalah pustaka gradient boosting yang dioptimalkan—lebih cepat, lebih mudah diskalakan, dan sering lebih akurat daripada GBM milik sklearn.

# pip install xgboost lightgbm
from xgboost import XGBClassifier
from lightgbm import LGBMClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

X, y = make_classification(random_state=0)
X_tr, X_te, y_tr, y_te = train_test_split(X, y, random_state=0)

xgb = XGBClassifier(n_estimators=100, eval_metric="logloss").fit(X_tr, y_tr)
print("XGB acc:", xgb.score(X_te, y_te))

Menyesuaikan n_estimators

Lebih banyak pohon dalam Random Forest mengurangi varians (hingga titik tertentu) tanpa membuat model terlalu menyesuaikan data. Gunakan kurva validasi untuk menemukan jumlah yang optimal.

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.datasets import make_classification
import numpy as np

X, y = make_classification(random_state=0)
for n in [10, 50, 100, 200]:
    scores = cross_val_score(RandomForestClassifier(n_estimators=n, random_state=0), X, y, cv=5)
    print(f"n={n}: {scores.mean():.3f}")

Memvisualisasikan Pohon Keputusan

Gunakan sklearn.tree.plot_tree atau export_text untuk memeriksa hal yang dipelajari pohon.

from sklearn.tree import DecisionTreeClassifier, export_text, plot_tree
from sklearn.datasets import load_iris

X, y = load_iris(return_X_y=True)
model = DecisionTreeClassifier(max_depth=2).fit(X, y)
print(export_text(model, feature_names=load_iris().feature_names.tolist()))

Pemeriksaan Singkat

Bagaimana Random Forest mengurangi model terlalu menyesuaikan data dibandingkan satu pohon keputusan?

Rangkuman

Pohon keputusan membagi data berdasarkan ambang fitur dan membuat prediksi dengan nilai daun. Sesuaikan max_depth untuk mengendalikan model terlalu menyesuaikan data. Random Forest merata-ratakan banyak pohon untuk mengurangi varians. Gradient boosting melatih pohon secara berurutan demi akurasi tinggi. Untuk produksi, pilih XGBoost atau LightGBM.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Model Berbasis Pohon: Decision Tree dan Random Forest” gratis?

Ya — teks lengkap “Model Berbasis Pohon: Decision Tree dan Random Forest” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Model Berbasis Pohon: Decision Tree dan Random Forest”?

Bangun dan sesuaikan model decision tree serta ensemble forest. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Model Berbasis Pohon: Decision Tree dan Random Forest” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API scikit-learn: fit, transform, predict
  2. Model Linear: Regresi dan Klasifikasi
  3. Model Berbasis Pohon: Decision Tree dan Random Forest
  4. Evaluasi Model dan Validasi Silang
← Kembali ke Python Academy