ランダムフォレスト

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

Nathan George

Data Science Professor

多項式フィット

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

線形フィット

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

ランダムフォレスト

ランダムフォレストgraphviz

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

ブートストラップ集約(バギング)

ブートストラッピング

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

特徴量サンプリング

ランダムフォレスト

  • 決定木の集合(アンサンブル)
  • ブートストラップ集約(バギング)
  • 分岐ごとの特徴量のサンプリング
Python による金融のための Machine Learning

sklearnによる実装

from sklearn.ensemble import RandomForestRegressor

random_forest = RandomForestRegressor()
random_forest.fit(train_features, train_targets)
print(random_forest.score(train_features, train_targets))
Python による金融のための Machine Learning

ハイパーパラメータ

random_forest = RandomForestRegressor(n_estimators=200,
                                      max_depth=5,
                                      max_features=4,
                                      random_state=42)
Python による金融のための Machine Learning

ParameterGrid

from sklearn.model_selection import ParameterGrid

grid = {'n_estimators': [200], 
        'max_depth':[3, 5], 
        'max_features': [4, 8]}

from pprint import pprint pprint(list(ParameterGrid(grid)))
[{'max_depth': 3, 'max_features': 4, 'n_estimators': 200},
 {'max_depth': 3, 'max_features': 8, 'n_estimators': 200},
 {'max_depth': 5, 'max_features': 4, 'n_estimators': 200},
 {'max_depth': 5, 'max_features': 8, 'n_estimators': 200}]
Python による金融のための Machine Learning

ParameterGrid

test_scores = []
# loop through the parameter grid, set hyperparameters, save the scores
for g in ParameterGrid(grid):
    rfr.set_params(**g)  # ** is "unpacking" the dictionary
    rfr.fit(train_features, train_targets)
    test_scores.append(rfr.score(test_features, test_targets))

# find best hyperparameters from the test score and print best_idx = np.argmax(test_scores) print(test_scores[best_idx]) print(ParameterGrid(grid)[best_idx])
0.05594252725411142
{'max_depth': 5, 'max_features': 8, 'n_estimators': 200}
Python による金融のための Machine Learning

ランダムフォレストを構築しましょう!

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

Preparing Video For Download...