Memprediksi Nilai Umur Pelanggan dengan AI Platform: men-deploy ke produksi

Last reviewed 2019-02-06 UTC

Artikel ini adalah bagian ketiga dari rangkaian empat bagian yang membahas cara memprediksi nilai umur pelanggan (CLV) menggunakan AI Platform (AI Platform) di Google Cloud.

Artikel dalam rangkaian ini meliputi:

  • Bagian 1: Pengantar. Memperkenalkan CLV dan dua teknik pemodelan untuk memprediksi CLV.
  • Bagian 2: Melatih model. Membahas cara menyiapkan data dan melatih model.
  • Bagian 3: Men-deploy ke produksi (artikel ini). Menjelaskan cara men-deploy model yang dibahas di Bagian 2 ke sistem produksi.
  • Bagian 4: Menggunakan Tabel AutoML. Menunjukkan cara menggunakan AutoML Tables untuk membangun dan men-deploy model.

Menginstal kode

Jika ingin mengikuti proses yang dijelaskan dalam artikel ini, Anda harus menginstal kode contoh dari GitHub.

  1. Jika Anda sudah menginstal gcloud CLI, buka jendela terminal di komputer untuk menjalankan perintah ini. Jika gcloud CLI belum terinstal, buka instance Cloud Shell.

    BUKA Cloud Shell

  2. Clone repositori kode sampel:

    git clone https://github.com/GoogleCloudPlatform/tensorflow-lifetime-value
    
  3. Ikuti petunjuk penginstalan di bagian Instal dan Automation pada file README untuk menyiapkan lingkungan Anda dan men-deploy komponen solusi. Hal ini mencakup contoh set data dan lingkungan Cloud Composer.

Contoh perintah di bagian berikut mengasumsikan bahwa Anda telah menyelesaikan kedua langkah ini.

Sebagai bagian dari petunjuk penginstalan, Anda menyiapkan variabel untuk lingkungan seperti yang dijelaskan di bagian penyiapan file README.

Ubah variabel REGION agar sesuai dengan region Google Cloud yang terdekat secara geografis dengan Anda. Untuk mengetahui daftar region, lihat Region dan Zona.

Arsitektur dan implementasi

Diagram berikut menunjukkan arsitektur yang digunakan dalam diskusi ini.

Arsitektur proses untuk persiapan, pelatihan, dan penyaluran data seperti yang digunakan dalam solusi ini

Arsitektur ini dibagi menjadi fungsi-fungsi berikut:

  • Penyerapan data: Data diimpor ke BigQuery.
  • Persiapan data: Data mentah diubah agar dapat digunakan oleh model.
  • Pelatihan model: Model dibuat, dilatih, dan disesuaikan sehingga dapat digunakan untuk menjalankan prediksi.
  • Penyaluran prediksi: Prediksi offline disimpan dan tersedia pada latensi rendah.
  • Otomatisasi: Semua tugas ini dijalankan dan dikelola melalui Cloud Composer.

Menyerap data

Rangkaian artikel ini tidak membahas cara khusus untuk melakukan penyerapan data. Ada banyak cara BigQuery untuk menyerap data, termasuk dari Pub/Sub, dari Cloud Storage, dan dari BigQuery Data Transfer Service. Untuk informasi selengkapnya, lihat BigQuery untuk Praktisi Data Warehouse. Dalam pendekatan yang dijelaskan dalam rangkaian ini, kami menggunakan {i>dataset<i} publik. Anda dapat mengimpor set data ini ke BigQuery, seperti yang dijelaskan dalam kode contoh di file README.

Menyiapkan data

Untuk menyiapkan data, jalankan kueri di BigQuery seperti yang ditunjukkan di Bagian 2 dari rangkaian ini. Dalam arsitektur produksi, Anda menjalankan kueri sebagai bagian dari directed acyclic graph (DAG) Apache Airflow. Bagian tentang otomatisasi nanti dalam dokumen ini memberikan detail selengkapnya tentang cara menjalankan kueri untuk persiapan data.

Melatih model pada AI Platform

Bagian ini memberikan ringkasan tentang bagian pelatihan arsitektur.

