Pelatihan menggunakan algoritma XGBoost bawaan

Pelatihan dengan algoritma bawaan di Pelatihan AI Platform memungkinkan Anda mengirim set data dan melatih model tanpa menulis kode pelatihan apa pun. Halaman ini menjelaskan cara kerja algoritma XGBoost bawaan, dan cara menggunakannya.

Ringkasan

Algoritma XGBoost bawaan adalah wrapper untuk algoritma XGBoost yang kompatibel untuk dijalankan di AI Platform Training.

Dokumen ini menjelaskan versi algoritma yang berjalan pada satu replika mesin virtual. Ada juga versi terdistribusi dari algoritma ini yang menggunakan beberapa mesin virtual untuk pelatihan dan memerlukan penggunaan yang sedikit berbeda. Algoritma ini memiliki dua fase:

  1. Prapemrosesan: Pelatihan AI Platform memproses campuran data kategoris dan numerik Anda menjadi semua set data numerik guna mempersiapkannya untuk pelatihan dengan XGBoost.
  2. Pelatihan: AI Platform Training menjalankan pelatihan menggunakan algoritma XGBoost berdasarkan set data dan parameter model yang Anda berikan. Implementasi saat ini didasarkan pada versi 0.81 XGBoost.

Batasan

Fitur berikut tidak didukung untuk pelatihan dengan versi replika tunggal dari algoritme XGBoost bawaan:

Jenis mesin yang didukung

Tingkat skala dan jenis mesin Pelatihan AI Platform berikut didukung:

Memformat data input

XGBoost bekerja pada data tabel numerik. Setiap baris set data mewakili satu instance, dan setiap kolom set data mewakili nilai fitur. Kolom target mewakili nilai yang ingin Anda prediksi.

Menyiapkan file CSV

Data input harus berupa file CSV dengan encoding UTF-8. Jika data pelatihan Anda hanya terdiri dari nilai kategoris dan numerik, Anda dapat menggunakan modul pra-pemrosesan kami untuk mengonversi data kategoris menjadi data numerik. Jika tidak, Anda dapat menjalankan pelatihan tanpa mengaktifkan pra-pemrosesan otomatis.

Anda harus menyiapkan file CSV input untuk memenuhi persyaratan berikut:

  • Hapus baris header. Baris header berisi label untuk setiap kolom. Hapus baris header agar tidak mengirimkannya bersama instance data lainnya sebagai bagian dari data pelatihan.
  • Pastikan kolom target adalah kolom pertama. Kolom target berisi nilai yang Anda coba prediksi. Untuk algoritma klasifikasi, semua nilai dalam kolom target adalah class atau kategori. Untuk algoritma regresi, semua nilai dalam kolom target adalah nilai numerik.

Menangani nilai bilangan bulat

Arti nilai bilangan bulat dapat ambigu, yang membuat kolom nilai bilangan bulat bermasalah dalam pra-pemrosesan otomatis. AI Platform Training secara otomatis menentukan cara menangani nilai bilangan bulat. Secara default:

  • Jika setiap nilai bilangan bulat unik, kolom akan diperlakukan sebagai kunci instance.
  • Jika hanya ada beberapa nilai bilangan bulat unik, kolom akan diperlakukan sebagai kategoris.
  • Jika tidak, nilai dalam kolom akan dikonversi menjadi float dan diperlakukan sebagai numerik.

Untuk mengganti penentuan default ini:

  • Jika data harus diperlakukan sebagai numerik, konversi semua nilai bilangan bulat dalam kolom menjadi floating point, mis. {101,0, 102,0, 103,0}
  • Jika data harus diperlakukan sebagai kategoris, tambahkan awalan non-numerik ke semua nilai bilangan bulat dalam kolom, misalnya {kode_101, kode_102, kode_103}

Menormalisasi nilai target untuk regresi

Untuk tugas pelatihan regresi, pastikan untuk menormalisasi nilai target Anda sehingga setiap nilai berada di antara 0 dan 1.

Memeriksa izin bucket Cloud Storage

Untuk menyimpan data Anda, gunakan bucket Cloud Storage di project Google Cloud yang sama dengan yang Anda gunakan untuk menjalankan tugas Pelatihan AI Platform. Jika tidak, berikan AI Platform akses ke bucket Cloud Storage tempat data Anda disimpan.

