Persiapan data untuk klasifikasi

Pelajari cara menggunakan AutoML untuk menyiapkan data Anda untuk klasifikasi.

Artikel ini menjelaskan cara AutoML menyiapkan data untuk pelatihan klasifikasi 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

Hanya jenis fitur yang tercantum di bawah ini yang didukung. Misalnya, gambar tidak didukung.

Jenis fitur berikut didukung:

  • Numerik (ByteType, ShortType, IntegerType, LongType, FloatType, dan DoubleType)
  • Boolean
  • String (teks kategoris atau bahasa Inggris)
  • Penanda Waktu (TimestampType, DateType)
  • ArrayType[Numerik] (Databricks Runtime 10.4 LTS ML dan lebih tinggi)
  • DecimalType (Databricks Runtime 11.3 LTS ML ke atas)

Mengisi nilai yang hilang

Dalam Databricks Runtime 10.4 LTS ML ke atas, Anda dapat menentukan bagaimana nilai null diimplikasikan. Dalam UI, pilih metode dari menu drop-down di kolom Isi nilai dengan dalam skema tabel. Di API, gunakan imputers parameter . Untuk informasi selengkapnya, lihat Referensi API Python 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.

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 berbanding terbalik dengan derajat di mana kelas tertentu mengalami penurunan sampel. 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.

Pemilihan Kolom

Di Databricks Runtime 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 AutoML.

Anda tidak dapat menghilangkan kolom yang dipilih sebagai target prediksi atau sebagai kolom waktu untuk memisahkan data.

Secara default, semua kolom disertakan.

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.

Gunakan metode berikut untuk membagi data menjadi pelatihan, validasi, dan set pengujian:

(Default) Pemisahan acak: Jika strategi pemecahan data tidak ditentukan, dataset dibagi secara acak menjadi pemecahan pelatihan% 60, pemecahan validasi% 20, dan pemecahan 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. Setiap baris dengan nilai kolom terpisah selain train, test, atau validate akan diabaikan dan peringatan terkait akan diberikan.

Menyalin himpunan data besar

Meskipun 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.

Versi Runtime Databricks Perilaku pengambilan sampel
9.1 LTS ML - 10.4 LTS ML Fraksi pengambilan sampel konstan dan tidak bergantung pada jenis node kluster atau memori per simpul.
11.x ML Fraksi pengambilan sampel meningkat untuk nodus pekerja yang memiliki lebih banyak memori per inti. Untuk meningkatkan ukuran sampel:
  • Gunakan jenis instans yang dioptimalkan untuk memori.
  • Sesuaikan spark.task.cpus dalam konfigurasi Spark. Defaultnya adalah 1, dan nilai maksimum adalah jumlah CPU pada simpul pekerja. Nilai maksimum adalah jumlah CPU pada simpul pekerja. Saat Anda meningkatkan nilai ini, ukuran sampel lebih besar, tetapi lebih sedikit uji coba yang dijalankan secara paralel.

Contoh: Pada komputer dengan 4 core dan RAM 64GB:
  • Dengan spark.task.cpus=1, empat uji coba dijalankan untuk setiap pekerja, masing-masing menggunakan RAM 16GB.
  • Dengan spark.task.cpus=4, satu percobaan dijalankan per pekerja, menggunakan semua RAM 64GB.
11.3 LTS ML ke atas Jika AutoML mengambil sampel himpunan data, pecahan pengambilan sampel ditampilkan di tab Gambaran Umum di UI.
12.2 LTS ML ke atas AutoML dapat menangani himpunan data yang lebih besar dengan mengalokasikan lebih banyak inti CPU per tugas pelatihan. Tingkatkan ukuran sampel dengan memilih instans dengan lebih banyak memori total.

Untuk masalah klasifikasi, AutoML menggunakan metode PySpark sampleByuntuk pengambilan sampel bertahap untuk mempertahankan distribusi label target.

Untuk masalah regresi, AutoML menggunakan metode PySpark.sample

Deteksi jenis semantik

Catatan

  • AutoML tidak melakukan deteksi jenis semantik untuk kolom yang memiliki metode imputasi kustom 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 jenis 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 jenis 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 jenis 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 Databricks Runtime 10.1 ML ke atas, Anda dapat mengontrol jenis semantik yang ditetapkan secara manual dengan menempatkan anotasi jenis semantik pada kolom. Untuk membuat anotasi jenis semantik kolom secara manual <column-name> 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 diuraikan ke dalam angka).
  • datetime: Kolom berisi nilai tanda waktu (nilai string, numerik, atau tanggal yang dapat dikonversi menjadi tanda waktu).
  • text: Kolom string berisi teks bahasa Inggris.

Untuk menonaktifkan deteksi jenis semantik pada kolom, gunakan anotasi kata kunci khusus native.