Tutorial: Membangun XGBoost model - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tutorial: Membangun XGBoost model

Dalam tutorial ini, Anda membuat model dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. XGBoostAlgoritma ini adalah implementasi yang dioptimalkan dari algoritma pohon yang ditingkatkan gradien. XGBoostmenangani lebih banyak tipe data, hubungan, dan distribusi daripada algoritma pohon yang ditingkatkan gradien lainnya. Anda dapat menggunakan XGBoost untuk regresi, klasifikasi biner, klasifikasi multi-kelas, dan masalah peringkat. Untuk informasi selengkapnya tentang XGBoost algoritme, lihat XGBoostalgoritme di Panduan SageMaker Pengembang Amazon.

CREATE MODELOperasi Amazon Redshift MLdengan AUTO OFF opsi yang saat ini mendukung XGBoost sebagai. MODEL_TYPE Anda dapat memberikan informasi yang relevan seperti tujuan dan hiperparameter sebagai bagian dari CREATE MODEL perintah, berdasarkan kasus penggunaan Anda.

Dalam tutorial ini, Anda menggunakan dataset otentikasi uang kertas, yang merupakan masalah klasifikasi biner untuk memprediksi apakah uang kertas yang diberikan asli atau palsu.

Contoh kasus penggunaan

Anda dapat memecahkan masalah klasifikasi biner lainnya menggunakan Amazon Redshift ML, seperti memprediksi apakah pasien sehat atau memiliki penyakit. Anda juga bisa memprediksi apakah email itu spam atau bukan spam.

Tugas

  • Prasyarat

  • Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift

  • Langkah 2: Buat model pembelajaran mesin

  • Langkah 3: Lakukan prediksi dengan model

Prasyarat

Untuk menyelesaikan tutorial ini, Anda harus menyelesaikan pengaturan Administratif untuk Amazon Redshift Ml.

Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift

Gunakan editor kueri Amazon Redshift v2 untuk menjalankan kueri berikut.

Kueri berikut membuat dua tabel, memuat data dari Amazon S3, dan membagi data menjadi satu set pelatihan dan satu set pengujian. Anda akan menggunakan set pelatihan untuk melatih model Anda dan membuat fungsi prediksi. Kemudian, Anda akan menguji fungsi prediksi pada set pengujian.

--create training set table CREATE TABLE banknoteauthentication_train( variance FLOAT, skewness FLOAT, curtosis FLOAT, entropy FLOAT, class INT ); --Load into training table COPY banknoteauthentication_train FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/train_data/' IAM_ROLE default REGION 'us-west-2' IGNOREHEADER 1 CSV; --create testing set table CREATE TABLE banknoteauthentication_test( variance FLOAT, skewness FLOAT, curtosis FLOAT, entropy FLOAT, class INT ); --Load data into testing table COPY banknoteauthentication_test FROM 's3://redshiftbucket-ml-sagemaker/banknote_authentication/test_data/' IAM_ROLE default REGION 'us-west-2' IGNOREHEADER 1 CSV;

Langkah 2: Buat model pembelajaran mesin

Kueri berikut membuat XGBoost model di Amazon Redshift MLdari set pelatihan yang Anda buat pada langkah sebelumnya. Ganti amzn-s3-demo-bucket dengan milik Anda sendiriS3_BUCKET, yang akan menyimpan dataset input Anda dan artefak Redshift ML lainnya.

CREATE MODEL model_banknoteauthentication_xgboost_binary FROM banknoteauthentication_train TARGET class FUNCTION func_model_banknoteauthentication_xgboost_binary IAM_ROLE default AUTO OFF MODEL_TYPE xgboost OBJECTIVE 'binary:logistic' PREPROCESSORS 'none' HYPERPARAMETERS DEFAULT EXCEPT(NUM_ROUND '100') SETTINGS(S3_BUCKET 'amzn-s3-demo-bucket');

Tampilkan status pelatihan model (opsional)

Anda dapat menggunakan SHOW MODEL perintah untuk mengetahui kapan model Anda siap.

Gunakan kueri berikut untuk memantau kemajuan pelatihan model.

SHOW MODEL model_banknoteauthentication_xgboost_binary;

Jika modelnyaREADY, SHOW MODEL operasi juga menyediakan train:error metrik, seperti yang ditunjukkan pada contoh output berikut. train:errorMetrik adalah ukuran akurasi model Anda yang mengukur hingga enam tempat desimal. Nilai 0 paling akurat dan nilai 1 paling tidak akurat.

+--------------------------+--------------------------------------------------+ | Model Name | model_banknoteauthentication_xgboost_binary | +--------------------------+--------------------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Tue, 21.06.2022 19:07:35 | | Model State | READY | | train:error | 0.000000 | | Estimated Cost | 0.006197 | | | | | TRAINING DATA: | | | Query | SELECT * | | | FROM "BANKNOTEAUTHENTICATION_TRAIN" | | Target Column | CLASS | | | | | PARAMETERS: | | | Model Type | xgboost | | Training Job Name | redshiftml-20220621190735686935-xgboost | | Function Name | func_model_banknoteauthentication_xgboost_binary | | Function Parameters | variance skewness curtosis entropy | | Function Parameter Types | float8 float8 float8 float8 | | IAM Role | default-aws-iam-role | | S3 Bucket | amzn-s3-demo-bucket | | Max Runtime | 5400 | | | | | HYPERPARAMETERS: | | | num_round | 100 | | objective | binary:logistic | +--------------------------+--------------------------------------------------+

Langkah 3: Lakukan prediksi dengan model

Periksa keakuratan model

Kueri prediksi berikut menggunakan fungsi prediksi yang dibuat pada langkah sebelumnya untuk memeriksa keakuratan model Anda. Jalankan kueri ini pada set pengujian untuk memastikan model tidak sesuai terlalu dekat dengan set pelatihan. Korespondensi dekat ini juga dikenal sebagai overfitting, dan overfitting dapat menyebabkan model membuat prediksi yang tidak dapat diandalkan.

WITH predict_data AS ( SELECT class AS label, func_model_banknoteauthentication_xgboost_binary (variance, skewness, curtosis, entropy) AS predicted, CASE WHEN label IS NULL THEN 0 ELSE label END AS actual, CASE WHEN actual = predicted THEN 1 :: INT ELSE 0 :: INT END AS correct FROM banknoteauthentication_test ), aggr_data AS ( SELECT SUM(correct) AS num_correct, COUNT(*) AS total FROM predict_data ) SELECT (num_correct :: FLOAT / total :: FLOAT) AS accuracy FROM aggr_data;

Memprediksi jumlah uang kertas asli dan palsu

Kueri prediksi berikut mengembalikan jumlah uang kertas asli dan palsu yang diprediksi dalam set pengujian.

WITH predict_data AS ( SELECT func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted FROM banknoteauthentication_test ) SELECT CASE WHEN predicted = '0' THEN 'Original banknote' WHEN predicted = '1' THEN 'Counterfeit banknote' ELSE 'NA' END AS banknote_authentication, COUNT(1) AS count FROM predict_data GROUP BY 1;

Temukan pengamatan rata-rata untuk uang kertas asli dan palsu

Kueri prediksi berikut mengembalikan nilai rata-rata setiap fitur untuk uang kertas yang diprediksi asli dan palsu dalam set pengujian.

WITH predict_data AS ( SELECT func_model_banknoteauthentication_xgboost_binary(variance, skewness, curtosis, entropy) AS predicted, variance, skewness, curtosis, entropy FROM banknoteauthentication_test ) SELECT CASE WHEN predicted = '0' THEN 'Original banknote' WHEN predicted = '1' THEN 'Counterfeit banknote' ELSE 'NA' END AS banknote_authentication, TRUNC(AVG(variance), 2) AS avg_variance, TRUNC(AVG(skewness), 2) AS avg_skewness, TRUNC(AVG(curtosis), 2) AS avg_curtosis, TRUNC(AVG(entropy), 2) AS avg_entropy FROM predict_data GROUP BY 1 ORDER BY 2;

Untuk informasi selengkapnya tentang Amazon Redshift ML, lihat dokumentasi berikut:

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut: