class sklearn.ensemble.RandomForestClassifier(n_estimators=10,
criterion='gini',
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.0,
max_features='auto',
max_leaf_nodes=None,
bootstrap=True,
oob_score=False,
n_jobs=1,
random_state=None,
verbose=0,
warm_start=False,
class_weight=None)
9つのサンプルと約7000の属性を持つランダムフォレストモデルを使用しています。これらのサンプルには、分類器が認識する3つのカテゴリがあります。
これは理想的な条件とはほど遠いことは知っていますが、フィーチャの予測で最も重要なのはどの属性かを把握しようとしています。機能の重要性を最適化するには、どのパラメーターがTweakに最適ですか?
別のn_estimators
と「重要な特徴」の量(つまり、feature_importances_
array)劇的に増加しました。
ドキュメントを読みましたが、これに関する経験がある人は、どのパラメーターを調整するのが最適かを知り、その理由を簡単に説明したいと思います。
私の経験から、sklearn RandomForestClassifierを使って調査する価値のある3つの機能が重要度の順にあります。
n_estimators
max_features
criterion
n_estimators
は本当に最適化する価値はありません。より多くの推定量を与えるほど、より良い結果が得られます。通常、500または1000で十分です。
max_features
は、さまざまな値を調べる価値があります。 RFの動作に大きな影響を与える可能性があります。これは、RFの各ツリーが各分割で考慮するフィーチャの数を決定するためです。
criterion
の影響はわずかですが、通常はデフォルトで問題ありません。時間があれば、試してみてください。
これらのパラメーターを試すときは、sklearnの GridSearch (GridSearchCVが望ましいが、データセットのサイズが小さすぎる)を使用してください。
しかし、あなたの質問を正しく理解していれば、サンプルは9つ、クラスは3つしかありませんか?おそらくクラスごとに3つのサンプルですか? RFは、適切な代表レコードでない限り、そのわずかな量のデータでオーバーフィットする可能性が非常に高いです。
通常、重要な部分は3つの要素です。
This すばらしい記事には、調整可能なパラメーターの詳細な説明、パフォーマンスと速度のトレードオフの追跡方法、実用的なヒント、およびグリッド検索の実行方法が記載されています。
n_estimators
は他の人が言ったように良いものです。また、オーバーフィットを増やした場合の対処にも優れています。
しかし、私は思います min_sample_split
は、小さなサンプルではあるが大きな機能のデータセットで発生した過剰適合に対処する場合にも役立ちます。