Bağlam ve eylemler

Önemli

20 Eylül 2023'den itibaren yeni Kişiselleştirme kaynakları oluşturamayacaksınız. Kişiselleştirme hizmeti 1 Ekim 2026'da kullanımdan kaldırılıyor. Açık kaynak microsoft/learning-loop'a geçiş yapmanızı öneririz.

Kişiselleştirme, uygulamanızın belirli bir bağlamda kullanıcılara göstermesi gerekenleri öğrenerek çalışır. Bağlam ve eylemler, Kişiselleştirme'ye geçirdiğiniz en önemli iki bilgi parçasıdır. Bağlam, geçerli kullanıcı veya sisteminizin durumu hakkında sahip olduğunuz bilgileri temsil eder ve eylemler de seçilecek seçeneklerdir.

Bağlam

Bağlam bilgileri her uygulamaya ve kullanım örneğine bağlıdır, ancak genellikle aşağıdakiler gibi bilgiler içerebilir:

  • Kullanıcınızla ilgili demografik bilgiler ve profil bilgileri.
  • Kullanıcı aracısı gibi HTTP üst bilgilerinden ayıklanan veya IP adreslerine dayalı ters coğrafi aramalar gibi HTTP bilgilerinden türetilen bilgiler.
  • Haftanın günü, hafta sonu veya değil, sabah veya öğleden sonra, tatil sezonu veya değil gibi geçerli saatle ilgili bilgiler.
  • Konum, hareket veya pil düzeyi gibi mobil uygulamalardan ayıklanan bilgiler.
  • Bu kullanıcının en çok görüntülediği film türleri gibi kullanıcıların davranışlarının geçmiş toplamları.
  • Sistemin durumu hakkında bilgi.

Uygulamanız, bağlam hakkındaki bilgileri sahip olabileceğiniz ilgili veritabanlarından, algılayıcılardan ve sistemlerden yüklemekten sorumludur. Bağlam bilgileriniz değişmezse, Sıralama API'sine göndermeden önce uygulamanıza bu bilgileri önbelleğe almak için mantık ekleyebilirsiniz.

Eylemler

Eylemler, seçeneklerin listesini temsil eden bir listedir.

Sıralama eylemleri sırasında 50'den fazla eylem göndermeyin. Her seferinde aynı 50 eylem olabilir veya değişebilirler. Örneğin, bir e-ticaret uygulaması için 10.000 öğeden oluşan bir ürün kataloğunuz varsa, bir müşterinin beğenebileceği ilk 40 öğeyi belirlemek için bir öneri veya filtreleme altyapısı kullanabilir ve geçerli bağlam için en çok ödülü oluşturacak olanı bulmak için Kişiselleştirici'yi kullanabilirsiniz.

Eylem örnekleri

Derece API'sine gönderdiğiniz eylemler, kişiselleştirmeye çalıştığınız öğelere bağlıdır.

Burada bazı örnekler verilmiştir:

Amaç Eylem
Bir haber web sitesinde hangi makalenin öne çıkarılacağını kişiselleştirin. Her eylem olası bir haber makalesidir.
Bir web sitesinde reklam yerleşimini iyileştirme. Her bir eylem, reklamlar için bir düzen yaratmak amacıyla bir düzen ya da kurallar (örneğin, üstte ve sağda küçük ya da büyük resimler) olacaktır.
Bir alışveriş web sitesinde önerilen öğelerin kişiselleştirilmiş derecelendirmesini görüntüleyin. Her eylem belirli bir üründür.
Belirli bir fotoğrafa uygulanacak filtreler gibi kullanıcı arabirimi öğeleri önerin. Her eylem farklı bir filtre olabilir.
Kullanıcı amacını netleştirmek veya eylem önermek için bir sohbet botu yanıtı seçin. Her eylem, yanıtı yorumlama seçeneğidir.
Arama sonuçları listesinin en üstünde gösterilecekleri seçme Her eylem, ilk birkaç arama sonuçlarından biridir.

İstemci uygulamasından eylemleri yükle

