Tutorial: Membangun model regresi dengan pelajar linier - Amazon Redshift

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

Tutorial: Membangun model regresi dengan pelajar linier

Dalam tutorial ini, Anda membuat model pembelajar linier dengan data dari Amazon S3 dan menjalankan kueri prediksi dengan model menggunakan Amazon Redshift ML. Algoritma pembelajar SageMaker linier memecahkan masalah regresi atau klasifikasi multi-kelas. Untuk mempelajari lebih lanjut tentang masalah regresi dan klasifikasi multi-kelas, lihat Jenis masalah untuk paradigma pembelajaran mesin di Panduan Pengembang Amazon. SageMaker Dalam tutorial ini, Anda memecahkan masalah regresi. Algoritma pembelajar linier melatih banyak model secara paralel, dan secara otomatis menentukan model yang paling dioptimalkan. Anda menggunakan CREATE MODEL operasi di Amazon Redshift, yang membuat model pembelajar linier menggunakan SageMaker dan mengirimkan fungsi prediksi ke Amazon Redshift. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma Linear Learner di Panduan SageMaker Pengembang Amazon.

Anda dapat menggunakan CREATE MODEL perintah untuk mengekspor data pelatihan, melatih model, mengimpor model, dan menyiapkan fungsi prediksi Amazon Redshift. Gunakan CREATE MODEL operasi untuk menentukan data pelatihan baik sebagai tabel atau SELECT pernyataan.

Model pembelajar linier mengoptimalkan tujuan berkelanjutan atau tujuan diskrit. Tujuan kontinu digunakan untuk regresi, sedangkan variabel diskrit digunakan untuk klasifikasi. Beberapa metode memberikan solusi hanya untuk tujuan berkelanjutan, seperti metode regresi. Algoritma pembelajar linier memberikan peningkatan kecepatan dibandingkan teknik optimasi hiperparameter naif, seperti teknik Naive Bayes. Teknik optimasi naif mengasumsikan bahwa setiap variabel input independen. Untuk menggunakan algoritme pembelajar linier, Anda harus menyediakan kolom yang mewakili dimensi input, dan baris yang mewakili pengamatan. Untuk informasi selengkapnya tentang algoritme pembelajar linier, lihat Algoritma Linear Learner dalam Panduan SageMaker Pengembang Amazon.

Dalam tutorial ini, Anda membangun model pembelajar linier yang memprediksi usia abalon. Anda menggunakan CREATE MODEL perintah pada dataset Abalone untuk menentukan hubungan antara pengukuran fisik abalon. Kemudian, Anda menggunakan model untuk menentukan usia abalon.

Contoh kasus penggunaan

Anda dapat memecahkan masalah regresi lainnya dengan pelajar linier dan Amazon Redshift MS, seperti memprediksi harga rumah. Anda juga dapat menggunakan Redshift ML untuk memprediksi jumlah orang yang akan menggunakan layanan penyewaan sepeda kota.

Tugas

  • Prasyarat

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

  • Langkah 2: Buat model pembelajaran mesin

  • Langkah 3: Validasi 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 ini memuat data sampel ke dalam Redshift dan membagi data menjadi satu set pelatihan dan set validasi.

  1. Query berikut membuat abalone_dataset tabel.

    CREATE TABLE abalone_dataset ( id INT IDENTITY(1, 1), Sex CHAR(1), Length float, Diameter float, Height float, Whole float, Shucked float, Viscera float, Shell float, Rings integer );
  2. Kueri berikut menyalin data sampel dari kumpulan data Abalone di Amazon S3 ke tabel yang Anda buat abalone_dataset sebelumnya di Amazon Redshift.

    COPY abalone_dataset FROM 's3://redshift-ml-multiclass/abalone.csv' REGION 'us-east-1' IAM_ROLE default CSV IGNOREHEADER 1 NULL AS 'NULL';
  3. Dengan memisahkan data secara manual, Anda akan dapat memverifikasi keakuratan model dengan mengalokasikan set prediksi tambahan. Query berikut membagi data menjadi dua set. abalone_trainingTabel untuk pelatihan dan abalone_validation tabel untuk validasi.

    CREATE TABLE abalone_training as SELECT * FROM abalone_dataset WHERE mod(id, 10) < 8; CREATE TABLE abalone_validation as SELECT * FROM abalone_dataset WHERE mod(id, 10) >= 8;

Langkah 2: Buat model pembelajaran mesin

Pada langkah ini, Anda menggunakan CREATE MODEL pernyataan untuk membuat model pembelajaran mesin Anda dengan algoritma pembelajar linier.

Kueri berikut membuat model pembelajar linier dengan CREATE MODEL operasi menggunakan bucket S3 Anda. Ganti amzn-s3-demo-bucket dengan bucket S3 Anda sendiri.

CREATE MODEL model_abalone_ring_prediction FROM ( SELECT Sex, Length, Diameter, Height, Whole, Shucked, Viscera, Shell, Rings AS target_label FROM abalone_training ) TARGET target_label FUNCTION f_abalone_ring_prediction IAM_ROLE default MODEL_TYPE LINEAR_LEARNER PROBLEM_TYPE REGRESSION OBJECTIVE 'MSE' SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket', MAX_RUNTIME 15000 );

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_abalone_ring_prediction;

