

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
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize"></a>

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

## Ringkasan
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-summary"></a>

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
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-prereqs"></a>

**Prasyarat**
+ [Akun AWS aktif dengan AWS](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) Cloud Development Kit (AWS CDK) yang [di-bootstrap](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html)
+ [AWS Command Line Interface (AWS CLI) dengan kredensi](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) yang dikonfigurasi
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)

**Versi produk**
+ Python 3.9
+ AWS CDK 2.23.0 atau yang lebih baru
+ AWS CLI 2.7.27 atau yang lebih baru

## Arsitektur
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-architecture"></a>

**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\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)


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.

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

1. 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.

1. [Kampanye](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html) Amazon Personalisasi diperbarui oleh mesin status untuk menggunakan versi [solusi](https://docs.aws.amazon.com/personalize/latest/dg/creating-a-solution-version.html) baru.

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

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

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

## Alat
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-tools"></a>

**Alat AWS**
+ [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) adalah kerangka kerja pengembangan perangkat lunak yang membantu Anda menentukan dan menyediakan infrastruktur AWS Cloud dalam kode.
+ [AWS Command Line Interface (AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html)) adalah alat sumber terbuka yang membantu Anda berinteraksi dengan layanan AWS melalui perintah di shell baris perintah Anda.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) membantu Anda mengirimkan [data streaming](https://aws.amazon.com/streaming-data/) 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](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) Streams membantu Anda mengumpulkan dan memproses aliran besar catatan data secara real time.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 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](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html) adalah layanan machine learning (ML) yang dikelola sepenuhnya yang membantu Anda menghasilkan rekomendasi item untuk pengguna berdasarkan data Anda.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) 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](https://docs.pytest.org/en/7.2.x/index.html) adalah kerangka kerja Python untuk menulis tes kecil yang dapat dibaca.
+ [Python adalah bahasa](https://www.python.org/) pemrograman komputer tujuan umum.

**Kode**

Kode untuk pola ini tersedia di repositori GitHub [Animal Recommender](https://github.com/aws-samples/personalize-pet-recommendations). 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](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) (dalam infrastruktur) yang memperluas sumber daya asli. CloudFormation 

## Epik
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-epics"></a>

### Buat infrastruktur
<a name="create-the-infrastructure"></a>


| Tugas | Deskripsi | Keterampilan yang dibutuhkan | 
| --- | --- | --- | 
| Buat lingkungan Python yang terisolasi. | **Pengaturan Mac/Linux**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)**Pengaturan Windows**Untuk membuat lingkungan virtual secara manual, jalankan `% .venv\Scripts\activate.bat` perintah dari terminal Anda. | DevOps insinyur | 
| Sintesis CloudFormation template. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)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.Pelatihan model awal terjadi selama pembuatan tumpukan. Diperlukan waktu hingga dua jam agar tumpukan selesai dibuat. | DevOps insinyur | 

## Sumber daya terkait
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-resources"></a>
+ [Rekomendasi Hewan (](https://github.com/aws-samples/personalize-pet-recommendations)) GitHub
+ [Dokumentasi Referensi AWS CDK](https://docs.aws.amazon.com/cdk/api/v2/)
+ [Dokumentasi Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Optimalkan rekomendasi yang dipersonalisasi untuk metrik bisnis pilihan Anda dengan Amazon Personalize](https://aws.amazon.com/blogs/machine-learning/optimize-personalized-recommendations-for-a-business-metric-of-your-choice-with-amazon-personalize/) (AWS Machine Learning Blog)

## Informasi tambahan
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-additional"></a>

**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](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html) [Peringkat](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-search.html) 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**  
`userId`Bidang dihapus untuk pengguna yang tidak diautentikasi.