Bagikan melalui


Konteks dan tindakan

Penting

Mulai tanggal 20 September 2023 Anda tidak akan dapat membuat sumber daya Personalizer baru. Layanan Personalizer dihentikan pada tanggal 1 Oktober 2026.

Personalizer bekerja dengan mempelajari apa yang harus ditampilkan aplikasi Anda kepada pengguna dalam konteks tertentu. Konteks dan tindakan adalah dua informasi terpenting yang Anda berikan ke Personalizer. Konteks mewakili informasi yang Anda miliki tentang pengguna saat ini atau status sistem Anda, dan tindakan adalah opsi yang akan dipilih.

Konteks

Informasi untuk konteks tergantung pada setiap aplikasi dan kasus penggunaan, tetapi biasanya dapat mencakup informasi seperti:

  • Informasi demografis dan profil tentang pengguna Anda.
  • Informasi yang diekstrak dari header HTTP seperti agen pengguna, atau berasal dari informasi HTTP seperti pencarian geografis terbalik berdasarkan alamat IP.
  • Informasi tentang waktu saat ini, seperti hari dalam seminggu, akhir pekan atau tidak, pagi atau sore hari, musim liburan atau tidak, dll.
  • Informasi yang diekstrak dari aplikasi seluler, seperti lokasi, pergerakan, atau tingkat baterai.
  • Agregat historis perilaku pengguna - seperti apa genre film yang paling banyak dilihat pengguna ini.
  • Informasi tentang status sistem.

Aplikasi Anda bertanggung jawab untuk memuat informasi tentang konteks dari database, sensor, dan sistem yang relevan yang mungkin Anda miliki. Jika informasi konteks Anda tidak berubah, Anda dapat menambahkan logika di aplikasi anda untuk menyimpan informasi ini, sebelum mengirimkannya ke Rank API.

Tindakan

Tindakan mewakili daftar opsi.

Jangan mengirim lebih dari 50 tindakan saat memberi peringkat tindakan. Mereka mungkin 50 tindakan yang sama setiap saat, atau dapat berubah. Misalnya, jika Anda memiliki katalog produk 10.000 item untuk aplikasi e-niaga, Anda dapat menggunakan mesin rekomendasi atau pemfilteran untuk menentukan 40 teratas yang mungkin disukai pelanggan, dan menggunakan Personalizer untuk menemukan yang akan menghasilkan hadiah terbanyak untuk konteks saat ini.

Contoh tindakan

Tindakan yang Anda kirim ke Rank API akan tergantung pada apa yang Anda coba personalisasi.

Berikut adalah beberapa contoh:

Tujuan Perbuatan
Personalisasi artikel mana yang disorot di situs web berita. Setiap tindakan adalah artikel berita potensial.
Optimalkan penempatan iklan di situs web. Setiap tindakan akan menjadi tata letak atau aturan untuk membuat tata letak iklan (misalnya, di bagian atas, di sebelah kanan, gambar kecil, gambar besar).
Menampilkan pangkat yang dipersonalisasi dari item yang direkomendasikan di situs web belanja. Setiap tindakan adalah produk tertentu.
Sarankan elemen antarmuka pengguna seperti filter untuk diterapkan ke foto tertentu. Setiap tindakan mungkin merupakan filter yang berbeda.
Pilih respons bot obrolan untuk mengklarifikasi niat pengguna atau menyarankan tindakan. Setiap tindakan adalah opsi cara menginterpretasikan respons.
Memilih apa yang akan ditampilkan di bagian atas daftar hasil pencarian Setiap tindakan adalah salah satu dari beberapa hasil pencarian teratas.

Muat tindakan dari aplikasi klien

Fitur dari tindakan biasanya berasal dari sistem manajemen konten, katalog, dan sistem rekomendasi. Aplikasi Anda bertanggung jawab untuk memuat informasi tentang tindakan dari database dan sistem yang relevan yang Anda miliki. Jika tindakan Anda tidak berubah atau dimuat setiap kali memiliki dampak yang tidak perlu pada kinerja, Anda dapat menambahkan logika di aplikasi Anda untuk menyimpan informasi ini.

