Penyiapan dan pemrosesan data Mosaic AutoML
Artikel ini menjelaskan cara Mosaic AutoML menyiapkan data untuk pelatihan pembelajaran mesin dan menjelaskan pengaturan data yang dapat dikonfigurasi. Anda dapat menyesuaikan opsi ini selama penyiapan eksperimen di UI AutoML. Untuk mengonfigurasi pengaturan ini menggunakan API AutoML), lihat referensi API Python AutoML.
Jenis fitur data yang didukung
Tipe fitur yang tidak tercantum di bawah ini tidak didukung. Misalnya, gambar tidak didukung.
Jenis fitur berikut didukung:
- Numerik (
ByteType
,ShortType
,IntegerType
,LongType
,FloatType
, danDoubleType
) - Boolean
- String (teks kategoris atau bahasa Inggris)
- Stempel waktu (
TimestampType
,DateType
) - ArrayType[Numerik] (Databricks Runtime 10.4 LTS ML dan lebih tinggi)
- DecimalType (Databricks Runtime 11.3 LTS ML ke atas)
Pilihan kolom
Catatan
Fungsionalitas ini hanya tersedia untuk masalah klasifikasi dan regresi
Di Runtime Databricks 10.3 ML ke atas, Anda dapat menentukan kolom mana yang harus digunakan AutoML untuk pelatihan. Untuk mengecualikan kolom di UI, hapus centang di kolom Sertakan . Di API, gunakan exclude_cols
parameter . Untuk informasi selengkapnya, lihat Referensi API Python Mosaic AutoML.
Anda tidak dapat menjatuhkan kolom yang dipilih sebagai target prediksi atau sebagai kolom waktu untuk membagi data.
Secara default, semua kolom disertakan.
Impute nilai yang hilang
Di Databricks Runtime 10.4 LTS ML dan di atasnya, Anda dapat menentukan bagaimana nilai null diperhitungkan. Di antarmuka pengguna, pilih metode dari drop down di kolom Impute dengan di skema tabel. Di API, gunakan imputers
parameter . Untuk informasi selengkapnya, lihat Referensi API Python Mosaic AutoML.
Secara default, AutoML memilih metode imputasi berdasarkan jenis kolom dan konten.
Catatan
Jika Anda menetapkan metode imputasi non-default, AutoML tidak melakukan deteksi jenis semantik.
Membagi data menjadi kumpulan pelatihan, validasi, dan pengujian
AutoML membagi data Anda menjadi tiga pemisahan untuk pelatihan, validasi, dan pengujian. Bergantung pada jenis masalah ML, Anda memiliki opsi yang berbeda untuk memisahkan data.
Memisahkan data untuk regresi dan klasifikasi
Gunakan metode berikut untuk membagi data menjadi pelatihan, validasi, dan set pengujian untuk tugas regresi dan klasifikasi:
(Default) Pemisahan acak: Jika strategi pemisahan data tidak ditentukan, himpunan data dibagi secara acak menjadi 60% pemisahan pelatihan, pemisahan validasi 20%, dan pemisahan pengujian 20%. Untuk klasifikasi, pemisahan acak bertingkat memastikan bahwa setiap kelas diwakili secara memadai dalam set pelatihan, validasi, dan pengujian.
Pemisahan kronologis: Dalam Databricks Runtime 10.4 LTS ML ke atas, Anda dapat memilih kolom waktu untuk membuat pelatihan kronologis, memvalidasi, dan menguji pemisahan. Pemisahan kronologis menggunakan titik data paling awal untuk pelatihan, yang paling awal berikutnya untuk validasi, dan poin terbaru untuk pengujian. Kolom waktu dapat berupa kolom tanda waktu, bilangan bulat, atau string.
Pemisahan manual: Di Databricks Runtime 15.3 ML ke atas, Anda dapat menggunakan API untuk menyiapkan pemisahan manual. Tentukan kolom terpisah dan gunakan nilai train
, , validate
atau test
untuk mengidentifikasi baris yang ingin Anda gunakan untuk pelatihan, validasi, dan himpunan data pengujian. Baris apa pun dengan nilai kolom terpisah selain train
, , test
atau validate
diabaikan dan pemberitahuan terkait dinaikkan.
Memisahkan data untuk prakiraan
Untuk tugas prakiraan, AutoML menggunakan validasi silang rangkaian waktu. Metode ini secara bertahap memperluas himpunan data pelatihan secara kronologis dan melakukan validasi pada titik waktu berikutnya. Validasi silang memberikan evaluasi performa model yang kuat atas segmen temporal yang berbeda. Ini memastikan bahwa model prakiraan diuji secara ketat terhadap data masa depan yang tidak terlihat, mempertahankan relevansi dan akurasi prediksi.
Jumlah lipatan validasi silang tergantung pada karakteristik tabel input seperti jumlah rangkaian waktu, keberadaan kovariate, dan panjang rangkaian waktu.
Menyalin himpunan data besar
Catatan
Pengambilan sampel tidak diterapkan untuk memprakirakan masalah.
Sementara AutoML mendistribusikan uji coba pengaturan hyperparameter di seluruh node pekerja dari sebuah kluster, setiap model dilatih pada satu node pekerja.
AutoML secara otomatis memperkirakan memori yang diperlukan untuk memuat dan melatih himpunan data Anda dan mengambil sampel himpunan data jika perlu.
Dalam Databricks Runtime 9.1 LTS ML melalui Databricks Runtime 10.4 LTS ML, fraksi pengambilan sampel tidak bergantung pada jenis node kluster atau jumlah memori pada setiap simpul.
Dalam Databricks Runtime 11.x ML:
- Fraksi pengambilan sampel meningkat untuk node pekerja dengan lebih banyak memori per core. Anda dapat meningkatkan ukuran sampel dengan memilih jenis instans memori yang dioptimalkan.
- Anda dapat meningkatkan ukuran sampel lebih lanjut dengan memilih nilai yang lebih besar untuk
spark.task.cpus
dalam konfigurasi Spark untuk kluster. Pengaturan default adalah 1; nilai maksimum adalah jumlah CPU di node pekerja. Saat Anda meningkatkan nilai ini, ukuran sampel lebih besar, tetapi lebih sedikit uji coba yang dijalankan secara paralel. Misalnya, dalam mesin dengan empat inti dan total RAM 64GB, defaultspark.task.cpus=1
menjalankan empat uji coba per pekerja, dengan setiap uji coba dibatasi hingga RAM 16GB. Jika Anda mengaturspark.task.cpus=4
, setiap pekerja hanya menjalankan satu percobaan, tetapi uji coba tersebut dapat menggunakan RAM 64GB.
Dalam Databricks Runtime 12.2 LTS ML ke atas, AutoML dapat melatih himpunan data yang lebih besar dengan mengalokasikan lebih banyak inti CPU per tugas pelatihan. Anda dapat meningkatkan ukuran sampel dengan memilih ukuran instans dengan lebih banyak memori total.
Di Databricks Runtime 11.3 LTS ML ke atas, jika AutoML mengambil sampel himpunan data, fraksi pengambilan sampel ditampilkan di tab Gambaran Umum di UI.
Untuk masalah klasifikasi, AutoML menggunakan metode PySpark sampleBy
untuk pengambilan sampel bertahap untuk mempertahankan distribusi label target.
Untuk masalah regresi, AutoML menggunakan metode PySpark.sample
Dukungan himpunan data yang tidak seimbang untuk masalah klasifikasi
Dalam Databricks Runtime 11.3 LTS ML ke atas, jika AutoML mendeteksi bahwa himpunan data tidak seimbang, ia mencoba mengurangi ketidakseimbangan himpunan data pelatihan dengan menurunkan sampel kelas utama dan menambahkan bobot kelas. AutoML hanya menyeimbangkan himpunan data pelatihan dan tidak menyeimbangkan himpunan data pengujian dan validasi. Melakukannya memastikan bahwa performa model selalu dievaluasi pada himpunan data yang tidak diperkaya dengan distribusi kelas input yang sebenarnya.
Untuk menyeimbangkan himpunan data pelatihan yang tidak seimbang, AutoML menggunakan bobot kelas yang terkait secara terbalik dengan derajat di mana kelas tertentu di-downsampled. Misalnya, jika himpunan data pelatihan dengan 100 sampel memiliki 95 sampel milik kelas A dan lima sampel milik kelas B, AutoML mengurangi ketidakseimbangan ini dengan menurunkan sampel kelas A menjadi 70 sampel, yaitu, downsampling kelas A dengan rasio 70/95 atau 0,736 sambil menyimpan jumlah sampel di kelas B pada 5. Untuk memastikan bahwa model akhir dikalibrasi dengan benar dan distribusi probabilitas output model sama dengan input, AutoML meningkatkan bobot kelas untuk kelas A dengan rasio 1/0,736, atau 1,358, sambil menjaga berat kelas B sebagai 1. AutoML kemudian menggunakan bobot kelas ini dalam pelatihan model sebagai parameter untuk memastikan bahwa sampel dari setiap kelas ditimbang dengan tepat saat melatih model.
Agregat Rangkaian Waktu
Untuk memprakirakan masalah, ketika ada beberapa nilai untuk stempel waktu dalam deret waktu, AutoML menggunakan rata-rata nilai.
Untuk menggunakan jumlah sebagai gantinya , edit buku catatan kode sumber yang dihasilkan oleh eksekusi uji coba. Dalam data Agregat menurut... sel, ubah .agg(y=(target_col, "avg"))
menjadi .agg(y=(target_col, "sum"))
, seperti yang ditunjukkan:
group_cols = [time_col] + id_cols
df_aggregation = df_loaded \
.groupby(group_cols) \
.agg(y=(target_col, "sum")) \
.reset_index() \
.rename(columns={ time_col : "ds" })
Deteksi jenis semantik
Catatan
- Deteksi tipe semantik tidak diterapkan untuk memprakirakan masalah.
- AutoML tidak melakukan deteksi tipe semantik untuk kolom yang memiliki metode imputasi khusus yang ditentukan.
Dengan Databricks Runtime 9.1 LTS ML ke atas, AutoML mencoba mendeteksi apakah kolom memiliki jenis semantik yang berbeda dari jenis data Spark atau panda dalam skema tabel. AutoML memperlakukan kolom ini sebagai tipe semantik yang terdeteksi. Deteksi ini adalah upaya terbaik dan terkadang mungkin melewatkan keberadaan jenis semantik. Anda juga dapat mengatur jenis semantik kolom secara manual atau memberi tahu AutoML untuk tidak menerapkan deteksi tipe semantik ke kolom menggunakan anotasi.
Secara khusus, AutoML membuat penyesuaian ini:
- Kolom string dan bilangan bulat yang mewakili data tanggal atau tanda waktu diperlakukan sebagai jenis tanda waktu.
- Kolom string yang mewakili data numerik diperlakukan sebagai tipe numerik.
Dengan Runtime Databricks 10.1 ML ke atas, AutoML juga melakukan penyesuaian ini:
- Kolom numerik yang berisi ID kategoris diperlakukan sebagai fitur kategoris.
- Kolom string yang berisi teks bahasa Inggris diperlakukan sebagai fitur teks.
Anotasi tipe semantik
Dengan Runtime Databricks 10.1 ML ke atas, Anda dapat mengontrol tipe semantik yang ditetapkan secara manual dengan menempatkan anotasi tipe semantik pada kolom. Untuk membuat anotasi tipe kolom <column-name>
semantik secara manual sebagai <semantic-type>
, gunakan sintaks berikut:
metadata_dict = df.schema["<column-name>"].metadata
metadata_dict["spark.contentAnnotation.semanticType"] = "<semantic-type>"
df = df.withMetadata("<column-name>", metadata_dict)
<semantic-type>
Bisa jadi salah satu dari yang berikut:
categorical
: Kolom berisi nilai kategoris (misalnya, nilai numerik yang harus diperlakukan sebagai ID).numeric
: Kolom berisi nilai numerik (misalnya, nilai string yang dapat diurai menjadi angka).datetime
: Kolom berisi nilai stempel waktu (nilai string, numerik, atau tanggal yang dapat diubah menjadi stempel waktu).text
: Kolom string berisi teks bahasa Inggris.
Untuk menonaktifkan deteksi tipe semantik pada kolom, gunakan anotasi kata kunci khusus native
.
Integrasi Penyimpanan Fitur
Dengan Databricks Runtime 11.3 LTS ML ke atas, Anda dapat menggunakan tabel fitur yang ada di Penyimpanan Fitur untuk menambah himpunan data input asli untuk masalah klasifikasi dan regresi Anda.
Dengan Databricks Runtime 12.2 LTS ML ke atas, Anda dapat menggunakan tabel fitur yang ada di Penyimpanan Fitur untuk menambah himpunan data input asli untuk semua masalah AutoML Anda: klasifikasi, regresi, dan prakiraan.
Untuk membuat tabel fitur, lihat Rekayasa fitur dan penyajian.
Untuk menggunakan tabel fitur yang ada, Anda dapat memilih tabel fitur dengan UI AutoML atau mengatur feature_store_lookups
parameter dalam spesifikasi eksekusi AutoML Anda.
feature_store_lookups = [
{
"table_name": "example.trip_pickup_features",
"lookup_key": ["pickup_zip", "rounded_pickup_datetime"],
},
{
"table_name": "example.trip_dropoff_features",
"lookup_key": ["dropoff_zip", "rounded_dropoff_datetime"],
}
]
Contoh buku catatan: Eksperimen AutoML dengan Penyimpanan Fitur
Buku catatan berikut ini memperlihatkan cara melatih model ML dengan tabel fitur AutoML dan Penyimpanan Fitur.