Mulai sekarangMulai gratis

Menyetel hiperparameter random forest

Seperti pada semua model, kita ingin mengoptimalkan kinerja dengan menyetel hiperparameter. Random forest memiliki banyak hiperparameter, namun yang sering kali paling penting adalah jumlah fitur yang diambil sampelnya pada setiap pemisahan, yaitu max_features pada RandomForestRegressor dari pustaka sklearn. Untuk model seperti random forest yang memiliki unsur keacakan bawaan, kita juga ingin menetapkan random_state. Ini ditetapkan agar hasil kita dapat direproduksi.

Biasanya, kita dapat menggunakan metode GridSearchCV() dari sklearn untuk menelusuri hiperparameter, tetapi pada deret waktu keuangan, kita tidak ingin melakukan cross-validation karena dapat mencampur data. Kita ingin melatih model pada data paling lama dan mengevaluasinya pada data paling baru. Karena itu, kita akan menggunakan ParameterGrid dari sklearn untuk membuat kombinasi hiperparameter yang akan ditelusuri.

Latihan ini merupakan bagian dari kursus

Machine Learning untuk Keuangan dengan Python

Lihat Kursus

Instruksi latihan

  • Tetapkan hiperparameter n_estimators sebagai daftar dengan satu nilai (200) dalam kamus grid.
  • Tetapkan hiperparameter max_features sebagai daftar yang berisi 4 dan 8 dalam kamus grid.
  • Latih model random forest regressor (rfr, sudah disiapkan) pada train_features dan train_targets untuk setiap kombinasi hiperparameter, g, di dalam loop.
  • Hitung R\(^2\) dengan menggunakan rfr.score() pada test_features dan tambahkan hasilnya ke daftar test_scores.

Latihan interaktif langsung praktik

Cobalah latihan ini dengan melengkapi kode contoh ini.

from sklearn.model_selection import ParameterGrid

# Create a dictionary of hyperparameters to search
grid = {____, 'max_depth': [3], 'max_features': ____, 'random_state': [42]}
test_scores = []

# Loop through the parameter grid, set the hyperparameters, and save the scores
for g in ParameterGrid(grid):
    rfr.set_params(**g)  # ** is "unpacking" the dictionary
    rfr.fit(____, ____)
    test_scores.append(rfr.score(____, ____))

# Find best hyperparameters from the test score and print
best_idx = np.argmax(test_scores)
print(test_scores[best_idx], ParameterGrid(grid)[best_idx])
Edit dan Jalankan Kode