ПочатиПочніть безкоштовно

Налаштування гіперпараметрів random forest

Як і для будь-яких моделей, ми хочемо підвищити якість, налаштовуючи гіперпараметри. У random forest є багато гіперпараметрів, але найважливішим часто є кількість ознак, які ми вибираємо на кожному розбитті, тобто max_features у RandomForestRegressor з бібліотеки sklearn. Для моделей на кшталт random forest, де є вбудована випадковість, також варто встановити random_state. Це потрібно, щоб результати можна було відтворити.

Зазвичай ми можемо використовувати метод sklearn GridSearchCV() для перебору гіперпараметрів, але для фінансових часових рядів крос-валідація небажана через перемішування даних. Ми хочемо навчати моделі на найстаріших даних і оцінювати на найновіших. Тому скористаємось sklearn ParameterGrid, щоб створити комбінації гіперпараметрів для пошуку.

Ця вправа є частиною курсу

Machine Learning для фінансів у Python

Переглянути курс

Інструкції до вправи

  • Встановіть гіперпараметр n_estimators як список з одним значенням (200) у словнику grid.
  • Встановіть гіперпараметр max_features як список, що містить 4 та 8, у словнику grid.
  • Навчіть модель регресора random forest (rfr, уже створено для вас) на train_features і train_targets для кожної комбінації гіперпараметрів g у циклі.
  • Обчисліть R\(^2\) за допомогою rfr.score() на test_features і додайте результат до списку test_scores.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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])
Редагувати та запускати код