Apa pun jenis model yang Anda pilih, kode yang ditampilkan dalam solusi ini dikemas untuk dijalankan di AI Platform (AI Platform), baik untuk pelatihan maupun prediksi. AI Platform menawarkan manfaat berikut:

  • Anda dapat menjalankannya secara lokal atau di cloud dalam lingkungan terdistribusi.
  • Penyimpanan ini menawarkan konektivitas bawaan ke produk Google lainnya, seperti Cloud Storage.
  • Anda dapat menjalankannya dengan hanya menggunakan beberapa perintah.
  • Fungsi ini memfasilitasi penyesuaian hyperparameter.
  • Penskalaan ini diskalakan dengan perubahan infrastruktur minimum, jika ada.

Agar AI Platform dapat melatih dan mengevaluasi model, Anda perlu menyediakan pelatihan, evaluasi, dan set data pengujian. Anda membuat set data dengan menjalankan kueri SQL seperti yang ditunjukkan pada Bagian 2 dari rangkaian ini. Kemudian, ekspor set data tersebut dari tabel BigQuery ke Cloud Storage. Dalam arsitektur produksi yang dijelaskan dalam artikel ini, kueri dijalankan oleh DAG Airflow, yang dijelaskan secara lebih mendetail di bagian Otomatisasi di bawah ini. Anda dapat menjalankan DAG secara manual seperti yang dijelaskan di bagian Menjalankan DAG pada file README.

Prediksi penayangan

Prediksi dapat dibuat secara online atau offline. Tetapi membuat prediksi berbeda dengan menyajikannya. Dalam konteks CLV ini, peristiwa seperti pelanggan yang login ke situs atau mengunjungi toko retail tidak akan secara drastis memengaruhi nilai umur pelanggan tersebut. Oleh karena itu, prediksi dapat dilakukan secara offline, meskipun hasilnya mungkin harus ditampilkan secara real time. Prediksi offline memiliki fitur operasional berikut:

  • Anda dapat melakukan langkah pra-pemrosesan yang sama untuk pelatihan dan prediksi. Jika pelatihan dan prediksi diprapemrosesankan secara berbeda, prediksi Anda mungkin kurang akurat. Fenomena ini disebut kemiringan pelatihan dan penayangan.
  • Anda dapat menggunakan alat yang sama guna menyiapkan data untuk pelatihan dan prediksi. Pendekatan yang dibahas dalam seri ini terutama menggunakan BigQuery untuk menyiapkan data.

Anda dapat menggunakan AI Platform untuk men-deploy model dan membuat prediksi offline menggunakan tugas batch. Untuk prediksi, AI Platform memfasilitasi tugas-tugas seperti berikut:

  • Mengelola versi.
  • Penskalaan dengan perubahan infrastruktur minimum.
  • Men-deploy dalam skala besar.
  • Berinteraksi dengan produk Google Cloud lainnya.
  • Menyediakan SLA.

Tugas prediksi batch menggunakan file yang disimpan di Cloud Storage untuk input dan output. Untuk model DNN, fungsi penayangan berikut, yang ditentukan dalam task.py, menentukan format input:

clvf = CLVFeatures(ignore_crosses=True,
                   is_dnn=MODEL_TYPE not in PROBABILISTIC_MODEL_TYPES)
used_headers = clvf.get_used_headers(with_key=True, with_target=False)
default_values = clvf.get_defaults(used_headers)

rows_string_tensor = tf.placeholder(dtype=tf.string, shape=[None],
                                    name='csv_rows')
receiver_tensor = {'csv_rows': rows_string_tensor}

row_columns = tf.expand_dims(rows_string_tensor, -1)
columns = tf.decode_csv(row_columns, record_defaults=default_values)

features = dict(zip(used_headers, columns))

return tf.estimator.export.ServingInputReceiver(features, receiver_tensor)

Format output prediksi ditentukan dalam AnalysisSpec yang ditampilkan oleh fungsi model Assessment dalam kode ini dari model.py:

predictions = {
    'customer_id': tf.squeeze(features[clvf.get_key()]),
    'predicted_monetary': output
}
export_outputs = {
    'predictions': tf.estimator.export.PredictOutput(predictions)
}

return tf.estimator.EstimatorSpec(mode=mode,
                                  predictions=predictions,
                                  export_outputs=export_outputs)

Menggunakan prediksi

Setelah selesai membuat model dan men-deploy model tersebut, Anda dapat menggunakannya untuk melakukan prediksi CLV. Berikut adalah kasus penggunaan CLV yang umum:

  • Seorang spesialis data dapat memanfaatkan prediksi offline saat membangun segmen pengguna.
  • Organisasi Anda dapat melakukan penawaran tertentu secara real time, saat pelanggan berinteraksi dengan merek Anda secara online atau di toko.

Analisis dengan BigQuery