Mencegah tindakan diberi pangkat

Dalam beberapa kasus, ada tindakan yang tidak ingin Anda tampilkan kepada pengguna. Cara terbaik untuk mencegah tindakan diberi peringkat adalah dengan menambahkannya ke daftar Tindakan yang Dikecualikan, atau tidak meneruskannya ke Permintaan Peringkat.

Dalam beberapa kasus, Anda mungkin tidak ingin peristiwa dilatih secara default. Dengan kata lain, Anda hanya ingin melatih peristiwa saat kondisi tertentu terpenuhi. Misalnya, Bagian yang dipersonalisasi dari halaman web Anda berada di bawah lipatan (pengguna harus menggulir sebelum berinteraksi dengan konten yang dipersonalisasi). Dalam hal ini Anda akan merender seluruh halaman, tetapi hanya ingin acara dilatih saat pengguna menggulir dan memiliki kesempatan untuk berinteraksi dengan konten yang dipersonalisasi. Untuk kasus ini, Anda harus Menunda Aktivasi Peristiwa untuk menghindari penetapan peristiwa hadiah default (dan pelatihan) yang tidak dapat berinteraksi dengan pengguna akhir.

Fitur

Konteks dan kemungkinan tindakan dijelaskan menggunakan fitur. Fitur mewakili semua informasi yang menurut Anda penting untuk proses pengambilan keputusan guna memaksimalkan hadiah. Titik awal yang baik adalah membayangkan Anda ditugaskan untuk memilih tindakan terbaik di setiap tanda waktu dan bertanya pada diri sendiri: "Informasi apa yang saya butuhkan untuk membuat keputusan berdasarkan informasi? Informasi apa yang saya miliki yang tersedia untuk menjelaskan konteks dan setiap kemungkinan tindakan?" Fitur dapat bersifat umum, atau khusus untuk item.

Personalizer tidak meresepkan, membatasi, atau memperbaiki fitur apa yang dapat Anda kirim untuk tindakan dan konteks:

  • Seiring waktu, Anda dapat menambahkan dan menghapus fitur tentang konteks dan tindakan. Personalizer terus belajar dari informasi yang tersedia.
  • Untuk fitur kategoris, tidak perlu menentukan nilai yang mungkin sebelumnya.
  • Untuk fitur numerik, tidak perlu menentukan rentang sebelumnya.
  • Nama fitur yang dimulai dengan garis bawah _ akan diabaikan.
  • Daftar fitur bisa besar (ratusan), tetapi sebaiknya mulai dengan set fitur ringkas dan berkembang seperlunya.
  • fitur tindakan mungkin atau mungkin tidak memiliki korelasi dengan fitur konteks .
  • Fitur yang tidak tersedia harus dihilangkan dari permintaan. Jika nilai fitur tertentu tidak tersedia untuk permintaan tertentu, hilangkan fitur untuk permintaan ini.
  • Hindari mengirim fitur dengan nilai null. Nilai null akan diproses sebagai string dengan nilai "null" yang tidak diinginkan.

Tidak apa-apa dan alami agar fitur berubah dari waktu ke waktu. Namun, perlu diingat bahwa model pembelajaran mesin Personalizer beradaptasi berdasarkan fitur yang dilihatnya. Jika Anda mengirim permintaan yang berisi semua fitur baru, model Personalizer tidak akan dapat menggunakan peristiwa sebelumnya untuk memilih tindakan terbaik untuk peristiwa saat ini. Memiliki set fitur 'stabil' (dengan fitur berulang) akan membantu performa algoritma pembelajaran mesin Personalizer.

Fitur konteks

  • Beberapa fitur konteks mungkin hanya tersedia sebagian dari waktu. Misalnya, jika pengguna masuk ke situs web toko kelontong online, konteksnya akan berisi fitur yang menjelaskan riwayat pembelian. Fitur-fitur ini tidak akan tersedia untuk pengguna tamu.
  • Harus ada setidaknya satu fitur konteks. Personalizer tidak mendukung konteks kosong.
  • Jika fitur konteks identik untuk setiap permintaan, Personalizer akan memilih tindakan terbaik secara global.

