Pelatihan menggunakan algoritma XGBoost bawaan

Pelatihan dengan algoritma bawaan di AI Platform Training memungkinkan Anda mengirimkan 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 di satu replika virtual machine. Ada juga versi terdistribusi algoritma ini yang menggunakan beberapa virtual machine untuk pelatihan dan memerlukan penggunaan yang sedikit berbeda. Algoritma ini memiliki dua fase:

  1. Prapemrosesan: AI Platform Training memproses campuran data kategoris dan numerik Anda menjadi set data yang semuanya numerik untuk menyiapkannya 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 XGBoost 0.81.

Batasan

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

Jenis mesin yang didukung

Tingkat skala dan jenis mesin AI Platform Training berikut didukung:

Memformat data input

XGBoost berfungsi pada data tabulasi 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 Anda harus berupa file CSV dengan encoding UTF-8. Jika data pelatihan Anda hanya terdiri dari nilai kategoris dan numerik, Anda dapat menggunakan modul prapemrosesan 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 untuk menghindari pengirimannya bersama dengan 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 di kolom target adalah class atau kategori. Untuk algoritma regresi, semua nilai dalam kolom target adalah nilai numerik.

Menangani nilai bilangan bulat

Makna nilai bilangan bulat dapat ambigu, yang membuat kolom nilai bilangan bulat bermasalah dalam prapemrosesan otomatis. Pelatihan AI Platform otomatis menentukan cara menangani nilai bilangan bulat. Secara default:

  • Jika setiap nilai bilangan bulat bersifat 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, konversikan semua nilai bilangan bulat di kolom ke floating point, misalnya. {101.0, 102.0, 103.0}
  • Jika data harus diperlakukan sebagai kategoris, tambahkan awalan non-numerik ke semua nilai bilangan bulat dalam kolom, misalnya. {code_101, code_102, code_103}

Mennormalisasi nilai target untuk regresi

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

Memeriksa izin bucket Cloud Storage

Untuk menyimpan data, gunakan bucket Cloud Storage di project Google Cloud yang sama dengan yang Anda gunakan untuk menjalankan tugas AI Platform Training. Jika tidak, berikan akses Pelatihan AI Platform 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 konsol Google Cloud, dan penjelasan yang lebih komprehensif di referensi untuk algoritma XGBoost bawaan.

Konsol

  1. Buka halaman AI Platform Training Jobs di konsol Google Cloud:

    Halaman Lowongan AI Platform Training

  2. Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritma 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 selengkapnya.

gcloud

  1. Tetapkan variabel lingkungan untuk tugas Anda, isi [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 dengan 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 prapemrosesan

Pra-pemrosesan otomatis berfungsi untuk data kategoris dan numerik. Rutinitas prapemrosesan terlebih dahulu menganalisis, lalu mengubah data Anda.

Analisis

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

AI Platform Training menganalisis jenis kolom target untuk mengidentifikasi apakah set data yang diberikan untuk regresi atau klasifikasi. Jika analisis ini bertentangan dengan pilihan Anda untuk objective, hal ini akan menghasilkan error. Jelaskan secara eksplisit cara kolom target harus diperlakukan dengan memformat data Anda dengan jelas dalam kasus yang ambigu.

  • Jenis: Kolom dapat berupa numerik atau kategoris.

  • Penanganan: Pelatihan AI Platform mengidentifikasi cara menangani setiap kolom sebagai berikut:

    • Jika kolom menyertakan satu nilai di semua baris, kolom tersebut akan diperlakukan sebagai konstanta.
    • Jika kolom bersifat kategoris, dan menyertakan nilai unik di semua baris, kolom tersebut akan diperlakukan sebagai row_identifier.
    • Jika kolom bersifat numerik dengan nilai float, atau jika bersifat 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, kolom tersebut akan diperlakukan sebagai kolom kategoris dengan nilai bilangan bulat sebagai identitas atau kosakata.
      • Kolom dianggap memiliki sedikit nilai unik jika jumlah nilai unik dalam kolom kurang dari 20% jumlah baris dalam set data input.
    • Jika kolom bersifat kategoris dengan kardinalitas tinggi, kolom tersebut akan diperlakukan 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 akan diperlakukan sebagai kolom kategoris normal dengan kosakata.
  • Statistik: AI Platform Training menghitung statistik berikut, berdasarkan jenis kolom dan perlakuan yang diidentifikasi, untuk digunakan dalam transformasi kolom pada tahap selanjutnya.

    • Jika kolom bersifat numerik, nilai rata-rata dan varians akan dihitung.
    • Jika kolom bersifat kategoris, dan perlakuannya adalah identitas atau kosakata, nilai yang berbeda akan diekstrak dari kolom.
    • Jika kolom bersifat kategoris, dan perlakuannya adalah hashing, jumlah bucket hash dihitung sehubungan dengan kardinalitas kolom.

Transformasi

Setelah analisis awal set data selesai, AI Platform Training akan mengubah 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 di masing-masing set data (sebagai persentase).
  2. Menghapus baris yang memiliki lebih dari 10% fitur yang tidak ada.
  3. Mengisi nilai yang tidak ada. Rata-rata digunakan untuk kolom numerik, dan nol digunakan untuk kolom kategoris. Lihat contoh di bawah.

  4. Untuk setiap kolom kategoris dengan perlakuan kosakata dan identitas, Pelatihan AI Platform melakukan encoding one-hot pada nilai kolom. Lihat contoh di bawah.

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

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

Contoh transformasi

Baris dengan 10% nilai yang hilang akan dihapus. Dalam contoh berikut, asumsikan baris memiliki 10 nilai. Setiap contoh baris dipotong untuk memudahkan.

Masalah baris Nilai asli Nilai yang diubah Penjelasan
Contoh baris tanpa nilai yang hilang [3, 0,45, ...,
'buah', 0, 1]
[3, 0,45, ...,
1, 0, 0, 0, 1]
String 'buah' diubah menjadi nilai "1, 0, 0" dalam encoding one-hot.
Terlalu banyak nilai yang tidak ada [3, 0,45, ...,
'buah', __, __]
Baris dihapus Lebih dari 10% nilai dalam baris tidak ada.
Nilai numerik tidak ada [3, 0,45, ...,
'buah', 0, __]
[3, 0,45, ...,
1, 0, 0, 0, 0,54]
  • Nilai rata-rata untuk kolom akan menggantikan nilai numerik yang tidak ada. Dalam contoh ini, nilai rata-ratanya adalah 0,54.
  • String 'buah' diubah menjadi nilai "1, 0, 0" dalam encoding one-hot.
Nilai kategoris tidak ada [3, 0,45, ...,
__, 0, 1]
[3, 0,45, ...,
0, 0, 0, 0, 1]
  • Nilai kategoris yang tidak ada diubah menjadi nilai "0, 0, 0" dalam encoding one-hot.

Setelah prapemrosesan 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