Mengirim tugas pelatihan XGBoost

Bagian ini menjelaskan cara mengirimkan tugas pelatihan XGBoost bawaan.

Anda dapat menemukan penjelasan singkat tentang setiap hyperparameter dalam Google Cloud Console, dan penjelasan yang lebih komprehensif di referensi untuk algoritma XGBoost bawaan.

Konsol

  1. Buka halaman Tugas Pelatihan AI Platform di Konsol Google Cloud:

    Halaman Tugas Pelatihan AI Platform

  2. Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritme bawaan.

  3. Di halaman Create a new training job, pilih Built-in XGBoost, lalu klik Next.

  4. Untuk mempelajari lebih lanjut semua parameter yang tersedia, ikuti link di Konsol Google Cloud dan lihat referensi XGBoost bawaan untuk mengetahui detail lebih lanjut.

gcloud

  1. Tetapkan variabel lingkungan untuk tugas Anda, dengan mengisi [VALUES-IN-BRACKETS] dengan nilai Anda sendiri:

    # Specify the name of the Cloud Storage bucket where you want your
    # training outputs to be stored, and the Docker container for
    # your built-in algorithm selection.
    BUCKET_NAME='[YOUR-BUCKET-NAME]'
    IMAGE_URI='gcr.io/cloud-ml-algos/boosted_trees:latest'
    
    # Specify the Cloud Storage path to your training input data.
    TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
    DATASET_NAME='census'
    ALGORITHM='xgboost'
    MODEL_TYPE='classification'
    
    DATE='date '+%Y%m%d_%H%M%S''
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. Kirim tugas pelatihan menggunakan gcloud ai-platform jobs training submit:

    gcloud ai-platform jobs submit training $JOB_ID \
       --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
       -- \
       --preprocess --objective=binary:logistic \
       --training_data_path=$TRAINING_DATA
    
  3. Pantau status tugas pelatihan Anda dengan melihat log menggunakan gcloud. Lihat gcloud ai-platform jobs describe dan gcloud ai-platform jobs stream-logs.

    gcloud ai-platform jobs describe ${JOB_ID}
    gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Cara kerja pra-pemrosesan

Prapemrosesan otomatis bekerja untuk data kategoris dan numerik. Rutinitas pra-pemrosesan menganalisis terlebih dahulu, lalu mengubah data Anda.

Analisis

Pertama, AI Platform Training otomatis mendeteksi jenis data setiap kolom, mengidentifikasi cara setiap kolom harus diperlakukan, dan menghitung beberapa statistik data dalam kolom tersebut. Informasi ini dicatat dalam file metadata.json.

AI Platform Training menganalisis jenis kolom target untuk mengidentifikasi apakah set data tertentu ditujukan untuk regresi atau klasifikasi. Jika analisis ini bentrok dengan pilihan Anda untuk objective, akan terjadi error. Jelaskan cara memperlakukan kolom target dengan memformat data secara jelas dalam kasus yang ambigu.

  • Jenis: Kolom dapat berupa numerik atau kategori.

  • Perlakuan: Pelatihan AI Platform mengidentifikasi cara memperlakukan setiap kolom sebagai berikut:

    • Jika kolom mencakup satu nilai di semua baris, kolom tersebut diperlakukan sebagai konstanta.
    • Jika kolom bersifat kategoris, dan menyertakan nilai unik di semua baris, kolom tersebut akan diperlakukan sebagai row_identifier.
    • Jika kolom berupa numerik dengan nilai float, atau jika berupa numerik dengan nilai bilangan bulat dan berisi banyak nilai unik, kolom tersebut akan diperlakukan sebagai numerik.
    • Jika kolom bersifat numerik dengan nilai bilangan bulat, dan berisi sedikit nilai unik yang cukup, kolom tersebut akan diperlakukan sebagai kolom kategoris dengan nilai bilangan bulat berupa identitas atau kosakata.
      • Kolom dianggap memiliki beberapa nilai unik jika jumlah nilai unik dalam kolom kurang dari 20% dari jumlah baris dalam set data input.
    • Jika kolom merupakan kategoris dengan kardinalitas tinggi, kolom tersebut akan ditangani dengan hashing, dengan jumlah bucket hash sama dengan akar kuadrat dari jumlah nilai unik dalam kolom.
      • Kolom kategoris dianggap memiliki kardinalitas tinggi jika jumlah nilai unik lebih besar dari akar kuadrat jumlah baris dalam set data.
    • Jika kolom bersifat kategoris, dan jumlah nilai unik kurang dari atau sama dengan akar kuadrat jumlah baris dalam set data, kolom tersebut diperlakukan sebagai kolom kategoris normal dengan kosakata.
  • Statistik: Pelatihan AI Platform menghitung statistik berikut, berdasarkan jenis kolom dan perlakuan yang diidentifikasi, untuk digunakan untuk mengubah kolom di tahap berikutnya.

    • Jika kolom berupa angka, nilai {i>mean<i} dan varians akan dihitung.
    • Jika kolom bersifat kategoris, dan perlakuannya adalah identitas atau kosakata, nilai yang berbeda diekstrak dari kolom.
    • Jika kolom bersifat kategoris, dan perlakuannya adalah hashing, jumlah bucket hash dihitung berdasarkan kardinalitas kolom.

