Machine Learning Academy · Pelajaran

Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth

Pelajar akan menjejaki kesan pengecutan (kadar pembelajaran), saiz ensemble dan kedalaman terhadap pertukaran bias-varians melalui eksperimen sistematik.

Pelajaran 4 daripada 413 langkah

Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth ialah pelajaran Machine Learning Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Machine Learning Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Machine Learning Academy merangkumi sejumlah 4 pelajaran.

Triniti Suci Penggalakan Kecerunan

Penggalakan kecerunan mempunyai tiga hiperparameter yang paling kuat interaksinya dan paling besar kesannya terhadap prestasi model: learning_rate (sebesar mana sumbangan setiap pepohon), n_estimators (bilangan pepohon yang hendak dibina), dan max_depth (sejauh mana kerumitan setiap pepohon individu). Memahami interaksi antara ketiga-tiga parameter ini ialah kunci untuk melaraskan mana-mana model penggalakan kecerunan dengan berkesan — sama ada GradientBoostingClassifier scikit-learn, XGBoost atau LightGBM.

Kadar Pembelajaran (Pengecutan) dengan Terperinci

Kadar pembelajaran η (eta) menskalakan sumbangan setiap pepohon: F_m(x) = F_{m-1}(x) + η × h_m(x). η yang lebih kecil bermaksud setiap pepohon hanya membetulkan sebahagian daripada baki, lalu memerlukan lebih banyak pepohon untuk menumpu tetapi menghasilkan permukaan ramalan yang lebih licin dan lebih terregularisasi. Nilai yang lazim: 0.01–0.3. Hubungan songsang antara learning_rate dan n_estimators amat penting: mengurangkan separuh kadar pembelajaran memerlukan kira-kira dua kali ganda n_estimators untuk mencapai kehilangan latihan yang sama. Sentiasa gunakan penghentian awal untuk mencari n_estimators yang sesuai bagi kadar pembelajaran yang dipilih.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score

X, y = load_breast_cancer(return_X_y=True)
# Inverse relationship between lr and n_estimators
configs = [(0.3, 50), (0.1, 150), (0.05, 300), (0.01, 1000)]
for lr, n in configs:
    model = GradientBoostingClassifier(learning_rate=lr, n_estimators=n, max_depth=3, random_state=42)
    score = cross_val_score(model, X, y, cv=5).mean()
    print(f'lr={lr:.2f}, n={n:4d}: CV={score:.4f}')

n_estimators: Lebih Banyak Pepohon Tidak Semestinya Lebih Baik

n_estimators menetapkan jumlah pepohon berjujukan dalam ensembel. Tidak seperti hutan rawak (yang sentiasa lebih baik dengan bilangan yang lebih banyak), model penggalakan boleh terlebih suai dengan terlalu banyak pepohon, khususnya pada kadar pembelajaran tinggi. Titik optimum ditemui dengan memantau kehilangan pengesahan merentas pusingan. Dengan penghentian awal, anda boleh menetapkan n_estimators=2000 dengan selamat — latihan akan berhenti apabila pengesahan tidak lagi bertambah baik. Tanpa penghentian awal, gunakan pengesahan silang pada julat nilai dan pilih n_estimators pada titik siku lengkung ralat pengesahan.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score

X, y = load_breast_cancer(return_X_y=True)
for n in [10, 50, 100, 200, 500]:
    model = GradientBoostingClassifier(n_estimators=n, learning_rate=0.1, max_depth=3, random_state=42)
    score = cross_val_score(model, X, y, cv=5).mean()
    print(f'n_estimators={n:4d}: CV accuracy={score:.4f}')

max_depth: Pelajar Lemah Menang dalam Penggalakan

Penggalak berperingkat berfungsi paling baik dengan pembelajar lemah — pepohon cetek (max_depth 2-6). Pepohon dengan kedalaman 1 (tunggul keputusan) hanya menangkap satu interaksi ciri bagi setiap pusingan; pepohon dengan kedalaman 3 menangkap interaksi tiga hala. Pepohon yang lebih dalam secara individu lebih berkuasa, memerlukan lebih sedikit pusingan tetapi berisiko terlebih padan. Pepohon yang lebih cetek memerlukan lebih banyak pusingan tetapi dapat mengitlak dengan lebih baik. Dalam amalan: mulakan dengan max_depth=3 untuk pengelasan, dan max_depth=4-6 untuk regresi jadual yang kompleks. Pepohon yang sangat dalam (>8) hampir tidak pernah optimum dalam penggalakan.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score