Fitur tindakan

  • Tidak semua tindakan perlu berisi fitur yang sama. Misalnya, dalam skenario toko kelontong online, popcorn mikrowavable akan memiliki fitur "waktu memasak", sementara mentimun tidak akan.
  • Fitur untuk ID tindakan tertentu mungkin tersedia satu hari, tetapi kemudian menjadi tidak tersedia.

Contoh:

Berikut ini adalah contoh yang baik untuk fitur tindakan. Ini akan sangat tergantung pada setiap aplikasi.

  • Fitur dengan karakteristik tindakan. Misalnya, apakah film atau serial tv?
  • Fitur tentang bagaimana pengguna mungkin telah berinteraksi dengan tindakan ini di masa lalu. Misalnya, film ini sebagian besar dilihat oleh orang-orang dalam demografi A atau B, biasanya diputar tidak lebih dari satu kali.
  • Fitur tentang karakteristik bagaimana pengguna melihat tindakan. Misalnya, apakah poster untuk film yang ditampilkan dalam gambar kecil termasuk wajah, mobil, atau lanskap?

Jenis fitur yang didukung

Personalizer mendukung fitur jenis untai (karakter), numerik, dan boolean. Kemungkinan aplikasi Anda sebagian besar akan menggunakan fitur string, dengan beberapa pengecualian.

Bagaimana jenis fitur memengaruhi pembelajaran mesin di Personalizer

  • String: Untuk jenis string, setiap kombinasi nilai kunci (nama fitur, nilai fitur) diperlakukan sebagai fitur One-Hot (misalnya, kategori:"Produce" dan category:"Meat" secara internal akan direpresentasikan sebagai fitur yang berbeda dalam model pembelajaran mesin).
  • Numerik: Hanya gunakan nilai numerik ketika angka adalah besaran yang seharusnya secara proporsional memengaruhi hasil personalisasi. Ini sangat tergantung pada skenario. Fitur yang didasarkan pada unit numerik tetapi di mana maknanya tidak linier - seperti Usia, Suhu, atau Tinggi Orang - paling baik dikodekan sebagai string kategoris. Misalnya Usia dapat dikodekan sebagai "Age":"0-5", "Age":"6-10", dll. Tinggi dapat di-bucket sebagai "Tinggi": "<5'0", "Tinggi": "5'0-5'4", "Tinggi": "5'5-5'11", "Tinggi":"6'0-6-4", "Tinggi":">6'4".
  • Boolean
  • Array Hanya array numerik yang didukung.

Rekayasa fitur

  • Gunakan jenis kategoris dan untai (karakter) untuk fitur yang bukan besarannya.
  • Pastikan ada cukup fitur untuk mendorong personalisasi. Semakin tepat sasaran konten yang dibutuhkan, semakin banyak fitur yang dibutuhkan.
  • Ada fitur kepadatan yang beragam. Fitur padat jika banyak item dikelompokkan dalam beberapa ember. Misalnya, ribuan video dapat diklasifikasikan sebagai "Panjang" (lebih dari 5 menit) dan "Pendek" (panjang di bawah 5 menit). Ini adalah fitur yang sangat padat. Di sisi lain, ribuan item yang sama dapat memiliki atribut yang disebut "Judul", yang hampir tidak akan pernah memiliki nilai yang sama dari satu item ke item lainnya. Ini adalah fitur yang sangat tidak padat atau jarang.

Memiliki fitur kepadatan tinggi membantu Personalizer mengekstrapolasi pembelajaran dari satu item ke item lainnya. Tetapi jika hanya ada beberapa fitur dan terlalu padat, Personalizer akan mencoba menargetkan konten dengan tepat hanya dengan beberapa wadah untuk dipilih.