Memahami CLV adalah kunci untuk aktivasi. Artikel ini terutama berfokus pada penghitungan nilai umur berdasarkan penjualan sebelumnya. Data penjualan biasanya berasal dari alat pengelolaan hubungan pelanggan (CRM), tetapi informasi tentang perilaku pengguna dapat memiliki sumber lain, seperti Google Analytics 360.

Sebaiknya gunakan BigQuery jika Anda tertarik untuk melakukan salah satu tugas berikut:

  • Menyimpan data terstruktur dari banyak sumber.
  • Transfer data secara otomatis dari alat SaaS umum, seperti Google Analytics 360, YouTube, atau AdWords.
  • Menjalankan kueri ad hoc, termasuk gabungan pada data pelanggan berukuran terabyte.
  • Memvisualisasikan data menggunakan alat business intelligence terkemuka.

Selain perannya sebagai mesin kueri dan penyimpanan terkelola, BigQuery dapat menjalankan algoritma machine learning secara langsung menggunakan BigQuery ML. Dengan memuat nilai CLV setiap pelanggan ke BigQuery, Anda memungkinkan analis data, ilmuwan, dan engineer untuk memanfaatkan metrik tambahan dalam tugas mereka. DAG Airflow yang dibahas di bagian selanjutnya mencakup tugas untuk memuat prediksi CLV ke BigQuery.

Layanan berlatensi rendah menggunakan Datastore

Prediksi yang dibuat secara offline sering kali dapat digunakan kembali untuk memberikan prediksi secara real time. Untuk skenario ini, keaktualan prediksi tidaklah penting, tetapi mendapatkan akses ke data pada waktu yang tepat dan tepat adalah hal yang penting.

Dengan menyimpan prediksi offline untuk penayangan real-time, tindakan yang dilakukan pelanggan tidak akan langsung mengubah CLV-nya. Namun, mendapatkan akses ke CLV tersebut dengan cepat itu penting. Misalnya, perusahaan Anda mungkin ingin bereaksi dengan cepat saat pelanggan menggunakan situs Anda, mengajukan pertanyaan ke layanan bantuan, atau melakukan check out melalui tempat penjualan Anda. Dalam kasus seperti ini, respons yang cepat dapat meningkatkan hubungan pelanggan Anda. Oleh karena itu, menyimpan output prediksi di database yang cepat dan menyediakan kueri yang aman untuk frontend Anda adalah kunci keberhasilan.

Anggaplah Anda memiliki ratusan ribu pelanggan unik. Datastore adalah opsi yang bagus karena alasan berikut:

  • Alat ini mendukung {i>database<i} dokumen NoSQL.
  • API ini menyediakan akses cepat ke data menggunakan kunci (ID pelanggan), dan juga mengaktifkan kueri SQL.
  • Dapat diakses melalui REST API.
  • Alat ini siap digunakan, yang berarti tidak ada overhead penyiapan.
  • Skalanya otomatis disesuaikan.

Karena tidak ada cara untuk langsung memuat set data CSV ke Datastore, dalam solusi ini kami menggunakan Apache Beam di Dialogflow dengan template JavaScript untuk memuat prediksi CLV ke Datastore. Cuplikan kode dari template JavaScript berikut menunjukkan caranya:

var prediction_object = JSON.parse(prediction_row);

to_write = {
  key: {
    path: [{
      //id: prediction_object.key,
      kind: 'clv',
      name: prediction_object.customer_id
    }]
  },
  properties: {
    predicted_monetary: {doubleValue: prediction_object.predicted_monetary}
  }
};

return JSON.stringify(to_write);

Saat data berada di Datastore, Anda dapat memilih cara berinteraksi dengan data tersebut, yang meliputi:

Mengotomatiskan solusi

Anda menggunakan langkah-langkah yang telah dijelaskan sejauh ini saat memulai dengan data untuk menjalankan langkah pra-pemrosesan, pelatihan, dan prediksi yang pertama. Namun, platform Anda belum siap untuk diproduksi karena Anda masih memerlukan otomatisasi dan pengelolaan kegagalan.

Beberapa pembuatan {i>scripting<i} dapat membantu menyatukan langkah-langkah tersebut. Namun, sebaiknya Anda mengotomatiskan langkah-langkah tersebut menggunakan pengelola alur kerja. Apache Airflow adalah alat pengelolaan alur kerja yang populer, dan Anda dapat menggunakan Cloud Composer untuk menjalankan pipeline Airflow terkelola di Google Cloud.

