Mengonfigurasi pelatihan, validasi, validasi silang, dan data uji dalam pembelajaran mesin otomatis

BERLAKU UNTUK:Python SDK azureml v1

Dalam artikel ini, Anda mempelajari berbagai opsi untuk mengonfigurasi pemisahan data pelatihan dan data validasi bersama dengan pengaturan validasi silang untuk pembelajaran mesin otomatis, ML otomatis, dan percobaan Anda.

Di Azure Machine Learning, saat Anda menggunakan ML otomatis untuk membuat beberapa model ML, setiap turunan yang dijalankan perlu memvalidasi model terkait dengan menghitung metrik kualitas untuk model tersebut, seperti akurasi atau bobot AUC. Metrik ini dihitung dengan membandingkan prediksi yang dibuat untuk setiap model dengan label nyata dari pengamatan sebelumnya dalam data validasi. Pelajari selengkapnya tentang cara menghitung metrik berdasarkan jenis validasi.

Percobaan ML otomatis melakukan validasi model secara otomatis. Bagian berikut ini menjelaskan bagaimana Anda dapat menyesuaikan pengaturan validasi lebih lanjut dengan Azure Machine Learning Python SDK.

Untuk pengalaman low-code atau no-code, lihat Membuat percobaan pembelajaran mesin otomatis Anda di studio Azure Machine Learning.

Prasyarat

Untuk artikel ini Anda memerlukan,

Penting

Perintah Python dalam artikel ini memerlukan versi paket azureml-train-automl terbaru.

Pemisahan data default dan validasi silang dalam pembelajaran mesin

Gunakan objek AutoMLConfig untuk menentukan pengaturan percobaan dan pelatihan Anda. Dalam cuplikan kode berikut, perhatikan bahwa hanya parameter wajib yang ditentukan, yaitu parameter untuk n_cross_validations atau validation_datatidak disertakan.

Catatan

Pemisahan data default dan validasi silang tidak didukung dalam skenario prakiraan.

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = dataset,
                             label_column_name = 'Class'
                            )

Jika Anda tidak menentukan parameter validation_data atau n_cross_validations secara eksplisit, ML otomatis menerapkan teknik default bergantung pada jumlah baris yang disediakan dalam himpunan data tunggal.training_data

Ukuran data pelatihan Teknik validasi
Lebih besar dari 20.000 baris Pemisahan data pelatihan/validasi diterapkan. Defaultnya yaitu mengambil 10% dari himpunan data pelatihan awal sebagai set validasi. Pada saatnya, set validasi tersebut digunakan untuk perhitungan metrik.
Lebih kecil dari 20.000 baris Pendekatan validasi silang diterapkan. Jumlah lipatan default tergantung pada jumlah baris.
Jika himpunan data kurang dari 1.000 baris, 10 lipatan akan digunakan.
Jika baris antara 1.000 dan 20.000, maka tiga lipatan digunakan.

Menyediakan data validasi

Dalam hal ini, Anda dapat memulai dengan satu file data dan membaginya menjadi data pelatihan dan himpunan data validasi atau Anda dapat menyediakan file data terpisah untuk set validasi. Bagaimanapun, parameter validation_data dalam objek AutoMLConfig Anda menetapkan data mana yang akan digunakan sebagai set validasi Anda. Parameter ini hanya menerima himpunan data dalam bentuk himpunan data Azure Machine Learning atau dataframe pandas.

Catatan

Parameter validation_data mengharuskan parameter training_data dan label_column_name untuk diatur juga. Anda hanya dapat mengatur satu parameter validasi, yakni Anda hanya dapat menentukan salah satu validation_data atau n_cross_validations, bukan keduanya.

Contoh kode berikut secara eksplisit menentukan bagian mana dari data yang disediakan dalam dataset yang akan digunakan untuk pelatihan dan validasi.

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

training_data, validation_data = dataset.random_split(percentage=0.8, seed=1)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = training_data,
                             validation_data = validation_data,
                             label_column_name = 'Class'
                            )

Menyediakan ukuran set validasi

Dalam hal ini, hanya satu himpunan data yang disediakan untuk percobaan. Artinya, parameter validation_datatidak ditentukan, dan himpunan data yang disediakan ditetapkan ke parameter training_data.

Dalam objek AutoMLConfig Anda, Anda dapat menetapkan parameter validation_size untuk mempertahankan sebagian data pelatihan untuk validasi. Ini berarti bahwa set validasi akan dibagi oleh ML otomatis dari training_data awal yang disediakan. Nilai ini harus antara 0,0 dan 1,0 non-inklusif (misalnya, 0,2 berarti 20% data dipertahankan untuk data validasi).

Catatan

Parameter validation_size tidak didukung dalam skenario prakiraan.

Lihat contoh kode berikut:

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = dataset,
                             validation_size = 0.2,
                             label_column_name = 'Class'
                            )

Validasi silang lipatan k

Untuk melakukan validasi silang lipatan k, sertakan parameter n_cross_validations dan tetapkan ke sebuah nilai. Parameter ini menetapkan berapa banyak validasi silang yang harus dilakukan, berdasarkan jumlah lipatan yang sama.

Catatan

Parameter n_cross_validations ini tidak didukung dalam skenario klasifikasi yang menggunakan jaringan neural dalam. Untuk skenario prakiraan, lihat bagaimana validasi silang diterapkan dalam Set up AutoML untuk melatih model prakiraan deret waktu.

Dalam kode berikut, lima lipatan untuk validasi silang ditetapkan. Oleh karena itu, lima pelatihan yang berbeda, setiap pelatihan menggunakan 4/5 data, dan setiap validasi menggunakan 1/5 data dengan lipatan holdout yang berbeda setiap kalinya.

Hasilnya, metrik dihitung dengan rata-rata lima metrik validasi.

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = dataset,
                             n_cross_validations = 5
                             label_column_name = 'Class'
                            )

Validasi silang Monte Carlo

Untuk melakukan validasi silang Monte Carlo, sertakan parameter validation_size dan n_cross_validations dalam objek AutoMLConfig Anda.

Untuk validasi silang Monte Carlo, ML otomatis menyisihkan bagian data pelatihan yang ditentukan oleh parameter validation_size untuk validasi, lalu menetapkan sisa data untuk pelatihan. Proses ini kemudian diulang berdasarkan nilai yang ditentukan dalam parameter n_cross_validations; yang menghasilkan pemisahan pelatihan dan validasi baru, secara acak, setiap kalinya.

Catatan

Validasi silang Monte Carlo tidak didukung dalam skenario prakiraan.

Kode berikut menentukan, 7 lipatan untuk validasi silang dan 20% dari data pelatihan harus digunakan untuk validasi. Oleh karena itu, 7 pelatihan yang berbeda, setiap pelatihan menggunakan 80% data, dan setiap validasi menggunakan 20% data dengan lipatan holdout yang berbeda setiap kalinya.

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/creditcard.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = dataset,
                             n_cross_validations = 7
                             validation_size = 0.2,
                             label_column_name = 'Class'
                            )

Menentukan lipatan data validasi silang kustom

Anda juga dapat menyediakan lipatan data validasi silang (CV) Anda sendiri. Ini dianggap sebagai skenario yang lebih canggih karena Anda menentukan kolom mana yang akan dipisahkan dan digunakan untuk validasi. Sertakan kolom pemisahan CV kustom dalam data pelatihan Anda, dan tentukan kolom mana dengan mengisi nama kolom dalam parameter cv_split_column_names. Setiap kolom mewakili satu pemisahan validasi silang, dan diisi dengan nilai bilangan bulat 1 atau 0--dengan 1 menunjukkan baris yang harus digunakan untuk pelatihan dan 0 menunjukkan baris yang harus digunakan untuk validasi.

Catatan

Parameter cv_split_column_names tidak didukung dalam skenario prakiraan.

Cuplikan kode berikut berisi data pemasaran bank dengan dua kolom pemisahan CV 'cv1' dan 'cv2'.

data = "https://automlsamplenotebookdata.blob.core.windows.net/automl-sample-notebook-data/bankmarketing_with_cv.csv"

dataset = Dataset.Tabular.from_delimited_files(data)

automl_config = AutoMLConfig(compute_target = aml_remote_compute,
                             task = 'classification',
                             primary_metric = 'AUC_weighted',
                             training_data = dataset,
                             label_column_name = 'y',
                             cv_split_column_names = ['cv1', 'cv2']
                            )

Catatan

Untuk menggunakan cv_split_column_names bersama training_data dan label_column_name, tingkatkan Azure Machine Learning Python SDK Anda ke versi 1.6.0 atau yang lebih baru. Untuk versi SDK sebelumnya, silakan merujuk ke penggunaan cv_splits_indices, tetapi perlu dicatat bahwa itu hanya digunakan bersama himpunan data X dan y.

Perhitungan metrik untuk validasi silang dalam pembelajaran mesin

Ketika validasi silang lipatan k atau Monte Carlo digunakan, metrik dikomputasikan pada setiap lipatan validasi lalu diagregatkan. Operasi agregasi adalah rata-rata untuk metrik skalar dan jumlah untuk bagan. Metrik yang dikomputasi selama validasi silang didasarkan pada semua lipatan dan oleh karena itu semua sampel dikomputasi dari set pelatihan. Pelajari selengkapnya tentang metrik dalam pembelajaran mesin otomatis.

Saat set validasi kustom atau set validasi yang otomatis dipilih digunakan, metrik evaluasi model dikomputasi hanya dari set validasi tersebut, bukan data pelatihan.

Menyediakan data pengujian (pratinjau)

Penting

Fitur ini sedang dalam pratinjau umum. Versi pratinjau ini disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan yang dibatasi.

Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Anda juga dapat memberikan data pengujian untuk mengevaluasi model yang direkomendasikan yang dihasilkan ML otomatis untuk Anda setelah menyelesaikan percobaan. Saat Anda memberikan data pengujian, data akan dianggap terpisah dari pelatihan dan validasi, sehingga tidak membiaskan hasil eksekusi pengujian model yang direkomendasikan. Pelajari lebih lanjut pelatihan, validasi, dan data pengujian dalam ML otomatis.

Himpunan data uji harus dalam bentuk Azure Machine Learning TabularDataset. Anda dapat menentukan himpunan data uji dengan parameter test_data dan test_size dalam objek AutoMLConfig Anda. Parameter ini saling terpisah dan tidak dapat ditentukan secara bersamaan atau dengan cv_split_column_names atau cv_splits_indices.

Dengan parameter test_data, tentukan himpunan data yang ada untuk diteruskan ke objek AutoMLConfig Anda.

automl_config = AutoMLConfig(task='forecasting',
                             ...
                             # Provide an existing test dataset
                             test_data=test_dataset,
                             ...
                             forecasting_parameters=forecasting_parameters)

Untuk menggunakan pembagian latihan/pengujian alih-alih memberikan data pengujian secara langsung, gunakan parameter test_size saat membuat AutoMLConfig. Parameter ini harus menjadi nilai titik mengambang antara 0,0 dan 1,0 eksklusif, dan menentukan persentase himpunan data pelatihan yang harus digunakan untuk himpunan data pengujian.

automl_config = AutoMLConfig(task = 'regression',
                             ...
                             # Specify train/test split
                             training_data=training_data,
                             test_size=0.2)

Catatan

Untuk tugas regresi, digunakan pengambilan sampel acak.
Untuk tugas klasifikasi, digunakan pengambilan sampel bertingkat, tapi pengambilan sampel acak digunakan sebagai fallback saat pengambilan sampel bertingkat tidak memenuhi syarat.
Prakiraan saat ini tidak mendukung penentuan himpunan data pengujian menggunakan pembagian latihan/pengujian dengan parameter test_size.

Meneruskan parameter test_data atau test_size parameter ke dalam AutoMLConfig secara otomatis memicu eksekusi pengujian jarak jauh setelah menyelesaikan percobaan. Eksekusi pengujian ini menggunakan data pengujian yang disediakan untuk mengevaluasi model terbaik yang direkomendasikan oleh ML otomatis. Pelajari lebih lanjut cara mendapatkan prediksi dari eksekusi pengujian.

Langkah berikutnya