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 search 还没有运行,那个访问器应该会出错。

我对如何实现这一点的建议是更新 automl 搜索以适应最后的最佳管道,并保存对经过训练的管道的引用。

不要忘记更新用户指南!

性能测试也有影响:我们应该更新窥镜以分别记录自动搜索时间和适合最佳管道的时间,因为它们是独立的操作。

未来
从长远来看,我希望我们创建一个抽象来保存对search调用之外的数据的引用。 这将允许我们执行诸如让get_pipeline返回训练好的管道之类的事情,而无需在调用 automl search期间训练所有管道。

enhancement

最有用的评论

我们是否还应该向search()__init__添加一个标志train_best_pipeline __init__以允许用户将其关闭? 我认为这会很好,因为它们可以为用户可能不希望发生的操作增加大量额外的时间和内存

所有3条评论

所以计划是将X_testy_testAutoMLSearch.search api 中? 或者它适合传递给searchXy search

我们是否还应该向search()__init__添加一个标志train_best_pipeline __init__以允许用户将其关闭? 我认为这会很好,因为它们可以为用户可能不希望发生的操作增加大量额外的时间和内存

@freddyaboulton我认为它应该适合提供给search的整个训练数据

@kmax12好点,同意,我们可以添加一个train_best_pipeline标志,默认为 True。 在这种情况下,待定 API 为 False 时应该做什么。 我的直觉是简单地让best_pipeline返回一个未经训练的管道,但如果有人有更好的主意,我会全力以赴。 @bchen1116仅供参考

此页面是否有帮助?
0 / 5 - 0 等级