Buat rekomendasi yang dipersonalisasi dan diberi peringkat ulang menggunakan Amazon Personalize - AWS Prescriptive Guidance

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

Buat rekomendasi yang dipersonalisasi dan diberi peringkat ulang menggunakan Amazon Personalize

Mason Cahill, Matthew Chasse, dan Tayo Olajide, Amazon Web Services

Ringkasan

Pola ini menunjukkan kepada Anda cara menggunakan Amazon Personalize untuk menghasilkan rekomendasi yang dipersonalisasi—termasuk rekomendasi peringkat ulang—untuk pengguna Anda berdasarkan konsumsi data interaksi pengguna real-time dari pengguna tersebut. Contoh skenario yang digunakan dalam pola ini didasarkan pada situs web adopsi hewan peliharaan yang menghasilkan rekomendasi untuk penggunanya berdasarkan interaksi mereka (misalnya, hewan peliharaan apa yang dikunjungi pengguna). Dengan mengikuti skenario contoh, Anda belajar menggunakan Amazon Kinesis Data Streams untuk menyerap data interaksi, AWS Lambda untuk menghasilkan rekomendasi dan memberi peringkat ulang rekomendasi, dan Amazon Data Firehose untuk menyimpan data dalam bucket Amazon Simple Storage Service (Amazon S3). Anda juga belajar menggunakan AWS Step Functions untuk membuat mesin status yang mengelola versi solusi (yaitu, model terlatih) yang menghasilkan rekomendasi Anda.

Prasyarat dan batasan

Prasyarat

Versi produk

  • Python 3.9

  • AWS CDK 2.23.0 atau yang lebih baru

  • AWS CLI 2.7.27 atau yang lebih baru

Arsitektur

Tumpukan teknologi

  • Amazon Data Firehose

  • Amazon Kinesis Data Streams

  • Amazon Personalize

  • Amazon Simple Storage Service (Amazon S3)

  • AWS Cloud Development Kit (AWS CDK)

  • Antarmuka Baris Perintah AWS (AWS CLI)

  • AWS Lambda

  • AWS Step Functions

Arsitektur target

Diagram berikut mengilustrasikan pipeline untuk memasukkan data real-time ke Amazon Personalize. Pipeline kemudian menggunakan data tersebut untuk menghasilkan rekomendasi yang dipersonalisasi dan diberi peringkat ulang bagi pengguna.

Arsitektur konsumsi data untuk Amazon Personalisasi

Diagram menunjukkan alur kerja berikut:

  1. Kinesis Data Streams menyerap data pengguna real-time (misalnya, peristiwa seperti hewan peliharaan yang dikunjungi) untuk diproses oleh Lambda dan Firehose.

  2. Fungsi Lambda memproses rekaman dari Kinesis Data Streams dan membuat panggilan API untuk menambahkan interaksi pengguna dalam rekaman ke pelacak peristiwa di Amazon Personalize.

  3. Aturan berbasis waktu memanggil mesin status Step Functions dan menghasilkan versi solusi baru untuk model rekomendasi dan peringkat ulang dengan menggunakan peristiwa dari pelacak peristiwa di Amazon Personalize.

  4. Kampanye Amazon Personalisasi diperbarui oleh mesin status untuk menggunakan versi solusi baru.

  5. Lambda memberi peringkat ulang daftar item yang direkomendasikan dengan memanggil kampanye peringkat ulang Amazon Personalize.

  6. Lambda mengambil daftar item yang direkomendasikan dengan memanggil kampanye rekomendasi Amazon Personalize.

  7. Firehose menyimpan peristiwa ke bucket S3 di mana mereka dapat diakses sebagai data historis.

Alat

Alat AWS

  • AWS Cloud Development Kit (AWS CDK) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.

  • AWS Command Line Interface (AWS CLI) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.

  • Amazon Data Firehose membantu Anda mengirimkan data streaming real-time ke layanan AWS lainnya, titik akhir HTTP kustom, dan titik akhir HTTP yang dimiliki oleh penyedia layanan pihak ketiga yang didukung.

  • Amazon Kinesis Data Streams membantu Anda mengumpulkan dan memproses aliran besar catatan data secara real time.

  • AWS Lambda adalah layanan komputasi yang membantu Anda menjalankan kode tanpa perlu menyediakan atau mengelola server. Ini menjalankan kode Anda hanya bila diperlukan dan skala secara otomatis, jadi Anda hanya membayar untuk waktu komputasi yang Anda gunakan.

  • Amazon Personalize adalah layanan machine learning (ML) yang dikelola sepenuhnya yang membantu Anda menghasilkan rekomendasi item untuk pengguna berdasarkan data Anda.

  • AWS Step Functions adalah layanan orkestrasi tanpa server yang membantu Anda menggabungkan fungsi Lambda dan layanan AWS lainnya untuk membangun aplikasi yang penting bagi bisnis.

Alat-alat lainnya

  • pytest adalah kerangka kerja Python untuk menulis tes kecil yang dapat dibaca.

  • Python adalah bahasa pemrograman komputer tujuan umum.

Kode

Kode untuk pola ini tersedia di repositori GitHub Animal Recommender. Anda dapat menggunakan CloudFormation template AWS dari repositori ini untuk menerapkan sumber daya untuk solusi contoh.

catatan

Versi solusi Amazon Personalisasi, pelacak peristiwa, dan kampanye didukung oleh sumber daya khusus (dalam infrastruktur) yang memperluas sumber daya asli. CloudFormation

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat lingkungan Python yang terisolasi.

