Tutorial: Membangun model churn pelanggan - 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 churn pelanggan

Dalam tutorial ini, Anda menggunakan Amazon Redshift MLuntuk membuat model churn pelanggan dengan perintah CREATE MODEL, dan menjalankan query prediksi untuk skenario pengguna. Kemudian, Anda mengimplementasikan kueri menggunakan fungsi SQL yang dihasilkan oleh perintah CREATE MODEL.

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

Contoh ini menggunakan informasi historis untuk membangun model pembelajaran mesin dari churn pelanggan operator seluler. Pertama, SageMaker latih model pembelajaran mesin Anda dan kemudian uji model Anda menggunakan informasi profil pelanggan yang sewenang-wenang. Setelah model divalidasi, Amazon SageMaker menyebarkan model dan fungsi prediksi ke Amazon Redshift. Anda dapat menggunakan fungsi prediksi untuk memprediksi apakah pelanggan akan churn atau tidak.

Contoh kasus penggunaan

Anda dapat memecahkan masalah klasifikasi biner lainnya menggunakan Amazon Redshift ML, seperti memprediksi apakah prospek penjualan akan ditutup atau tidak. Anda juga bisa memprediksi apakah transaksi keuangan itu curang atau tidak.

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 memiliki prasyarat berikut:

  • Anda harus menyiapkan klaster Amazon Redshift untuk Amazon Redshift Ml. Untuk melakukannya, gunakan dokumentasi untuk Cluster dan konfigurasikan penyiapan untuk administrasi Amazon Redshift ML.

  • Cluster Amazon Redshift yang Anda gunakan untuk membuat model, dan bucket Amazon S3 yang Anda gunakan untuk mementaskan data pelatihan dan menyimpan artefak model harus berada di Wilayah yang sama. AWS

  • Untuk mengunduh perintah SQL dan kumpulan data sampel yang digunakan dalam dokumentasi ini, lakukan salah satu hal berikut:

    • Unduh perintah SQL, file aktivitas Pelanggan, dan file Abalone.

    • Menggunakan AWS CLI untuk Amazon S3, jalankan perintah berikut. Anda dapat menggunakan jalur target Anda sendiri.

      aws s3 cp s3://redshift-downloads/redshift-ml/tutorial-scripts/redshift-ml-tutorial.sql </target/path> aws s3 cp s3://redshift-downloads/redshift-ml/customer_activity/customer_activity.csv </target/path> aws s3 cp s3://redshift-downloads/redshift-ml/abalone_xgb/abalone_xgb.csv </target/path>

Langkah 1: Muat data dari Amazon S3 ke Amazon Redshift

Gunakan editor kueri Amazon Redshift v2 untuk mengedit dan menjalankan kueri serta memvisualisasikan hasil.

Menjalankan kueri berikut akan membuat tabel bernama customer_activity dan menyerap kumpulan data sampel dari Amazon S3.

DROP TABLE IF EXISTS customer_activity; CREATE TABLE customer_activity ( state varchar(2), account_length int, area_code int, phone varchar(8), intl_plan varchar(3), vMail_plan varchar(3), vMail_message int, day_mins float, day_calls int, day_charge float, total_charge float, eve_mins float, eve_calls int, eve_charge float, night_mins float, night_calls int, night_charge float, intl_mins float, intl_calls int, intl_charge float, cust_serv_calls int, churn varchar(6), record_date date ); COPY customer_activity FROM 's3://redshift-downloads/redshift-ml/customer_activity/' REGION 'us-east-1' IAM_ROLE default FORMAT AS CSV IGNOREHEADER 1;

Langkah 2: Buat model pembelajaran mesin

Churn adalah masukan target kami dalam model ini. Semua input lain untuk model adalah atribut yang membantu membuat fungsi untuk memprediksi churn.

Contoh berikut menggunakan operasi CREATE MODEL untuk memberikan model yang memprediksi apakah pelanggan akan aktif, menggunakan input seperti usia pelanggan, kode pos, pengeluaran, dan kasus. Dalam contoh berikut, ganti DOC-EXAMPLE-BUCKET dengan bucket Amazon S3 Anda sendiri.

CREATE MODEL customer_churn_auto_model FROM ( SELECT state, account_length, area_code, total_charge/account_length AS average_daily_spend, cust_serv_calls/account_length AS average_daily_cases, churn FROM customer_activity WHERE record_date < '2020-01-01' ) TARGET churn FUNCTION ml_fn_customer_churn_auto IAM_ROLE default SETTINGS ( S3_BUCKET 'DOC-EXAMPLE-BUCKET' );

Query SELECT dalam contoh sebelumnya membuat data pelatihan. Klausa TARGET menentukan kolom mana yang merupakan label pembelajaran mesin yang digunakan operasi CREATE MODEL untuk mempelajari cara memprediksi. Kolom target “churn” menunjukkan apakah pelanggan masih memiliki keanggotaan aktif atau telah menangguhkan keanggotaan. Bidang S3_BUCKET adalah nama bucket Amazon S3 yang sebelumnya Anda buat. Bucket Amazon S3 digunakan untuk berbagi data pelatihan dan artefak antara Amazon Redshift dan Amazon. SageMaker Kolom yang tersisa adalah fitur yang digunakan untuk prediksi.

Untuk ringkasan sintaks dan fitur kasus penggunaan dasar perintah CREATE MODEL, lihat Simple CREATE MODEL.

