バックグラウンド
今日、automlからトレーニング済みパイプラインを取得するには、パイプラインでfit
を呼び出す必要があります。これは、automlが常にパイプラインのトレーニングされていないコピーを返すためです。
automl.search(X_train, y_train)
best_pipeline = automl.best_pipeline
best_pipeline.fit(X_train, y_train)
best_pipeline.score(X_test, y_test, objectives=['MSE'])
pipeline = automl.get_pipeline(42)
pipeline.fit(X_train, y_train)
pipeline.score(X_test, y_test, objectives=['MSE'])
チャレンジ
automlを実行し、パイプラインを選択し、そのパイプラインを使用して反復とデバッグ、洞察の生成、本番環境へのデプロイをできるだけ簡単に行えるようにしたいと考えています。
提案
短期的に(つまり、この問題): best_pipeline
アクセサーにトレーニング済みのパイプラインを返してもらいます。
automl.search(X_train, y_train)
best_pipeline = automl.best_pipeline
best_pipeline.score(X_test, y_test, objectives=['MSE'])
automl検索がまだ実行されていない場合、そのアクセサーはエラーになるはずです。
これを実装する方法についての私の推奨事項は、automl検索を更新して、最後に最適なパイプラインに適合させ、そのトレーニングされたパイプラインへの参照を保存することです。
ユーザーガイドを更新することを忘れないでください!
パフォーマンステストにも影響があります。独立した操作であるため、自動検索時間と最適なパイプラインに適合する時間を別々に記録するように、見た目のガラスを更新する必要があります。
未来
長期的には、 search
呼び出しの外部でデータへの参照を保持するための抽象化を作成したいと思います。 これにより、automl search
の呼び出し中にすべてのパイプラインをトレーニングしなくても、 get_pipeline
がトレーニング済みのパイプラインを返すなどのことが可能になります。
したがって、計画はX_test
とy_test
引数をAutoMLSearch.search
apiに追加することですか? または、 y
渡されるsearch
X
とy
収まりますか?
また、フラグtrain_best_pipeline
をsearch()
または__init__
に追加して、ユーザーがこれをオフにできるようにする必要がありますか? ユーザーが望まないかもしれないアクションのためにかなりの余分な時間とメモリを追加する可能性があるので、それは素晴らしいことだと思います
@freddyaboulton search
に提供されたトレーニングデータ全体に収まるはずだと思います
@ kmax12良い点、同意しました。 train_best_pipeline
フラグを追加できます。デフォルトはTrueです。 その場合、APIがFalseの場合に何をすべきかを未定にします。 私の本能は、単にbest_pipeline
トレーニングされていないパイプラインを返してもらうことですが、誰かがより良いアイデアを持っているなら、私はすべての耳です。 @ bchen1116 FYI
最も参考になるコメント
また、フラグ
train_best_pipeline
をsearch()
または__init__
に追加して、ユーザーがこれをオフにできるようにする必要がありますか? ユーザーが望まないかもしれないアクションのためにかなりの余分な時間とメモリを追加する可能性があるので、それは素晴らしいことだと思います