Perbaikan #970 .
Per diskusi dengan @freddyaboulton di #929, alangkah baiknya jika kami dapat memberikan informasi tambahan ke DataChecks. Ini akan memerlukan pembaruan DataCheck API dan mempertimbangkan cara interaksinya dengan AutoML, karena kami tidak membuat instance DataChecks dan hanya meneruskan kelas DataChecks sebagai parameter ke search()
.
@ angela97lin dapatkah Anda menjelaskan kasus penggunaan untuk ini?
@dsherry Tentu! Di #929, @freddyaboulton dan saya sedang mendiskusikan bagaimana alangkah baiknya jika InvalidTargetDataCheck
bisa lebih berguna jika mengetahui jenis masalah yang ditanganinya. Misalnya, jika kita tahu bahwa masalah kita adalah klasifikasi biner tetapi input ke pemeriksaan data memiliki lebih dari dua kelas, kita dapat memberikan peringatan/kesalahan. Oleh karena itu, alangkah baiknya jika dapat meneruskan parameter entah bagaimana atau hanya lebih banyak informasi ke pemeriksaan data. Sayangnya, ini tidak bekerja dengan baik dengan desain kami saat ini, di mana kami melewati kelas dan bukan instance.
Atau, kita dapat membuat kelas pemeriksaan data untuk setiap jenis masalah, seperti BinaryClassificationInvalidTargetDataCheck tetapi ini juga bisa menjadi sangat rumit, ketika menentukan apa yang harus disertakan DefaultDataChecks (atau haruskah ini juga dipecah menjadi DefaultBinaryClassificationDataChecks?)
Baru saja berdiskusi dengan @angela97lin @freddyaboulton
Kami menyukai gagasan untuk mencerminkan pola yang kami gunakan untuk component_graph
dalam pipeline:
DataCheck
(atau sama tetapi di dalam DataChecks
), bukan instanceDataChecks
data_check_parameters
dict, mirip dengan pipeline kami parameters
, yang berisi konfigurasi opsional untuk satu atau lebih pemeriksaan data.DataChecks
secara langsung, mereka dapat mengikuti pola yang serupadata_check_parameters
harus default ke None
sehingga orang tidak perlu membuatnya jika tidak diperlukan. Tetapi jika argumen yang diperlukan hilang dari pemeriksaan data (seperti problem_type
untuk beberapa) yang akan menghasilkan kesalahan inisialisasiBerikut ini sketsa tampilannya dalam pencarian automl:
# today this helper standardizes the input to a list of `DataCheck` instances, and wraps that in a `DataChecks` instance
# after this work, this would standardize the input to a `DataChecks` class.
# if `data_checks` was already a `DataChecks` class, do nothing. else if `data_checks` is a list of `DataCheck` classes, define a `AutoMLDataChecks` class to wrap and return that
data_checks_class = self._validate_data_checks(data_checks)
# next we create the `DataChecks` instance by passing in data checks parameters
data_check_parameters = {'Target Datatype Data Check': {'problem_type': self.problem_type}}
data_checks = data_checks_class(data_check_parameters)
data_check_results = data_checks.validate(X, y)
Penggunaan langsung akan terlihat serupa.
Langkah selanjutnya
TargetDatatype
(nama TBD), berdasarkan diskusi kami di #960 . Pemeriksaan data itu akan membutuhkan parameter problem_type
untuk diteruskanTargetDatatype
itu pada saat yang sama dan membangun ini! ️@dsherry Rencananya terlihat bagus bagi saya! Satu-satunya hal yang akan saya tambahkan adalah bahwa saya lebih suka menambah InvalidTargetDataCheck
yang sudah ada daripada membuat pemeriksaan data baru tetapi pendekatan mana pun akan berhasil untuk saya. Siapapun yang mengambil ini, pastikan untuk memeriksa bahwa target hanya memiliki dua nilai unik ketika problem_type
adalah biner. Ini disebutkan dalam ulasan untuk #929.
if problem_type == "binary" and len(set(y)) != 2:
# Warn that we do not have two unique values in y
Anda tahu, @angela97lin @freddyaboulton mari kita gunakan masalah ini untuk melacak keduanya a) memperbarui automl dan data memeriksa API untuk mendukung parameterisasi dan b) memperbarui InvalidTargetDataCheck
untuk memvalidasi target dan meningkatkan kesalahan cerdas, untuk semua target jenis yang kami dukung.
Menyebutkan karena saya baru saja mengajukan bug #970 dan melihat lebih dekat masalah ini akan diperbaiki dengan yang di atas. Jadi ini akan menutup #970.
@dsherry Betapa tepat waktu! Kedengarannya bagus untuk saya
Komentar yang paling membantu
Anda tahu, @angela97lin @freddyaboulton mari kita gunakan masalah ini untuk melacak keduanya a) memperbarui automl dan data memeriksa API untuk mendukung parameterisasi dan b) memperbarui
InvalidTargetDataCheck
untuk memvalidasi target dan meningkatkan kesalahan cerdas, untuk semua target jenis yang kami dukung.Menyebutkan karena saya baru saja mengajukan bug #970 dan melihat lebih dekat masalah ini akan diperbaiki dengan yang di atas. Jadi ini akan menutup #970.