Tambahkan izin untuk enkripsi sisi server (opsional)

Amazon Redshift secara default menggunakan Amazon SageMaker Autopilot untuk pelatihan. Secara khusus, Amazon Redshift mengekspor data pelatihan dengan aman ke bucket Amazon S3 yang ditentukan pelanggan. Jika Anda tidak menentukanKMS_KEY_ID, maka data dienkripsi menggunakan enkripsi sisi server SSE-S3 secara default.

Saat Anda mengenkripsi input menggunakan enkripsi sisi server dengan kunci AWS KMS terkelola (SSE-MMS), tambahkan izin berikut:

{ "Effect": "Allow", "Action": [ "kms:Encrypt" "kms:Decrypt" ] }

Untuk informasi selengkapnya tentang SageMaker peran Amazon, lihat SageMaker peran Amazon di Panduan SageMaker Pengembang Amazon.

Periksa status pelatihan model (opsional)

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

Gunakan operasi berikut untuk memeriksa status model.

SHOW MODEL customer_churn_auto_model;

Berikut ini adalah contoh output dari operasi sebelumnya.

+--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Key | Value | +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Model Name | customer_churn_auto_model | | Schema Name | public | | Owner | awsuser | | Creation Time | Tue, 14.06.2022 17:15:52 | | Model State | TRAINING | | | | | TRAINING DATA: | | | Query | SELECT STATE, ACCOUNT_LENGTH, AREA_CODE, TOTAL_CHARGE / ACCOUNT_LENGTH AS AVERAGE_DAILY_SPEND, CUST_SERV_CALLS / ACCOUNT_LENGTH AS AVERAGE_DAILY_CASES, CHURN | | | FROM CUSTOMER_ACTIVITY | | | WHERE RECORD_DATE < '2020-01-01' | | Target Column | CHURN | | | | | PARAMETERS: | | | Model Type | auto | | Problem Type | | | Objective | | | AutoML Job Name | redshiftml-20220614171552640901 | | Function Name | ml_fn_customer_churn_auto | | Function Parameters | state account_length area_code average_daily_spend average_daily_cases | | Function Parameter Types | varchar int4 int4 float8 int4 | | IAM Role | default-aws-iam-role | | S3 Bucket | DOC-EXAMPLE-BUCKET | | Max Runtime | 5400 | +--------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+

Ketika pelatihan model selesai, model_state variabel menjadiModel is Ready, dan fungsi prediksi menjadi tersedia.

Langkah 3: Lakukan prediksi dengan model

Anda dapat menggunakan pernyataan SQL untuk melihat prediksi yang dibuat oleh model prediksi. Dalam contoh ini, fungsi prediksi yang dibuat oleh operasi CREATE MODEL diberi namaml_fn_customer_churn_auto. Argumen input untuk fungsi prediksi sesuai dengan jenis fitur, seperti varchar untuk state dan integer untuk. account_length Output dari fungsi prediksi adalah tipe yang sama dengan kolom TARGET dari pernyataan CREATE MODEL.

  1. Anda melatih model pada data dari sebelum 2020-01-01, jadi sekarang Anda menggunakan fungsi prediksi pada set pengujian. Kueri berikut menampilkan prediksi apakah pelanggan yang mendaftar setelah 2020-01-01 akan melalui churn atau tidak.

    SELECT phone, ml_fn_customer_churn_auto( state, account_length, area_code, total_charge / account_length, cust_serv_calls / account_length ) AS active FROM customer_activity WHERE record_date > '2020-01-01';
  2. Contoh berikut menggunakan fungsi prediksi yang sama untuk kasus penggunaan yang berbeda. Dalam hal ini, Amazon Redshift memprediksi proporsi churner dan non-churner di antara pelanggan dari berbagai negara bagian di mana tanggal pencatatan lebih besar dari 2020-01-01.

    WITH predicted AS ( SELECT state, ml_fn_customer_churn_auto( state, account_length, area_code, total_charge / account_length, cust_serv_calls / account_length ) :: varchar(6) AS active FROM customer_activity WHERE record_date > '2020-01-01' ) SELECT state, SUM( CASE WHEN active = 'True.' THEN 1 ELSE 0 END ) AS churners, SUM( CASE WHEN active = 'False.' THEN 1 ELSE 0 END ) AS nonchurners, COUNT(*) AS total_per_state FROM predicted GROUP BY state ORDER BY state;
  3. Contoh berikut menggunakan fungsi prediksi untuk kasus penggunaan memprediksi persentase pelanggan yang melakukan churn dalam suatu keadaan. Dalam hal ini, Amazon Redshift memprediksi persentase churn di mana tanggal rekor lebih besar dari 2020-01-01.

    WITH predicted AS ( SELECT state, ml_fn_customer_churn_auto( state, account_length, area_code, total_charge / account_length, cust_serv_calls / account_length ) :: varchar(6) AS active FROM customer_activity WHERE record_date > '2020-01-01' ) SELECT state, CAST((CAST((SUM( CASE WHEN active = 'True.' THEN 1 ELSE 0 END )) AS FLOAT) / CAST(COUNT(*) AS FLOAT)) AS DECIMAL (3, 2)) AS pct_churn, COUNT(*) AS total_customers_per_state FROM predicted GROUP BY state ORDER BY 3 DESC;

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

Untuk informasi selengkapnya tentang pembelajaran mesin, lihat dokumentasi berikut: