Random Forest dan Bagging
Konsep ensemble, RandomForestClassifier, n_estimators, kepentingan fitur, dan skor OOB.
Random Forest dan Bagging adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 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 Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Masalah pada Pohon Tunggal
Satu pohon keputusan memiliki varians tinggi: pelatihan ulang dengan data yang sedikit berbeda dapat menghasilkan pohon yang sangat berbeda. Ansambel mengatasi hal ini dengan menggabungkan banyak pohon.
Bagging (Penggabungan Bootstrap)
Bagging melatih banyak model menggunakan sampel bootstrap yang berbeda (pengambilan sampel acak dengan pengembalian) dari data, lalu merata-ratakan prediksinya.
Merata-ratakan banyak model ber-varians tinggi mengurangi varians keseluruhan tanpa banyak meningkatkan bias.
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
bag = BaggingClassifier(
estimator=DecisionTreeClassifier(),
n_estimators=100,
random_state=0,
)
bag.fit(Xtr, ytr)Dari Bagging ke Hutan Acak
Hutan acak adalah penerapan bagging pada pohon ditambah satu trik: pada setiap pemisahan, hanya subset fitur acak yang dipertimbangkan.
Hal ini mengurangi korelasi antarpohon sehingga kesalahannya saling meniadakan dengan lebih baik dan ansambel menjadi lebih baik.
Dasar-Dasar RandomForestClassifier
Gunakan RandomForestClassifier. Parameter utama n_estimators menentukan jumlah pohon yang akan dibuat. Lebih banyak pohon = lebih stabil, tetapi lebih lambat.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators=200, random_state=0)
rf.fit(Xtr, ytr)
print("Accuracy:", rf.score(Xte, yte))Pelatihan Paralel dengan n_jobs
Pohon-pohon dalam hutan bersifat independen, sehingga dapat dilatih secara paralel. Tetapkan n_jobs=-1 untuk menggunakan semua inti CPU dan mempercepat pelatihan secara signifikan.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=500,
n_jobs=-1, # use all cores
random_state=0,
)
rf.fit(Xtr, ytr)Skor Di Luar Kantong (OOB)
Setiap pohon tidak menggunakan sekitar sepertiga sampel (bootstrap tidak memilihnya). Sampel di luar kantong ini membentuk set validasi bawaan.
Tetapkan oob_score=True untuk memperoleh perkiraan galat generalisasi tanpa pemisahan terpisah.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=300,
oob_score=True,
random_state=0,
)
rf.fit(Xtr, ytr)
print("OOB score:", rf.oob_score_)Mengendalikan Kedalaman Pohon dalam Hutan
Parameter pohon yang sama tetap berlaku: max_depth, min_samples_leaf, dan max_features (jumlah fitur yang dicoba pada setiap pemisahan).
max_features="sqrt" adalah nilai bawaan yang umum untuk klasifikasi.
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(
n_estimators=300,
max_depth=12,
max_features="sqrt",
random_state=0,
)Kepentingan Fitur Bawaan
Seperti pohon tunggal, hutan menyediakan feature_importances_, yang dirata-ratakan di seluruh pohon. Kepentingan yang didasarkan pada ketidakmurnian ini cepat dihitung, tetapi dapat bias terhadap fitur dengan kardinalitas tinggi.
from sklearn.ensemble import RandomForestClassifier
import numpy as np
rf = RandomForestClassifier(n_estimators=200, random_state=0).fit(Xtr, ytr)
order = np.argsort(rf.feature_importances_)[::-1]
for i in order[:5]:
print(i, rf.feature_importances_[i])Kepentingan Permutasi
Kepentingan permutasi lebih dapat diandalkan: satu kolom fitur diacak dan seberapa besar skor menurun diukur. Penurunan yang besar berarti fitur tersebut penting.
Metode ini tidak bergantung pada model dan menghindari bias akibat ketidakmurnian.
from sklearn.inspection import permutation_importance
result = permutation_importance(
rf, Xte, yte, n_repeats=10, random_state=0, n_jobs=-1
)
print(result.importances_mean)Menafsirkan Hasil Permutasi
permutation_importance mengembalikan importances_mean dan importances_std di antara pengulangan. Hitung nilai tersebut pada set yang disisihkan agar Anda mengukur dampaknya terhadap generalisasi, bukan kecocokan pelatihan.
import numpy as np
means = result.importances_mean
stds = result.importances_std
for i in np.argsort(means)[::-1]:
print(f"feature {i}: {means[i]:.3f} +/- {stds[i]:.3f}")Kapan Menggunakan Hutan Acak
Hutan acak merupakan pilihan bawaan yang kuat: tangguh, hanya memerlukan sedikit penyetelan, mampu menangani nonlinieritas dan interaksi, serta tahan terhadap penyesuaian berlebihan. Kekurangannya adalah penggunaan memori yang lebih besar, prediksi yang lebih lambat dibandingkan pohon tunggal, dan interpretasi yang lebih sulit.
Uji Cepat
Uji pemahaman Anda tentang bagging dan hutan.
Ringkasan
Ringkasan: Bagging melatih model menggunakan sampel bootstrap dan merata-ratakannya untuk mengurangi varians. Hutan acak menambahkan subset fitur acak pada setiap pemisahan. Lakukan penyetelan dengan n_estimators, gunakan n_jobs=-1 untuk kecepatan, dapatkan validasi gratis melalui oob_score, dan pilih permutation_importance daripada kepentingan berbasis ketidakmurnian untuk menghasilkan peringkat yang andal.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Random Forest dan Bagging” gratis?
Ya — teks lengkap “Random Forest dan Bagging” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Random Forest dan Bagging”?
Konsep ensemble, RandomForestClassifier, n_estimators, kepentingan fitur, dan skor OOB. Kamu berlatih Learn AI with Python 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 Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python 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 2 dari 4.
Berapa lama pelajaran “Random Forest dan Bagging” 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 Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python 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
- Pohon Keputusan: Teori dan Implementasi
- Random Forest dan Bagging
- Gradient Boosting: GBM dan XGBoost
- LightGBM dan CatBoost