Masalah umum dengan desain dan pemformatan fitur

  • Mengirim fitur dengan kardinalitas tinggi. Fitur yang memiliki nilai unik yang tidak mungkin diulangi di banyak peristiwa. Misalnya, PII khusus untuk satu individu (seperti nama, nomor telepon, nomor kartu kredit, alamat IP) tidak boleh digunakan dengan Personalizer.
  • Mengirim ID pengguna Dengan sejumlah besar pengguna, tidak mungkin informasi ini relevan dengan pembelajaran Personalizer untuk memaksimalkan skor hadiah rata-rata. Mengirim ID pengguna (bahkan jika non-PII) kemungkinan akan menambahkan lebih banyak kebisingan ke model dan tidak disarankan.
  • Mengirim nilai unik yang jarang terjadi lebih dari beberapa kali. Disarankan untuk menyimpan fitur Anda ke tingkat detail yang lebih tinggi. Misalnya, memiliki fitur seperti "Context.TimeStamp.Day":"Monday" atau "Context.TimeStamp.Hour":13 dapat berguna karena hanya ada 7 dan 24 nilai unik, masing-masing. Namun, "Context.TimeStamp":"1985-04-12T23:20:50.52Z" sangat tepat dan memiliki sejumlah besar nilai unik, yang membuatnya sangat sulit bagi Personalizer untuk belajar darinya.

Meningkatkan rangkaian fitur

Analisis perilaku pengguna dengan menjalankan Pekerjaan Evaluasi Fitur. Ini memungkinkan Anda untuk melihat data sebelumnya untuk melihat fitur apa yang sangat berkontribusi pada hadiah positif dibandingkan dengan yang berkontribusi lebih sedikit. Anda dapat melihat fitur apa yang membantu, dan terserah Anda dan aplikasi Anda untuk menemukan fitur yang lebih baik untuk dikirim ke Personalizer untuk meningkatkan hasil lebih jauh.

Memperluas set fitur dengan kecerdasan buatan dan layanan Azure AI

Kecerdasan Buatan dan layanan Azure AI yang siap dijalankan dapat menjadi tambahan yang sangat kuat untuk Personalizer.

Dengan melakukan praproses item Menggunakan layanan kecerdasan buatan, Anda dapat secara otomatis mengekstrak informasi yang cenderung relevan untuk personalisasi.

Contohnya:

  • Anda dapat menjalankan file film melalui Video Indexer untuk mengekstrak elemen scene, teks, sentimen, dan banyak atribut lainnya. Atribut ini kemudian dapat dibuat lebih padat untuk mencerminkan karakteristik yang tidak memiliki metadata item asli.
  • Gambar dapat dijalankan melalui deteksi objek, wajah melalui sentimen, dll.
  • Informasi dalam teks dapat bertambah dengan mengekstrak entitas, sentimen, dan memperluas entitas dengan grafik pengetahuan Bing.

Anda dapat menggunakan beberapa layanan Azure AI lainnya, seperti

Menggunakan penyematan sebagai fitur

Penyematan dari berbagai model Pembelajaran Mesin telah terbukti menjadi fitur yang afektif untuk Personalizer

  • Penyematan dari Model Bahasa Besar
  • Penyematan dari Model Visi Azure AI

Namaspace

Secara opsional, fitur dapat diatur menggunakan namespace layanan (relevan untuk fitur konteks dan tindakan). Namespace dapat digunakan untuk mengelompokkan fitur berdasarkan topik, berdasarkan sumber, atau pengelompokan lain yang masuk akal dalam aplikasi Anda. Anda menentukan apakah namespace layanan digunakan dan apa yang seharusnya. Namespace mengatur fitur ke dalam set yang berbeda, dan membedakan fitur dengan nama yang sama. Anda dapat menganggap kumpulan nama XML sebagai 'awalan' yang ditambahkan ke nama fitur. Namespace tidak boleh ditumpuk.

