ランダムフォレストの特徴量の重要度
ツリーベースの手法の便利な点の一つは、特徴量の重要度(feature importances)を抽出できることです。これは、各特徴量が予測にどれだけ貢献しているかを定量的に測る方法です。重要度の高い特徴量に注目して改善やチューニングを行ったり、モデルを複雑にしている不要な特徴量を取り除いたりするのに役立ちます。
sklearn のツリーモデルには、モデルのフィッティング後にアクセスできる .feature_importances_ プロパティがあります。このプロパティには特徴量の重要度スコアが格納されています。重要度の高い順に並べた棒グラフをきれいに描画するには、np.argsort() を使って特徴量の重要度をソートしたインデックスを取得する必要があります。
この演習はコースの一部です
Python による金融のための Machine Learning
演習の手順
- ランダムフォレストモデル(
rfr)のfeature_importances_プロパティを使って、特徴量の重要度をimportances変数に取り出しましょう。 - numpy の
argsortを使って、特徴量の重要度を大きい順に並べたインデックスを取得し、sorted_index変数に保存しましょう。 labels変数に x 軸のティックラベルとして特徴量名を設定しましょう。sorted_indexリストでインデックスを付けられるよう、feature_namesを numpy 配列に変換してから使用してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Get feature importances from our random forest model
importances = rfr.____
# Get the index of importances from greatest importance to least
sorted_index = ____(importances)[::-1]
x = range(len(importances))
# Create tick labels
labels = np.array(____)[____]
plt.bar(x, importances[sorted_index], tick_label=labels)
# Rotate tick labels to vertical
plt.xticks(rotation=90)
plt.show()