始める無料で始める

ランダムフォレストのハイパーパラメータを調整する

どのモデルでも、ハイパーパラメータを調整してパフォーマンスを最適化することが重要です。ランダムフォレストには多くのハイパーパラメータがありますが、特に重要なのは各分割でサンプリングする特徴量の数です。sklearn ライブラリの RandomForestRegressor では、このパラメータは max_features で指定します。また、ランダムフォレストのようにランダム性を持つモデルでは、random_state を設定することで結果の再現性を確保できます。

通常は sklearn の GridSearchCV() を使ってハイパーパラメータを探索しますが、金融時系列データの場合はデータの混在を避けるため、交差検証は使用しません。古いデータでモデルを学習させ、新しいデータで評価するアプローチを取ります。そのため、ここでは sklearn の ParameterGrid を使って探索するハイパーパラメータの組み合わせを作成します。

この演習はコースの一部です

Python による金融のための Machine Learning

コースを見る

演習の手順

  • grid 辞書で、n_estimators ハイパーパラメータに値が1つ(200)のリストを設定してください。
  • grid 辞書で、max_features ハイパーパラメータに 4 と 8 を含むリストを設定してください。
  • ループ内で、ハイパーパラメータの各組み合わせ g を使い、ランダムフォレスト回帰モデル(rfr、作成済み)を train_featurestrain_targets に適合させてください。
  • rfr.score()test_features に対して使用して R\(^2\) を計算し、結果を 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])
コードを編集して実行