Berikut ini adalah contoh kumpulan nama XML fitur yang digunakan oleh aplikasi:

  • User_Profile_from_CRM
  • Waktu
  • Mobile_Device_Info
  • http_user_agent
  • VideoResolution
  • Info Perangkat
  • Cuaca
  • Product_Recommendation_Ratings
  • current_time
  • NewsArticle_TextAnalytics

Konvensi dan panduan penamaan namespace

  • Namespace tidak boleh ditumpuk.
  • Namespace harus dimulai dengan karakter ASCII unik (sebaiknya gunakan names namespace layanan yang berbasis UTF-8). Saat ini memiliki namespace dengan karakter pertama yang sama dapat mengakibatkan tabrakan, oleh karena itu sangat disarankan agar namespace Anda dimulai dengan karakter yang berbeda satu sama lain.
  • Namespace peka huruf besar/kecil. Misalnya user dan User akan dianggap sebagai namespace layanan yang berbeda.
  • Nama fitur dapat diulang di seluruh namespace, dan akan diperlakukan sebagai fitur terpisah
  • Karakter berikut tidak dapat digunakan: kode < 32 (tidak dapat dicetak), 32 (spasi), 58 (titik dua), 124 (pipa), dan 126–140.
  • Semua namespace yang dimulai dengan garis bawah _ akan diabaikan.

Contoh JSON

Tindakan

Saat memanggil Rank, Anda akan mengirim beberapa tindakan untuk dipilih:

Objek JSON dapat mencakup objek JSON bertumpuk dan properti/nilai sederhana. Array hanya dapat disertakan jika item array adalah angka.

{
    "actions": [
    {
      "id": "pasta",
      "features": [
        {
          "taste": "salty",
          "spiceLevel": "medium",
          "grams": [400,800]
        },
        {
          "nutritionLevel": 5,
          "cuisine": "italian"
        }
      ]
    },
    {
      "id": "ice cream",
      "features": [
        {
          "taste": "sweet",
          "spiceLevel": "none",
          "grams": [150, 300, 450]
        },
        {
          "nutritionalLevel": 2
        }
      ]
    },
    {
      "id": "juice",
      "features": [
        {
          "taste": "sweet",
          "spiceLevel": "none",
          "grams": [300, 600, 900]
        },
        {
          "nutritionLevel": 5
        },
        {
          "drink": true
        }
      ]
    },
    {
      "id": "salad",
      "features": [
        {
          "taste": "salty",
          "spiceLevel": "low",
          "grams": [300, 600]
        },
        {
          "nutritionLevel": 8
        }
      ]
    }
  ]
}

Konteks

Konteks dinyatakan sebagai objek JSON yang dikirim ke Rank API:

Objek JSON dapat mencakup objek JSON bertumpuk dan properti/nilai sederhana. Array hanya dapat disertakan jika item array adalah angka.

{
    "contextFeatures": [
        {
            "state": {
                "timeOfDay": "noon",
                "weather": "sunny"
            }
        },
        {
            "device": {
                "mobile":true,
                "Windows":true,
                "screensize": [1680,1050]
            }
        }
    ]
}

Namaspace

Dalam JSON berikut, user, environment, device, dan activity adalah namespace layanan.

Catatan

Kami sangat menyarankan penggunaan nama untuk namespace fitur yang berbasis UTF-8 dan dimulai dengan huruf yang berbeda. Misalnya, user, environment, device, dan activity dimulai dengan u, e, d, dan a. Saat ini memiliki namespace dengan karakter pertama yang sama dapat mengakibatkan tabrakan.

{
    "contextFeatures": [
        { 
            "user": {
                "profileType":"AnonymousUser",
                "Location": "New York, USA"
            }
        },
        {
            "environment": {
                "monthOfYear": "8",
                "timeOfDay": "Afternoon",
                "weather": "Sunny"
            }
        },
        {
            "device": {
                "mobile":true,
                "Windows":true
            }
        },
        {
            "activity" : {
                "itemsInCart": "3-5",
                "cartValue": "250-300",
                "appliedCoupon": true
            }
        }
    ]
}

Langkah berikutnya

Pembelajaran Penguatan