Menu
CoddyTech

Gradient Boosting

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 43 dari 58.

Hutan menumbuhkan pohon-pohonnya berdampingan. Gradient boosting menumbuhkannya satu per satu: setiap pohon baru mempelajari hal-hal yang masih salah diprediksi oleh pohon-pohon sebelumnya.

Di sini, model ini cocok untuk penjualan kedai smoothie, pohon demi pohon:

Titik-titik abu-abu menunjukkan penjualan smoothie selama 40 hari terhadap suhu, naik dari sekitar 20 menjadi 135. Garis bertitik setelah 1 pohon membentuk langkah kasar yang datar, garis putus-putus setelah 3 pohon mengikuti data dengan lebih baik, dan garis utuh setelah 15 pohon melewati titik-titik tersebut

Untuk class, modelnya adalah GradientBoostingClassifier:

from sklearn.ensemble import GradientBoostingClassifier

boost = GradientBoostingClassifier(n_estimators=100, learning_rate=0.1, random_state=0)
boost.fit(X_train, y_train)

learning_rate menentukan seberapa banyak dari setiap perbaikan yang dipertahankan. Langkah kecil lebih cermat, jadi membutuhkan lebih banyak pohon.

challenge icon

Tantangan

Sedang

Seorang penanam anggrek ingin mengetahui tanaman mana yang akan berbunga. Kode awal membagi data dari orchids.csv, menghitung skor random forest, lalu membaca jumlah pohon.

  1. Untuk setiap tingkat dalam rates, latih model boosting dengan jumlah pohon tersebut (random_state=0) dan cetak akurasi pengujiannya.
  2. Cetak tingkat terbaik. Jika hasilnya seri, pertahankan tingkat yang lebih awal.

Untuk penanam lain dan 20:

Forest: 0.860
Boosting at rate 0.01: 0.600
Boosting at rate 0.1: 0.860
Boosting at rate 1.0: 0.900
Best rate for 20 trees: 1.0

Lalu coba beberapa jumlah pohon: kapan boosting mengungguli random forest?

Coba sendiri

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier

# Anggrek di rak penanam: berbunga tahun ini (1) atau tidak (0)
orchids = pd.read_csv("orchids.csv")
X = orchids.drop(columns="bloomed")
y = orchids["bloomed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())
rates = [0.01, 0.1, 1.0]

# Jangan ubah baris di bawah ini: forest sebagai pembanding
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
print(f"Forest: {forest.score(X_test, y_test):.3f}")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online