Latar belakang
Hari ini untuk mengeluarkan pipeline terlatih dari automl, Anda perlu memanggil fit
pada pipeline, karena automl selalu mengembalikan salinan pipeline yang tidak terlatih:
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'])
Tantangan
Kami ingin mempermudah orang-orang untuk menjalankan automl, memilih pipeline, dan menggunakan pipeline itu untuk iterasi dan debug, untuk menghasilkan wawasan, dan untuk diterapkan ke produksi.
Usul
Dalam jangka pendek (yaitu masalah ini): minta pengakses best_pipeline
mengembalikan jalur pipa yang terlatih:
automl.search(X_train, y_train)
best_pipeline = automl.best_pipeline
best_pipeline.score(X_test, y_test, objectives=['MSE'])
Jika pencarian automl belum berjalan, pengakses itu akan error.
Rekomendasi saya tentang cara menerapkan ini adalah memperbarui pencarian automl agar sesuai dengan pipa terbaik di akhir dan menyimpan referensi ke pipa terlatih itu.
Jangan lupa untuk memperbarui panduan pengguna!
Ada juga implikasi untuk pengujian kinerja: kita harus memperbarui kaca tampak untuk mencatat waktu pencarian otomatis dan waktu untuk menyesuaikan saluran terbaik secara terpisah, karena itu adalah operasi independen.
Masa depan
Untuk jangka panjang, saya ingin kita membuat abstraksi untuk menyimpan referensi ke data di luar panggilan ke search
. Ini akan memungkinkan kita untuk melakukan hal-hal seperti memiliki get_pipeline
mengembalikan pipeline terlatih juga, tanpa kita harus melatih semua pipeline selama panggilan ke automl search
.
Jadi rencananya adalah menambahkan argumen untuk X_test
dan y_test
ke AutoMLSearch.search
api ? Atau itu akan muat di X
dan y
diteruskan ke search
?
haruskah kita juga menambahkan flag train_best_pipeline
ke search()
atau __init__
untuk mengizinkan pengguna mematikan ini? saya pikir itu akan menyenangkan karena mereka dapat menambahkan waktu dan memori ekstra yang signifikan untuk tindakan yang mungkin tidak diinginkan pengguna
@freddyaboulton Saya pikir itu harus sesuai dengan seluruh data pelatihan yang diberikan ke search
@kmax12 poin bagus, setuju, kita bisa menambahkan flag train_best_pipeline
, default True. Dalam hal ini, TBD apa yang harus dilakukan API jika salah. Naluri saya adalah meminta best_pipeline
mengembalikan pipa yang tidak terlatih, tetapi jika ada yang memiliki ide yang lebih baik, saya setuju. @bchen1116 FYI
Komentar yang paling membantu
haruskah kita juga menambahkan flag
train_best_pipeline
kesearch()
atau__init__
untuk mengizinkan pengguna mematikan ini? saya pikir itu akan menyenangkan karena mereka dapat menambahkan waktu dan memori ekstra yang signifikan untuk tindakan yang mungkin tidak diinginkan pengguna