X, y = load_breast_cancer(return_X_y=True)
for depth in [1, 2, 3, 5, 8, 15]:
    model = GradientBoostingClassifier(n_estimators=200, learning_rate=0.1, max_depth=depth, random_state=42)
    train_score = model.fit(X, y).train_score_[-1]
    cv_score = cross_val_score(GradientBoostingClassifier(n_estimators=200, learning_rate=0.1, max_depth=depth, random_state=42), X, y, cv=5).mean()
    print(f'max_depth={depth:2d}: train={train_score:.4f}, CV={cv_score:.4f}')

Pertukaran Kadar Pembelajaran - n_estimators

Interaksi antara learning_rate dengan n_estimators ialah pertukaran paling penting untuk difahami. Pertimbangkan senario berikut:

  • lr tinggi (0.3) + sedikit pepohon (50): latihan pantas, tetapi berisiko tidak mencapai padanan optimum
  • lr sederhana (0.1) + pepohon sederhana (200): titik permulaan standard
  • lr rendah (0.01) + banyak pepohon (2000): paling banyak dikawal selia, pengitlakan terbaik tetapi lambat dilatih
Cadangan praktikal: tetapkan kadar pembelajaran rendah hingga sederhana (0.05-0.1) dan gunakan penghentian awal untuk menentukan n_estimators optimum secara automatik.

Lengkung Ralat Latihan berbanding Pengesahan

Salah satu diagnostik yang paling bermaklumat dalam penggalakan berperingkat ialah memplotkan ralat latihan dan pengesahan merentas pusingan penggalakan. Ralat latihan sentiasa menurun secara monoton. Ralat pengesahan pada awalnya menurun tetapi mula meningkat apabila model terlebih padan. Titik apabila ralat pengesahan diminimumkan ialah n_estimators optimum. Plot ini menunjukkan sama ada anda memerlukan lebih banyak pengawalan selia (ralat pengesahan meningkat dengan cepat), kurang pengawalan selia (ralat pengesahan masih menurun pada penghujungnya), atau sama ada anda telah menemukan titik optimum.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
import numpy as np

X, y = load_breast_cancer(return_X_y=True)
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

model = GradientBoostingClassifier(n_estimators=300, learning_rate=0.1, max_depth=3, random_state=42)
model.fit(X_train, y_train)
val_scores = [model.estimators_[:i+1] and model.loss_(y_val, model.staged_predict_proba(X_val).__next__()) for i in range(5)]
# Simplified: use staged_predict to check improvement
val_staged = list(model.staged_predict(X_val))
val_acc = [np.mean(p == y_val) for p in val_staged]
print('Val acc at round 50:', round(val_acc[49], 4))
print('Val acc at round 300:', round(val_acc[299], 4))
print('Best round:', np.argmax(val_acc) + 1)

Pengawalan Selia Melangkaui Tiga Parameter

Selain learning_rate, n_estimators dan max_depth, penggalakan berperingkat menyediakan pengawalan selia tambahan: min_samples_leaf (contoh minimum bagi setiap daun, menghalang terlebih padan pada kumpulan daun yang terlalu kecil), subsample (latihan stokastik, mengurangkan varians), max_features (pensampelan kecil ciri bagi setiap pemisahan, mengurangkan korelasi), min_impurity_decrease (hanya berpecah jika peningkatan melebihi ambang). Parameter sekunder ini lazimnya kurang penting berbanding tiga parameter utama, tetapi boleh memberikan perbezaan yang ketara pada set data yang bising.

Strategi Carian Hiperparameter Sistematik

Strategi praktikal 3 langkah untuk menala penggalakan berperingkat: (1) Tetapkan learning_rate=0.1, tetapkan n_estimators=1000 dengan penghentian awal — cari bilangan pusingan optimum; (2) Lakukan carian grid untuk max_depth (cuba 3, 4, 5, 6) dan min_samples_leaf (cuba 1, 5, 10) menggunakan bilangan pepohon daripada langkah 1; (3) Rendahkan kadar pembelajaran kepada 0.05 atau 0.01 dan skalakan n_estimators dengan sewajarnya untuk berpotensi meningkatkan lagi prestasi. Ini mengelakkan sumpahan dimensi apabila semua parameter dicari serentak.

subsample sebagai Pengawal Selia Stokastik

Menetapkan subsample < 1.0 (contohnya, 0.8) dalam penggalakan berperingkat bermaksud setiap pepohon dilatih menggunakan 80% data latihan yang dipilih secara rawak (tanpa penggantian). Ini dipanggil penggalakan berperingkat stokastik. Unsur stokastik memperkenalkan kepelbagaian antara pepohon (serupa dengan gugur keluar dalam rangkaian neural) dan sering meningkatkan prestasi pengesahan sebanyak 0.5-2%. Nilai lazim ialah 0.8. Jika anda mengurangkannya lagi (0.5), anda mungkin memerlukan lebih banyak pepohon untuk mengimbangi varians yang lebih tinggi bagi setiap pepohon.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score