Ketika model siap, output dari operasi sebelumnya akan terlihat mirip dengan contoh berikut. Perhatikan bahwa output menyediakan validation:mse metrik, yang merupakan kesalahan kuadrat rata-rata. Anda akan menggunakan kesalahan kuadrat rata-rata untuk memvalidasi keakuratan model pada langkah berikutnya.

+--------------------------+----------------------------------------------------------------------------------------------------+ | Model Name | model_abalone_ring_prediction | +--------------------------+----------------------------------------------------------------------------------------------------+ | Schema Name | public | | Owner | awsuser | | Creation Time | Thu, 30.06.2022 18:00:10 | | Model State | READY | | validation:mse | 4.168633 | | Estimated Cost | 4.291608 | | | | | TRAINING DATA: | | | Query | SELECT SEX , LENGTH , DIAMETER , HEIGHT , WHOLE , SHUCKED , VISCERA , SHELL, RINGS AS TARGET_LABEL | | | FROM ABALONE_TRAINING | | Target Column | TARGET_LABEL | | | | | PARAMETERS: | | | Model Type | linear_learner | | Problem Type | Regression | | Objective | MSE | | AutoML Job Name | redshiftml-20220630180010947843 | | Function Name | f_abalone_ring_prediction | | Function Parameters | sex length diameter height whole shucked viscera shell | | Function Parameter Types | bpchar float8 float8 float8 float8 float8 float8 float8 | | IAM Role | default-aws-iam-role | | S3 Bucket | amzn-s3-demo-bucket | | Max Runtime | 15000 | +--------------------------+----------------------------------------------------------------------------------------------------+

Langkah 3: Validasi model

  1. Kueri prediksi berikut memvalidasi keakuratan model pada abalone_validation kumpulan data dengan menghitung kesalahan kuadrat rata-rata dan kesalahan kuadrat rata-rata akar.

    SELECT ROUND(AVG(POWER((tgt_label - predicted), 2)), 2) mse, ROUND(SQRT(AVG(POWER((tgt_label - predicted), 2))), 2) rmse FROM ( SELECT Sex, Length, Diameter, Height, Whole, Shucked, Viscera, Shell, Rings AS tgt_label, f_abalone_ring_prediction( Sex, Length, Diameter, Height, Whole, Shucked, Viscera, Shell ) AS predicted, CASE WHEN tgt_label = predicted then 1 ELSE 0 END AS match, CASE WHEN tgt_label <> predicted then 1 ELSE 0 END AS nonmatch FROM abalone_validation ) t1;

    Output dari query sebelumnya akan terlihat seperti contoh berikut. Nilai metrik kesalahan kuadrat rata-rata harus serupa dengan validation:mse metrik yang ditunjukkan oleh output SHOW MODEL operasi.

    +-----+--------------------+ | mse | rmse | +-----+--------------------+ | 5.1 | 2.2600000000000002 | +-----+--------------------+
  2. Gunakan kueri berikut untuk menjalankan MODEL operasi EXPLAIN _ pada fungsi prediksi Anda. Operasi akan mengembalikan laporan penjelasan model. Untuk informasi selengkapnya tentang MODEL operasi EXPLAIN _, lihat MODELfungsi EXPLAIN _ di Panduan Pengembang Database Amazon Redshift.

    SELECT EXPLAIN_MODEL ('model_abalone_ring_prediction');

    Informasi berikut adalah contoh laporan penjelasan model yang dihasilkan oleh operasi EXPLAIN _ MODEL sebelumnya. Nilai untuk masing-masing input adalah nilai Shapley. Nilai Shapley mewakili efek setiap input terhadap prediksi model Anda, dengan input bernilai lebih tinggi memiliki dampak lebih besar pada prediksi. Dalam contoh ini, input bernilai lebih tinggi memiliki dampak lebih besar pada prediksi usia abalon.

    { "explanations": { "kernel_shap": { "label0": { "expected_value" :10.290688514709473, "global_shap_values": { "diameter" :0.6856910187882492, "height" :0.4415323937124035, "length" :0.21507476107609084, "sex" :0.448611774505744, "shell" :1.70426496893776, "shucked" :2.1181392924386994, "viscera" :0.342220754059912, "whole" :0.6711906974084011 } } } }, "version" :"1.0" };
  3. Gunakan kueri berikut untuk menghitung persentase prediksi yang benar yang dibuat model tentang abalon yang belum matang. Abalone yang belum matang memiliki 10 cincin atau kurang, dan prediksi yang benar akurat dalam satu cincin dari jumlah cincin yang sebenarnya.

    SELECT TRUNC( SUM( CASE WHEN ROUND( f_abalone_ring_prediction( Sex, Length, Diameter, Height, Whole, Shucked, Viscera, Shell ), 0 ) BETWEEN Rings - 1 AND Rings + 1 THEN 1 ELSE 0 END ) / CAST(COUNT(SHELL) AS FLOAT), 4 ) AS prediction_pct FROM abalone_validation WHERE Rings <= 10;

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

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut: