Evalml: automlにトレーニングデータ全体に最適なパイプラインを自動適合させる

作成日 2020年12月11日  ·  3コメント  ·  ソース: alteryx/evalml

バックグラウンド
今日、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がトレーニング済みのパイプラインを返すなどのことが可能になります。

enhancement

最も参考になるコメント

また、フラグtrain_best_pipelinesearch()または__init__に追加して、ユーザーがこれをオフにできるようにする必要がありますか? ユーザーが望まないかもしれないアクションのためにかなりの余分な時間とメモリを追加する可能性があるので、それは素晴らしいことだと思います

全てのコメント3件

したがって、計画はX_testy_test引数をAutoMLSearch.search apiに追加することですか? または、 y渡されるsearch Xy収まりますか?

また、フラグtrain_best_pipelinesearch()または__init__に追加して、ユーザーがこれをオフにできるようにする必要がありますか? ユーザーが望まないかもしれないアクションのためにかなりの余分な時間とメモリを追加する可能性があるので、それは素晴らしいことだと思います

@freddyaboulton searchに提供されたトレーニングデータ全体に収まるはずだと思います

@ kmax12良い点、同意しました。 train_best_pipelineフラグを追加できます。デフォルトはTrueです。 その場合、APIがFalseの場合に何をすべきかを未定にします。 私の本能は、単にbest_pipelineトレーニングされていないパイプラインを返してもらうことですが、誰かがより良いアイデアを持っているなら、私はすべての耳です。 @ bchen1116 FYI

このページは役に立ちましたか?
0 / 5 - 0 評価