質問: DecisionTreeClassifier(criterion='entropy', max_depth=1) sklearn.ensemble.BaggingClassifier(base_estimator=clf, n_estimators=10, max_samples=1, max_features=1) ``` 上記のパラメータbase_estimator=clf1, n_estimators=10, max_samples=1, max_features=1はそれぞれ何を表しているのでしょうか。 n_estimatorsは決定木の個数、 max_samplesはそれぞれの決定木に使われる(抽出サンプル数/全体数)という割合、max_featuresはそれぞれの決定木に使われる(抽出サンプルの特徴量数/全体の特徴量数)という割合であっていますでしょうか。 また、上記理解が正しい場合、さらに以下の疑問があります。 max_samples=1のとき全体が抽出されるので、自動的に特徴量もmax_features=1になるような気がしており、どちらか一つの特徴量で良いのではないかと思っています。
回答: それぞれ * base_estimator 基となる推定器 * n_estimators 基となる推定器の数 * max_samples 各推定器を訓練する時に用いるサンプル数 * max_features 各推定器を訓練する時に用いる特徴量の数 になります。 ただし、max_samplesとmax_featuresは、intの場合とfloatの場合で意味が変わります。intで与えた場合は絶対数を、floatで与えた場合は全体に対する割合を指します。 より詳しい情報は公式ドキュメントをご覧ください。 > > また、上記理解が正しい場合、さらに以下の疑問があります。 > > max_samples=1のとき全体が抽出されるので、自動的に特徴量もmax_features=1になるような気がしており、どちらか一つの特徴量で良いのではないかと思っています。 > > > max_samples=1.0としてもmax_features=1.0とはなりませんし、どちらか一つで良いとはなりません。 サンプルと特徴量の違いを意識する必要があります。1行に1つのデータを持つ表形式の典型的なデータセットがあるとします。これがn行m列のデータセットであるとします。**サンプル**は各行に対応します。1行が1サンプルなので、このケースではnサンプルあることになります。一方、**特徴量**は各列に対応します。1列が1特徴量なので、このケースではm個の特徴量があることになります。 max_samples=1.0の場合、n個すべてのサンプルを用いることを意味します。ただし、これは必ずしもm個すべての特徴量を用いるという意味ではありません。用いる特徴量の個数はmax_featuresで指定します。