Pengaturan Mac/Linux

  1. Untuk membuat lingkungan virtual secara manual, jalankan $ python3 -m venv .venv perintah dari terminal Anda.

  2. Setelah proses init selesai, jalankan $ source .venv/bin/activate perintah untuk mengaktifkan lingkungan virtual.

Pengaturan Windows

Untuk membuat lingkungan virtual secara manual, jalankan % .venv\Scripts\activate.bat perintah dari terminal Anda.

DevOps insinyur

Sintesis CloudFormation template.

  1. Untuk menginstal dependensi yang diperlukan, jalankan $ pip install -r requirements.txt perintah dari terminal Anda.

  2. Di AWS CLI, atur variabel lingkungan berikut:

    • export ACCOUNT_ID=123456789

    • export CDK_DEPLOY_REGION=us-east-1

    • export CDK_ENVIRONMENT=dev

  3. Dalam config/{env}.yml file, perbarui vpcId agar sesuai dengan ID virtual private cloud (VPC) Anda.

  4. Untuk mensintesis CloudFormation template untuk kode ini, jalankan $ cdk synth perintah.

catatan

Pada langkah 2, CDK_ENVIRONMENT mengacu pada config/{env}.yml file.

DevOps insinyur

Menyebarkan sumber daya dan membuat infrastruktur.

Untuk menyebarkan sumber daya solusi, jalankan ./deploy.sh perintah dari terminal Anda.

Perintah ini menginstal dependensi Python yang diperlukan. Skrip Python membuat bucket S3 dan kunci AWS Key Management Service (AWS KMS), lalu menambahkan data seed untuk pembuatan model awal. Akhirnya, skrip berjalan cdk deploy untuk membuat infrastruktur yang tersisa.

catatan

Pelatihan model awal terjadi selama pembuatan tumpukan. Diperlukan waktu hingga dua jam agar tumpukan selesai dibuat.

DevOps insinyur

Sumber daya terkait

Informasi tambahan

Contoh muatan dan tanggapan

Rekomendasi fungsi Lambda

Untuk mengambil rekomendasi, kirimkan permintaan ke fungsi Lambda rekomendasi dengan muatan dalam format berikut:

{ "userId": "3578196281679609099", "limit": 6 }

Contoh respon berikut berisi daftar kelompok hewan:

[{"id": "1-domestic short hair-1-1"}, {"id": "1-domestic short hair-3-3"}, {"id": "1-domestic short hair-3-2"}, {"id": "1-domestic short hair-1-2"}, {"id": "1-domestic short hair-3-1"}, {"id": "2-beagle-3-3"},

Jika Anda meninggalkan userId bidang, fungsi mengembalikan rekomendasi umum.

Peringkat ulang fungsi Lambda

Untuk menggunakan peringkat ulang, kirimkan permintaan ke fungsi Lambda peringkat ulang. Muatan berisi semua item userId IDs yang akan diberi peringkat ulang dan metadatanya. Contoh data berikut menggunakan kelas Oxford Pets untuk animal_species_id (1=cat, 2=dog) dan bilangan bulat 1-5 untuk dan: animal_age_id animal_size_id

{ "userId":"12345", "itemMetadataList":[ { "itemId":"1", "animalMetadata":{ "animal_species_id":"2", "animal_primary_breed_id":"Saint_Bernard", "animal_size_id":"3", "animal_age_id":"2" } }, { "itemId":"2", "animalMetadata":{ "animal_species_id":"1", "animal_primary_breed_id":"Egyptian_Mau", "animal_size_id":"1", "animal_age_id":"1" } }, { "itemId":"3", "animalMetadata":{ "animal_species_id":"2", "animal_primary_breed_id":"Saint_Bernard", "animal_size_id":"3", "animal_age_id":"2" } } ] }

Fungsi Lambda memberi peringkat ulang item ini, lalu mengembalikan daftar terurut yang menyertakan item IDs dan respons langsung dari Amazon Personalize. Ini adalah daftar peringkat kelompok hewan tempat item berada dan skornya. Amazon Personalize menggunakan resep Personalisasi Pengguna dan Personalisasi Peringkat untuk menyertakan skor untuk setiap item dalam rekomendasi. Skor ini mewakili kepastian relatif yang dimiliki Amazon Personalize tentang item mana yang akan dipilih pengguna selanjutnya. Skor yang lebih tinggi mewakili kepastian yang lebih besar.

{ "ranking":[ "1", "3", "2" ], "personalizeResponse":{ "ResponseMetadata":{ "RequestId":"a2ec0417-9dcd-4986-8341-a3b3d26cd694", "HTTPStatusCode":200, "HTTPHeaders":{ "date":"Thu, 16 Jun 2022 22:23:33 GMT", "content-type":"application/json", "content-length":"243", "connection":"keep-alive", "x-amzn-requestid":"a2ec0417-9dcd-4986-8341-a3b3d26cd694" }, "RetryAttempts":0 }, "personalizedRanking":[ { "itemId":"2-Saint_Bernard-3-2", "score":0.8947961 }, { "itemId":"1-Siamese-1-1", "score":0.105204 } ], "recommendationId":"RID-d97c7a87-bd4e-47b5-a89b-ac1d19386aec" } }

Payload Amazon Kinesis

Payload untuk dikirim ke Amazon Kinesis memiliki format berikut:

{ "Partitionkey": "randomstring", "Data": { "userId": "12345", "sessionId": "sessionId4545454", "eventType": "DetailView", "animalMetadata": { "animal_species_id": "1", "animal_primary_breed_id": "Russian_Blue", "animal_size_id": "1", "animal_age_id": "2" }, "animal_id": "98765" } }
catatan

userIdBidang dihapus untuk pengguna yang tidak diautentikasi.