Airflow berfungsi dengan directed acyclic graph (DAG), yang memungkinkan Anda menentukan setiap tugas dan kaitannya dengan tugas lain. Dalam pendekatan yang dijelaskan dalam rangkaian ini, Anda menjalankan langkah-langkah berikut:

  1. Membuat set data BigQuery.
  2. Muat set data publik dari Cloud Storage ke BigQuery.
  3. Bersihkan data dari tabel BigQuery dan tuliskan ke tabel BigQuery yang baru.
  4. Membuat fitur berdasarkan data di tabel BigQuery dan menuliskannya ke tabel BigQuery lainnya.
  5. Jika modelnya adalah deep neural network (DNN), bagi data menjadi set pelatihan dan set evaluasi dalam BigQuery.
  6. Ekspor set data ke Cloud Storage dan sediakan untuk AI Platform.
  7. Meminta AI Platform melatih model secara berkala.
  8. Men-deploy model yang diperbarui ke AI Platform.
  9. Menjalankan prediksi batch secara berkala pada data baru.
  10. Simpan prediksi yang sudah disimpan di Cloud Storage ke Datastore dan BigQuery.

Menyiapkan Cloud Composer

Untuk mengetahui informasi cara menyiapkan Cloud Composer, lihat petunjuk di file README repositori GitHub.

Grafik asiklik terarah untuk solusi ini

Solusi ini menggunakan dua DAG. DAG pertama mencakup langkah 1 hingga 8 dari urutan yang tercantum sebelumnya:

default_dag_args = {
    'start_date': datetime.datetime(2050, 1, 1),
    'schedule_interval': None,
    'provide_context': True
}

dag = models.DAG(
    'build_train_deploy',
    default_args = default_dag_args)

Diagram berikut menunjukkan UI Cloud Composer/Airflow, yang meringkas langkah 1 hingga 8 dari langkah DAG Airflow.

Aliran aliran udara yang menunjukkan langkah 1 hingga 8 pada proses

DAG kedua mencakup langkah 9 dan 10.

default_dag_args = {
    'start_date': datetime.datetime(2050, 1, 1),
    'schedule_interval': None,
    'provide_context': True,
    'dataflow_default_options': {
        'project': PROJECT,
        'zone': DF_ZONE,
        'tempLocation': DF_TEMP
    }
}

dag = models.DAG(
    'predict_serve',
    default_args = default_dag_args)

Diagram berikut merangkum langkah 9 dan 10 dari proses DAG Airflow.

Aliran aliran udara yang menunjukkan langkah 9 dan 10 dari proses

DAG dipisahkan karena prediksi dan pelatihan dapat terjadi secara independen dan pada jadwal yang berbeda. Misalnya, Anda dapat melakukan hal berikut:

  • Memprediksi data untuk pelanggan baru atau lama setiap hari.
  • Latih ulang model setiap minggu untuk menggabungkan data baru, atau picu model tersebut setelah sejumlah transaksi baru diterima.

Untuk memicu DAG pertama secara manual, Anda dapat menjalankan perintah dari bagian Run Dags file README di Cloud Shell atau dengan menggunakan gcloud CLI.

Parameter conf meneruskan variabel ke berbagai bagian otomatisasi. Misalnya, dalam kueri SQL berikut yang digunakan untuk mengekstrak fitur dari data yang dibersihkan, variabel digunakan untuk membuat parameter klausa FROM:

FROM
  `{{ dag_run.conf['project'] }}.{{ dag_run.conf['dataset'] }}.data_cleaned` a

Anda dapat memicu DAG kedua dengan menggunakan perintah serupa. Untuk detail selengkapnya, lihat file README di repositori GitHub.

Langkah selanjutnya

  • Jalankan contoh lengkap di repositori GitHub.
  • Gabungkan fitur baru ke model CLV menggunakan beberapa hal berikut:
    • Data clickstream, yang dapat membantu Anda memprediksi CLV untuk pelanggan yang tidak memiliki data historis Anda.
    • Departemen dan kategori produk yang dapat menambahkan konteks tambahan dan yang mungkin membantu jaringan neural.
    • Fitur baru yang Anda buat menggunakan input yang sama dengan digunakan dalam solusi ini. Contohnya bisa berupa tren penjualan selama beberapa minggu atau bulan terakhir sebelum tanggal ambang batas.
  • Baca Bagian 4: Menggunakan Tabel AutoML untuk model.
  • Pelajari solusi perkiraan prediktif lainnya.
  • Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.