Eylemlere ait özellikler genellikle içerik yönetim sistemlerinden, kataloglardan ve öneren sistemlerden gelebilir. Uygulamanız, sahip olduğunuz ilgili veritabanlarından ve sistemlerden eylemlerle ilgili bilgileri yüklemekten sorumludur. Eylemleriniz değişmezse veya her seferinde yüklenmelerini sağlamak performansı gereksiz yere etkilerse, uygulamanıza bu bilgileri önbelleğe almak için mantık ekleyebilirsiniz.

Eylemlerin derecelenmesini engelleme

Bazı durumlarda, kullanıcılara görüntülenmesini istemediğiniz eylemler vardır. Bir eylemin derecelendirilmesini önlemenin en iyi yolu, eylemi Dışlanan Eylemler listesine eklemek veya Sıralama İsteğine geçirmemektir.

Bazı durumlarda, olayların varsayılan olarak üzerinde eğitilmelerini istemeyebilirsiniz. Başka bir deyişle, yalnızca belirli bir koşul karşılandığında olayları eğitmek istersiniz. Örneğin, web sayfanızın kişiselleştirilmiş bölümü katlamanın altındadır (kullanıcıların kişiselleştirilmiş içerikle etkileşim kurmadan önce kaydırması gerekir). Bu durumda, sayfanın tamamını işlerken, yalnızca kullanıcı sayfayı kaydırıp kişiselleştirilmiş içerikle etkileşim kurma fırsatı bulduğunda bir olay eğitimi yapmak istersiniz. Bu gibi durumlarda, son kullanıcının etkileşim kurma şansı olmayan varsayılan ödül (ve eğitim) olaylarını atamamak için Olay Etkinleştirmeyi Ertelemeniz gerekir.

Özellikler

Hem bağlam hem de olası eylemler özellikler kullanılarak açıklanmıştır. Özellikler, ödülleri en üst düzeye çıkarmak için karar alma süreci için önemli olduğunu düşündüğünüz tüm bilgileri temsil eder. İyi bir başlangıç noktası, her zaman damgasında en iyi eylemi seçmekle görevlendirildiğinden emin olmak ve kendinize şu soruyu sormaktır: "Bilinçli bir karar vermek için hangi bilgilere ihtiyacım var? Bağlamı ve her olası eylemi açıklamak için hangi bilgilere sahibim?" Özellikler genel veya bir öğeye özgü olabilir.

Kişiselleştirme, eylemler ve bağlam için gönderebileceğiniz özellikleri yazmaz, sınırlamaz veya düzeltmez:

  • Zaman içinde bağlam ve eylemlerle ilgili özellikler ekleyebilir ve kaldırabilirsiniz. Kişiselleştirici, mevcut bilgilerden öğrenmeye devam eder.
  • Kategorik özellikler için olası değerleri önceden tanımlamanız gerekmez.
  • Sayısal özellikler için aralıkları önceden tanımlamanız gerekmez.
  • Alt çizgiyle _ başlayan özellik adları dikkate alınmayacaktır.
  • Özellik listesi büyük (yüzlerce) olabilir, ancak kısa bir özellik kümesiyle başlamanızı ve gerektiğinde genişletmenizi öneririz.
  • eylem özellikleri bağlam özellikleriyle herhangi bir bağıntıya sahip olabilir veya olmayabilir.
  • Kullanılabilir olmayan özellikler istekten atlanmalıdır. Belirli bir özelliğin değeri belirli bir istek için kullanılamıyorsa, bu isteğin özelliğini atla.
  • Özellikleri null değerle göndermekten kaçının. Null değer, istenmeyen "null" değerine sahip bir dize olarak işlenir.

Özelliklerin zaman içinde değişmesi normaldir. Ancak Kişiselleştirme'nin makine öğrenmesi modelinin gördüğü özelliklere göre uyarlandığını unutmayın. Tüm yeni özellikleri içeren bir istek gönderirseniz, Kişiselleştirici'nin modeli geçerli olay için en iyi eylemi seçmek üzere geçmiş olayları kullanamaz. 'Kararlı' bir özellik kümesine (yinelenen özelliklerle) sahip olmak, Kişiselleştirme'nin makine öğrenmesi algoritmalarının performansına yardımcı olur.

Bağlam özellikleri

  • Bazı bağlam özellikleri yalnızca zamanın bir bölümünde kullanılabilir. Örneğin, bir kullanıcı çevrimiçi market web sitesinde oturum açtıysa, bağlam satın alma geçmişini açıklayan özellikler içerir. Bu özellikler konuk kullanıcı için kullanılamaz.
  • En az bir bağlam özelliği olmalıdır. Kişiselleştirme boş bir bağlamı desteklemez.
  • Bağlam özellikleri her istek için aynıysa, Kişiselleştirici genel olarak en iyi eylemi seçer.

Eylem özellikleri

  • Tüm eylemlerin aynı özellikleri içermesi gerekmez. Örneğin, çevrimiçi market senaryosunda mikrodalga fırında pişirilebilir patlamış mısır "pişirme zamanı" özelliğine sahip olurken salatalık olmaz.
  • Belirli bir eylem kimliğine ilişkin özellikler bir gün kullanılabilir, ancak daha sonra kullanılamaz duruma gelir.

Örnekler:

Aşağıda eylem özellikleri için iyi örnekler verilmiştir. Bunlar her uygulamaya çok bağlıdır.

  • Eylemlerin özelliklerine sahip özellikler. Örneğin, bir film mi yoksa bir dizi mi?
  • Kullanıcıların geçmişte bu eylemle nasıl etkileşim kurabileceğine ilişkin özellikler. Örneğin, bu film çoğunlukla A veya B demografisindeki kişiler tarafından görülür, genellikle en fazla bir kez oynatılır.
  • Kullanıcının eylemleri nasıl gördüğüyle ilgili özellikler. Örneğin, küçük resimde gösterilen filmin posteri yüzleri, arabaları veya manzaraları içeriyor mu?

Desteklenen özellik türleri

Kişiselleştirici dize, sayısal ve boole türlerinin özelliklerini destekler. Uygulamanızın birkaç özel durum dışında çoğunlukla dize özelliklerini kullanması olasıdır.

Özellik türleri Kişiselleştirme'de makine öğrenmesini nasıl etkiler?

  • Dizeler: Dize türleri için, her anahtar-değer (özellik adı, özellik değeri) birleşimi bir One-Hot özelliği olarak kabul edilir (örneğin, category:"Produce" ve category:"Meat" dahili olarak makine öğrenmesi modelinde farklı özellikler olarak temsil edilir).
  • Sayısal: Yalnızca sayı kişiselleştirme sonucunu orantılı olarak etkilemesi gereken bir büyüklük olduğunda sayısal değerleri kullanın. Bu çok senaryoya bağlıdır. Sayısal birimleri temel alan ancak anlamın doğrusal olmadığı (Yaş, Sıcaklık veya Kişi Yüksekliği gibi) özellikler en iyi kategorik dizeler olarak kodlanır. Örneğin Yaş, "Yaş":"0-5", "Yaş":"6-10" vb. olarak kodlanabilir. Yükseklik": "Yükseklik": "<5'0", "Yükseklik": "5'0-5'4", "Yükseklik": "5'5-5'11", "Yükseklik":"6'0-6-4", "Yükseklik":">6'4".
  • Boolean
  • Diziler Yalnızca sayısal diziler desteklenir.

Özellik mühendisliği

  • Büyüklüğe sahip olmayan özellikler için kategorik ve dize türlerini kullanın.
  • Kişiselleştirmeyi yönlendirmek için yeterli özellik olduğundan emin olun. İçeriğin ne kadar hassas bir şekilde hedeflenmesi gerekiyorsa, o kadar fazla özellik gerekir.
  • Çeşitli yoğunlukların özellikleri vardır. Birçok öğe birkaç demet halinde gruplandırılırsa bir özellik yoğundur. Örneğin, binlerce video "Uzun" (5 dk'nın üzerinde) ve "Kısa" (5 dk'nın altında) olarak sınıflandırılabilir. Bu çok yoğun bir özelliktir. Öte yandan, aynı binlerce öğe "Title" adlı bir özniteliğe sahip olabilir ve bu öznitelik bir öğeden diğerine neredeyse hiçbir zaman aynı değere sahip olmaz. Bu çok yoğun olmayan veya seyrek bir özelliktir.

Yüksek yoğunluklu özelliklere sahip olmak, Personalizer'ın bir öğedeki öğrenmeyi diğerine aktarmasına yardımcı olur. Ancak yalnızca birkaç özellik varsa ve bunlar çok yoğunsa, Kişiselleştirici aralarından seçim yapabileceğiniz yalnızca birkaç demet içeren içeriği tam olarak hedeflemeye çalışır.

Özellik tasarımı ve biçimlendirme ile ilgili yaygın sorunlar

  • Yüksek kardinaliteye sahip özellikler gönderme. Birçok olay üzerinde tekrarlanma olasılığı olmayan benzersiz değerlere sahip özellikler. Örneğin, bir kişiye özgü PII (ad, telefon numarası, kredi kartı numarası, IP adresi gibi) Kişiselleştirici ile kullanılmamalıdır.
  • Kullanıcı kimliklerini gönderme Çok sayıda kullanıcı olduğunda, bu bilgilerin kişiselleştirmenin ortalama ödül puanını en üst düzeye çıkarması için öğrenme sürecine katkıda bulunması pek mümkün değildir. Kullanıcı kimliklerinin gönderilmesi (PII olmayan kimlikler bile) modele büyük olasılıkla daha fazla kirlilik ekler ve önerilmez.
  • Nadiren birkaç kezden fazla ortaya çıkacak benzersiz değerleri göndermek. Özelliklerinizi daha genel kategorilere ayırmanız önerilir. Örneğin, sırasıyla yalnızca 7 ve 24 benzersiz değer olduğundan "Context.TimeStamp.Day":"Monday" veya "Context.TimeStamp.Hour":13 gibi özelliklere sahip olmak yararlı olabilir. Ancak, "Context.TimeStamp":"1985-04-12T23:20:50.52Z" çok hassastır ve çok fazla sayıda benzersiz değere sahiptir, bu da Kişiselleştirme'nin ondan öğrenmesini çok zorlaştırır.

Özellik kümelerini geliştirme

Özellik Değerlendirme İşi çalıştırarak kullanıcı davranışını analiz edin. Bu, hangi özelliklerin olumlu ödüllere daha az katkıda bulunan özelliklere kıyasla büyük ölçüde katkıda bulunduğunu görmek için geçmiş verilere bakmanızı sağlar. Hangi özelliklerin yardımcı olduğunu görebilirsiniz ve sonuçları daha da geliştirmek için Kişiselleştirme'ye gönderilecek daha iyi özellikleri bulmak size ve uygulamanıza bağlıdır.

Yapay zeka ve Azure Yapay Zeka Hizmetleri ile özellik kümelerini genişletme

Yapay Zeka ve kullanıma hazır Azure AI hizmetleri, Kişiselleştirme için çok güçlü bir ekleme olabilir.

Öğelerinizi yapay zeka hizmetlerini kullanarak önceden işleyerek, kişiselleştirme için uygun olabilecek bilgileri otomatik olarak ayıklayabilirsiniz.

Örneğin:

  • Sahne öğelerini, metinleri, yaklaşımı ve diğer birçok özniteliği ayıklamak için Video Indexer aracılığıyla bir film dosyası çalıştırabilirsiniz. Bu öznitelikler daha sonra özgün öğe meta verilerinin sahip olmadığı özellikleri yansıtacak şekilde daha yoğun hale getirilebilir.
  • Görüntüler nesne algılama, yüzler duygu analizi gibi süreçlerle işlenebilir.
  • Metindeki bilgiler, varlıkları çıkarmak, duygu durumunu analiz etmek ve Bing bilgi grafiğiyle varlıkları genişletmek suretiyle artırılabilir.