X, y = load_breast_cancer(return_X_y=True)
for ss in [1.0, 0.8, 0.6, 0.5]:
    model = GradientBoostingClassifier(n_estimators=200, learning_rate=0.1, max_depth=3,
                                        subsample=ss, random_state=42)
    score = cross_val_score(model, X, y, cv=5).mean()
    print(f'subsample={ss}: CV accuracy={score:.4f}')

Mengimbangi Masa Latihan dan Prestasi

Dalam pengeluaran, masa latihan ialah kekangan sebenar. n_estimators yang lebih besar dan lebih banyak lipatan CV meningkatkan masa secara linear. Pintasan praktikal: (1) gunakan n_jobs=-1 untuk pelaksanaan selari pengesahan silang; (2) gunakan LightGBM atau XGBoost berbanding GradientBoosting sklearn untuk memperoleh peningkatan kelajuan 5-10 kali ganda; (3) gunakan RandomizedSearchCV dengan 30-50 lelaran berbanding carian grid penuh; (4) gunakan penghentian awal dalam lipatan pengesahan silang untuk menetapkan n_estimators secara automatik. Gabungan penghentian awal + LightGBM + RandomizedSearchCV mengurangkan masa penalaan dengan ketara tanpa menjejaskan ketepatan.

Hiperparameter Lalai Penggalakan Berperingkat

Titik permulaan lalai yang baik untuk hiperparameter penggalakan berperingkat: learning_rate=0.1, n_estimators=200 (dengan penghentian awal pada data tahan keluar), max_depth=3 untuk pengelasan atau 4-5 untuk regresi, subsample=0.8 untuk pengawalan selia stokastik, dan min_samples_leaf=5-10 bagi menghalang pemisahan berlebihan pada kumpulan kecil. Nilai lalai ini berfungsi dengan sangat baik merentas banyak set data dan sepatutnya menjadi titik permulaan anda sebelum sebarang penalaan. Lakukan penalaan hanya jika prestasi asas tidak mencukupi untuk kes penggunaan anda.

from sklearn.ensemble import GradientBoostingClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import cross_val_score

X, y = load_breast_cancer(return_X_y=True)
# Good defaults — try these before tuning
default_gb = GradientBoostingClassifier(
    learning_rate=0.1, n_estimators=200, max_depth=3,
    subsample=0.8, min_samples_leaf=5, random_state=42
)
scores = cross_val_score(default_gb, X, y, cv=5)
print('Default GBM CV:', scores.mean().round(4), '+/-', scores.std().round(4))

Semakan Pantas

Uji pemahaman anda tentang hiperparameter penggalakan berperingkat daripada pelajaran ini.

Rumusan Pelajaran

Dalam pelajaran ini anda telah mempelajari bahawa: kadar pembelajaran dan n_estimators mempunyai hubungan songsang — lr yang lebih rendah memerlukan lebih banyak pepohon, pepohon cetek (max_depth 2-5) lebih sesuai dalam penggalakan kerana bertindak sebagai pembelajar lemah, dan subsample serta min_samples_leaf menyediakan pengawalan selia tambahan melangkaui tiga parameter utama. Seterusnya kita akan meneroka Pengesahan Silang K-Lipatan dan cara menilai model tanpa membocorkan data ujian.

Percuma untuk bermula

Pelajari Python dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
30
Pelajaran
120

Soalan Lazim

Adakah pelajaran “Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth” percuma?

Ya — teks penuh “Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Machine Learning Academy, tingkat taraf kepada CoddyKit PRO. Kursus Machine Learning Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth”?

Pelajar akan menjejaki kesan pengecutan (kadar pembelajaran), saiz ensemble dan kedalaman terhadap pertukaran bias-varians melalui eksperimen sistematik. Anda berlatih Machine Learning Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Machine Learning Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Machine Learning Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Machine Learning Academy ini?

Ya. Setiap pelajaran Machine Learning Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Intuisi Boosting: Pembetulan Ralat Berjujukan
  2. XGBoost: Regularisasi, Pemberhentian Awal dan Kepentingan Ciri
  3. LightGBM: Pertumbuhan Mengikut Daun dan Kelebihan Kelajuan
  4. Hiperparameter Utama: Kadar Pembelajaran, n_estimators dan max_depth
← Kembali ke Machine Learning Academy