Transformasi

Setelah analisis awal set data selesai, AI Platform Training akan mentransformasi data Anda berdasarkan jenis, perlakuan, dan statistik yang diterapkan ke set data Anda. AI Platform Training melakukan transformasi dalam urutan berikut:

  1. Membagi set data pelatihan menjadi set data validasi dan pengujian jika Anda menentukan jumlah data pelatihan yang akan digunakan dalam setiap set data (dalam persentase).
  2. Menghapus setiap baris yang memiliki lebih dari 10% fitur yang hilang.
  3. Mengisi nilai yang tidak ada. {i>Mean<i} digunakan untuk kolom numerik, dan angka nol digunakan untuk kolom kategoris. Lihat contohnya di bawah.

  4. Untuk setiap kolom kategori dengan perlakuan kosakata dan identitas, AI Platform Training melakukan encoding one-hot pada nilai kolom. Lihat contohnya di bawah.

  5. Untuk setiap kolom kategori dengan perlakuan hashing, AI Platform Training menggunakan FeatureHasher scikit-learn untuk melakukan hashing fitur. Jumlah fitur yang dihitung sebelumnya akan menentukan jumlah bucket hash.

  6. Setiap kolom yang ditetapkan dengan perlakuan row_key atau konstan akan dihapus.

Contoh transformasi

Baris berisi 10% nilai yang tidak ada akan dihapus. Pada contoh berikut, anggaplah baris memiliki 10 nilai. Setiap contoh baris dipotong agar lebih praktis.

Masalah baris Nilai asli Nilai yang diubah Penjelasan
Contoh baris yang tidak memiliki nilai [3, 0,45, ...,
'fruits', 0, 1]
[3, 0,45, ...,
1, 0, 0, 0, 1]
String 'values' diubah menjadi nilai "1, 0, 0" dalam encoding one-hot.
Terlalu banyak nilai yang hilang [3, 0,45, ...,
'buah', __, __]
Baris dihapus Lebih dari 10% nilai dalam baris tidak ada.
Nilai numerik tidak ada [3, 0,45, ...,
'fruits', 0, __]
[3, 0,45, ...,
1, 0, 0, 0, 0,54]
  • Nilai rata-rata untuk kolom menggantikan nilai numerik yang tidak ada. Dalam contoh ini, {i>mean<i} adalah 0,54.
  • String 'values' diubah menjadi nilai "1, 0, 0" dalam encoding one-hot.
Nilai kategori tidak ada [3, 0,45, ...,
__, 0, 1]
[3, 0,45, ...,
0, 0, 0, 0, 1]
  • Nilai kategoris yang hilang diubah menjadi nilai "0, 0, 0" dalam encoding one-hot.

Setelah pra-pemrosesan otomatis selesai, AI Platform Training akan mengupload set data yang telah diproses kembali ke bucket Cloud Storage di direktori yang Anda tentukan dalam permintaan tugas.

Langkah selanjutnya