Birçok başka Azure AI hizmeti gibi kullanabilirsiniz.

Eklemeleri özellik olarak kullanma

Çeşitli Machine Learning modellerindeki eklemelerin Kişiselleştirme için etkileyici özellikler olduğu kanıtlanmıştır

  • Büyük Dil Modellerinden Eklemeler
  • Azure Yapay Zeka Görüntü Modellerinden Eklemeler

Ad uzayları

İsteğe bağlı olarak, özellikler ad alanları kullanılarak düzenlenebilir (hem bağlam hem de eylem özellikleri için geçerlidir). Ad alanları, özellikleri konuya, kaynağa veya uygulamanızda anlamlı olan diğer gruplandırmalara göre gruplandırmak için kullanılabilir. Ad alanlarının kullanılıp kullanılmadığını ve ne olması gerektiğini belirlersiniz. Ad alanları özellikleri ayrı kümeler halinde düzenler ve benzer adlarla özellikleri birbirinden ayırır. Ad alanlarını özellik adlarına eklenen bir 'ön ek' olarak düşünebilirsiniz. Ad alanları iç içe yerleştirilmemelidir.

Uygulamalar tarafından kullanılan özellik ad alanlarının örnekleri aşağıda verilmiştir:

  • CRM'den_Kullanıcı_Profili
  • Zaman
  • Mobil_Cihaz_Bilgisi
  • http_kullanıcı_aracı
  • Video Çözünürlüğü
  • DeviceInfo
  • Hava Durumu
  • Ürün_Tavsiye_Değerlendirmeleri
  • mevcut_zaman
  • HaberMakaleleri_MetinAnalizi

Ad alanı adlandırma kuralları ve yönergeleri

  • Ad alanları iç içe yerleştirilmemelidir.
  • Ad alanları benzersiz ASCII karakterleriyle başlamalıdır (UTF-8 tabanlı ad alanlarını kullanmanızı öneririz). Şu anda aynı ilk karakterlere sahip ad alanlarının olması çakışmalara neden olabilir, bu nedenle ad alanlarınızın birbirinden ayrı karakterlerle başlamasını kesinlikle öneririz.
  • Ad alanları büyük/küçük harfe duyarlıdır. Örneğin user ve User farklı ad alanları olarak kabul edilir.
  • Özellik adları ad alanları arasında yinelenebilir ve ayrı özellikler olarak değerlendirilir
  • Şu karakterler kullanılamaz: kodlar < 32 (yazdırılamaz), 32 (boşluk), 58 (iki nokta üst üste), 124 (dikey çizgi) ve 126-140.
  • Alt çizgiyle _ başlayan tüm ad alanları göz ardı edilir.

JSON örnekleri

Eylemler

Rank'ı çağırırken, aralarından seçim yapabileceğiniz birden çok eylem gönderirsiniz:

JSON nesneleri iç içe JSON nesneleri ve basit özellik/değerler içerebilir. Dizi öğelerinin sayılar olması şartıyla bir dizi eklenebilir.

{
    "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
        }
      ]
    }
  ]
}

Bağlam

Bağlam, Rank API'sine gönderilen bir JSON nesnesi olarak ifade edilir:

JSON nesneleri iç içe JSON nesneleri ve basit özellik/değerler içerebilir. Dizinin öğeleri yalnızca tümü sayı olduğunda eklenebilir.

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

Ad uzayları

Aşağıdaki JSON'da , userenvironment, device, ve activity ad alanlarıdır.

Not

UTF-8 tabanlı ve farklı harflerle başlayan özellik ad alanlarının adlarını kullanmanızı kesinlikle öneririz. Örneğin, user, environment, device, ve activityu, e, d, ve a ile başlar. Şu anda aynı ilk karakterlere sahip ad alanlarının olması çakışmalara neden olabilir.

{
    "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
            }
        }
    ]
}

Sonraki adımlar

Pekiştirici öğrenme