Evalml: AutoMLSearch: memanggil pencarian dua kali pada instance yang sama tidak berfungsi

Dibuat pada 11 Nov 2020  ·  5Komentar  ·  Sumber: alteryx/evalml

Tidak yakin apakah ini perilaku yang dimaksudkan, tetapi ketika saya memanggil automl.search(X, y) pada objek automl yang sama, pencarian kedua akan menjalankan putaran dasar dan kemudian berhenti karena jumlah iterasi dimulai pada 6 (atau 1+jumlah iterasi dari pencarian pertama):

image

bug

Semua 5 komentar

@ angela97lin Saya pikir

Saya pikir panggilan kedua untuk mencari harus tanpa operasi jadi mungkin kita harus memfaktorkan ulang pencarian untuk hanya mencetak garis dasar pada "putaran" pertama. Bagaimana menurut anda?

@freddyaboulton Hm, saya suka proposal Anda! Satu pertimbangan, meskipun: jika pengguna memasukkan X yang berbeda, y untuk objek automl yang sama, kami masih ingin menghitung ulang skor dasar, bukan? Namun kami belum memiliki cara untuk melacak sesi, jadi saya ingin tahu apakah yang terbaik adalah menghitung ulang baseline untuk berjaga-jaga?

Pada skala yang lebih besar, apakah dimaksudkan agar pengguna dapat menggunakan kembali objek automl yang sama? Atau haruskah mereka membuat objek baru setiap kali mereka ingin menjalankan pencarian?

Poin bagus @ angela97lin ! Saya pikir desain AutoMLSearch kami saat ini cocok dengan paradigma "satu objek per pencarian" yang Anda sebutkan. Alasan saya adalah bahwa banyak parameter konfigurasi yang ditentukan pengguna saat membuat pencarian khusus untuk masalah/set data yang ada ( problem_type , allowed_pipelines , objective ). Ada kemungkinan bahwa nilai untuk parameter ini masuk akal untuk satu jenis X , y tetapi tidak untuk jenis lain yang diberikan X , y dari jenis masalah yang sama . Selain itu, tabel rankings akan menyesatkan jika kita membiarkan pengguna memanggil pencarian pada kumpulan data yang terpisah karena skor cv tidak akan dapat dibandingkan secara langsung.

Jadi saya pikir jika kita ingin mengikuti apa yang kita miliki sejauh ini, kita harus melakukan solusi "tanpa operasi": pastikan tidak ada saluran pipa yang dinilai pada panggilan berikutnya untuk mencari jika kriteria penghentian telah terpenuhi. Saya pikir kita hanya harus menghitung ulang garis dasar jika kita mengubah desain kita untuk memungkinkan penggunaan kembali objek pencarian yang sama.

Senang membicarakan apakah kita harus memfaktorkan ulang/mendesain ulang AutoMLSearch untuk mengizinkan pemanggilan search beberapa kali. Saya belum memiliki pendapat yang kuat tentang apa yang paling berguna bagi pengguna akhir kami!

@angela97lin @freddyaboulton terima kasih atas pengajuan dan diskusi yang bagus. Saya setuju!

Seperti yang Anda berdua singgung, kita telah membicarakan tentang bottom-up ini, yaitu "mengingat API kita saat ini, seperti apa seharusnya perilakunya?", tetapi kita juga harus mempertimbangkan top-down ini, yaitu "hal-hal apa yang ingin dilakukan pengguna dengan pencarian automl?" Saya pikir jika kita memutuskan untuk mendukung perilaku seperti menjeda dan melanjutkan pencarian, kita harus mempertimbangkan untuk membangun API yang berbeda untuk itu ( #1047 ) sebelum kita menginvestasikan waktu untuk memperbarui AutoMLSearch lebih lanjut.

Dengan mengingat hal itu, opsi untuk apa yang harus terjadi ketika kita memanggil search lagi pada instance AutoMLSearch setelah panggilan pertama (tidak harus saling eksklusif):

  1. Perilaku buggy saat ini
  2. Kesalahan: "menjalankan penelusuran lebih dari sekali pada instance AutoMLSearch tidak diizinkan"
  3. No-op: tidak ada yang terjadi.
  4. Jalankan kembali seluruh pencarian dari awal. Semua status yang dibuat selama panggilan sebelumnya search akan ditimpa
  5. "Lanjutkan" atau "lanjutkan" pencarian dari tempat terakhirnya

Saya setuju bahwa opsi 0 (perilaku saat ini) bermasalah dan kita harus mengubahnya. Untuk saat ini saya paling suka opsi 2 atau 3. Saya pikir kita harus memilih opsi 3 untuk saat ini, dan jika itu terasa terlalu rumit untuk dibangun, kita dapat kembali ke opsi 2. Jangka panjang saya sebenarnya paling menyukai opsi 4 (melanjutkan) tetapi saya pikir kita harus memanfaatkannya untuk waktu yang lama. sekarang.

@dsherry @angela97lin @freddyaboulton Sekarang AutoMLSearch mengambil X_train dan y_train melalui inisialisasi AutoMLSearch daripada di fungsi pencarian, apakah opsi 3 masih merupakan cara terbaik untuk melanjutkan ? Karena data X dan y untuk pencarian akan sama jika mereka hanya memanggil pencarian, kita bisa saja memanggilnya tanpa operasi daripada menjalankan pencarian dari awal? Tapi selain itu, saya rasa tidak banyak lagi yang bisa dilakukan dalam masalah ini. Beri tau aku isi pikiranmu!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat