Özellikler, eylemler ve bağlam hakkında bilgidir

Kişiselleştirme hizmeti, uygulamanıza verilen bağlamda kullanıcılara ne gösterebileceğinizi öğrenerek çalışır.

Kişiselleştirme, en iyi eylemi seçmek için geçerli bağlam hakkında bilgi olan özelliklerini kullanır. Özellikler, daha yüksek ödül elde etmek için kişiselleştirmeye yardımcı olduğunu düşünebileceğiniz tüm bilgileri temsil eder. Özellikler çok genel veya bir öğeye özgü olabilir.

Örneğin, aşağıdakiler hakkında bir özelliğiniz olabilir:

  • gibi bir kullanıcı Sports_Shopper kişisi. Bu tek bir kullanıcı kimliği değildir.
  • Video , veya veya gibi içerikler ya da mağazada bir perakende öğe olup Documentary Movie TV Series olmadığı.
  • Haftanın hangi günü olduğu gibi geçerli zaman dönemi.

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

  • Bazı eylemler için bazı özellikler gönderesiniz, yoksa diğerleri için gönderesiniz. Örneğin, TV dizilerinde filmlerin sahip olmadığınız öznitelikler olabilir.
  • Bazı özellikler yalnızca birkaç kez kullanılabilir olabilir. Örneğin, bir mobil uygulama bir web sayfasından daha fazla bilgi sağlar.
  • Zaman içinde bağlam ve eylemlerle ilgili özellikler ekleyebilir ve kaldırabilirsiniz. Kişiselleştirme, mevcut bilgilerden öğrenmeye devam eder.
  • Bağlam için en az bir özellik olması gerekir. Kişiselleştirme boş bir bağlamı desteklemez. Her zaman yalnızca sabit bir bağlam gönderirsiniz, Kişiselleştirme eylemi yalnızca eylemlerde yer alan özelliklerle ilgili derecelendirmeler için seçer.
  • Kategorik özellikler için olası değerleri tanımlamanız ve sayısal değerler için aralıkları önceden tanımlamanız gerek değildir.

Desteklenen özellik türleri

Kişiselleştirme dize, sayısal ve boole türlerinin özelliklerini destekler. Birkaç özel durum dışında, büyük olasılıkla uygulamanız çoğunlukla dize özelliklerini kullanır.

Özellik türü seçimi kişiselleştirme Machine Learning etkiler

  • Dizeler: Dize türleri için, her anahtar ve değer birleşimi bir One-Hot özelliği olarak kabul edilir (ör. tür:"ScienceFiction" ve tür:"Yer"), makine öğrenmesi modeli için iki yeni giriş özelliği oluşturabilir.
  • Sayısal: Sayı, kişiselleştirme sonucuyla orantılı olarak etkileyebilecek bir büyüklük olduğunda sayısal değerler kullanacağız. Bu senaryoya bağımlıdır. Bir perakende deneyimini kişiselleştirmek gibi basitleştirilmiş bir örnekte NumberOfPetsOwned, 2 veya 3 evcil hayvana sahip olan kişilerin kişiselleştirme sonucunda 1 evcil hayvana sahip olmak kadar iki veya üç kez etkilemesini istediğiniz sayısal bir özellik olabilir. Sayısal birimleri temel alan ancak anlamın doğrusal olmayan yaş, sıcaklık veya Kişi Yüksekliği gibi özellikler dize olarak kodlanması en iyisidir. Örneğin DayOfMonth, "1","2"..."31" değerine sahip bir dize olabilir. Birçok kategoriye sahipsanız Özellik kalitesi genellikle aralıklar kullanılarak geliştirebilirsiniz. Örneğin, Age "Age":"0-5", "Age":"6-10" vb. olarak kodlanmış olabilir.
  • "false" değeriyle gönderilen Boole değerleri hiç gönderilmemiş gibi davranır.

Mevcut olan özellikler istekten at edilmelidir. Modeli eğiten mevcut ve "null" değerine sahip olacak şekilde işlendiğinden, null değere sahip özellikler göndermekten kaçının.

Ad alanlarıyla özellikleri kategorilere ayırma

Kişiselleştirme, ad alanları olarak düzenlenmiş özellikleri alır. Uygulamanıza ad alanlarının kullan mı, yoksa ne olması gerektiğini belirlersiniz. Ad alanları, benzer bir konu veya belirli bir kaynaktan gelen özelliklerle ilgili özellikleri grup etmek için kullanılır.

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

  • User_Profile_from_CRM
  • Saat
  • Mobile_Device_Info
  • http_user_agent
  • VideoResolution
  • UserDeviceInfo
  • Hava Durumu
  • Product_Recommendation_Ratings
  • current_time
  • NewsArticle_TextAnalytics

Özellik ad alanlarını geçerli JSON anahtarları olduğu sürece kendi kurallarınıza göre ad kullanabilirsiniz. Ad alanları, özellikleri ayrı kümeler olarak düzenlemek ve benzer adlara sahip özellikleri net bir şekilde ifade etmek için kullanılır. Ad alanlarını özellik adlarına eklenen bir 'ön ek' olarak düşünebilirsiniz. Ad alanları iç içe olamaz.

Aşağıdaki JSON'da, user , , ve özellik ad environment device activity alanlarıdır.

Not

Şu anda UTF-8 tabanlı özellik ad alanları için adların kullanılması ve farklı harflerle başlamanız önemle önerilir. Örneğin, user , environment device , ve , , activity ve u ile e d a başlar. Şu anda aynı ilk karakterlere sahip ad alanlarının olması, makine öğrenmesi için kullanılan dizinlerde çakışmalara neden olabilir.

JSON nesneleri iç içe JSON nesneleri ve basit özellik/değerler içerebilir. Bir dizi yalnızca dizi öğeleri sayı ise dahil olabilir.

{
    "contextFeatures": [
        { 
            "user": {
                "profileType":"AnonymousUser",
                "latlong": ["47.6,-122.1"]
            }
        },
        {
            "environment": {
                "dayOfMonth": "28",
                "monthOfYear": "8",
                "timeOfDay": "13:00",
                "weather": "sunny"
            }
        },
        {
            "device": {
                "mobile":true,
                "Windows":true
            }
        },
        {
            "activity" : {
                "itemsInCart": 3,
                "cartValue": 250,
                "appliedCoupon": true
            }
        }
    ]
}

Ad alanları için karakter kümelerine yönelik kısıtlamalar

Ad alanını adlandırmak için kullanılan dize bazı kısıtlamalara uymalı:

  • Unicode olarak algılana bir şey değil.
  • Ad alanı adları için 256 koduyla < bazı yazdırılabilir sembolleri kullanabilirsiniz.
  • < 32 (yazdırılamaz), 32 (boşluk), 58 (iki nokta), 124 (kanal) ve 126–140 kodlarında semboller kullanılamaz.
  • "_" alt çizgiyle başlamaz, yoksayılır.

Özellik kümelerini Kişiselleştirme için daha etkili hale yapma

İyi bir özellik kümesi Kişiselleştirme'nin en yüksek ödülü elde etmeyi hedefleyecek eylemi tahmin etmeyi öğrenmesi için yardımcı olur.

Kişiselleştirme Derecesi API'sinde şu önerileri takip edecek özellikler göndermeyi göz önünde bulundurabilirsiniz:

  • Çok büyük bir özellik için kategorik ve dize türleri kullanın.

  • Kişiselleştirmeyi devam etmek için yeterli özellik vardır. İçerik ne kadar net hedefli olursa o kadar fazla özellik gerekir.

  • Çeşitli yoğunlukların yeterli özellikleri vardır. Birçok öğe birkaç demette gruplandı ise özellik yoğundur. Örneğin, binlerce video "Uzun" (5 dk'dan uzun) ve "Kısa" (5 dakikanın altında) olarak sınıflandırılabilir. Bu çok yoğun bir özelliktir. Öte yandan, aynı binlerce öğenin "Başlık" adlı bir özniteliği olabilir ve bu öznitelik bir öğeden diğerine neredeyse hiçbir zaman aynı değere sahip değildir. Bu çok yoğun olmayan veya seyrek bir özelliktir.

Yüksek yoğunluklu özelliklere sahip olmak Kişiselleştirme'nin bir öğeden diğerine öğrenmeyi tahminsine yardımcı olur. Ancak yalnızca birkaç özellik varsa ve bunlar çok yoğunsa Kişiselleştirme, yalnızca birkaç demetle içeriği tam olarak hedeflemeyi dener.

Özellik kümelerini geliştirme

Çevrimdışı Değerlendirme yaparak kullanıcı davranışını analiz etme. Bu sayede geçmişteki verilere bakarak olumlu ödüllere daha az katkıda bulunanlara göre önemli ölçüde katkıda bulunan özellikleri görebilirsiniz. Hangi özelliklerin yardımcı olduğunu görebilir ve sonuçları daha da iyileştirmek için Kişiselleştirme'ye göndermek için size ve uygulamanıza daha iyi özellikler bulmanız gerekir.

Aşağıdaki bölümler Kişiselleştirme'ye gönderilen özellikleri geliştirmeye yönelik yaygın uygulamalardır.

Özellikleri daha yoğun hale

Özellik kümelerinizi daha büyük ve daha az yoğun olacak şekilde düzenleyerek geliştirmek mümkündür.

Örneğin, ikinciye kadar olan zaman damgası çok seyrek bir özelliktir. Zamanları "sabah", "orta gün", "öğleden sonra" vb. sınıflara göre sınıflandırarak daha yoğun (etkili) hale geldi.

Konum bilgileri genellikle daha geniş sınıflandırmalar oluşturmanın avantajlarından da faydalanıyor. Örneğin, Lat: 47.67402° N, Long: 122.12154° W gibi bir Latitude-Longitude koordinatı çok kesindir ve modeli enlem ve boylamları ayrı boyutlar olarak öğrenmeye zorlar. Konum bilgilerini temel alarak kişiselleştirmeye çalışırken, daha büyük kesimlerde konum bilgilerini gruplamanıza yardımcı olur. Bunu yapmak için kolay bir yol, Lat-Long sayılar için uygun bir yuvarlama duyarlığı seçmek ve enlem ve boylamları tek bir dizede yaparak "alanlar" olarak birleştirmektir. Örneğin, yaklaşık birkaç kilometre genişliğindeki bölgelerde 47,67402° N, Uzun: 122,12154° W'yi temsil etmek için iyi bir yol "konum":"34,3 , 12,1" olabilir.

Ekli bilgilerle özellik kümelerini genişletme

Sahip olduğunuz bilgilerden türetilen, ek özelliklere sahip olmayan öznitelikleri de düşünebilirsiniz. Örneğin, kurgusal bir film listesi kişiselleştirmesi sırasında, bir hafta içi iş gününe ait farklı bir çalışma gününe ait farklı bir davranış olabilir mi? Saat, "hafta sonu" veya "hafta içi" özniteliğine sahip olacak şekilde genişletilebilir. Ulusal kültürel Uluslararası tatiller, belirli film türlerine göre ilgilensin mi? Örneğin, "Cadılar Bayramı" özniteliği ilgili olduğu yerlerde faydalıdır. Rainy Hava durumu, birçok kişiye ait bir film seçimine önemli bir etkiye sahip olabilir mi? Zaman ve yerde, bir hava durumu hizmeti bu bilgileri sağlayabilir ve ek bir özellik olarak ekleyebilirsiniz.

Yapay zeka ve bilişsel hizmetler ile özellik kümelerini genişletme

Yapay zeka ve çalıştırmaya hazırlanma bilişsel hizmetler, Kişiselleştiriciye çok güçlü bir ekleme olabilir.

Yapay zeka hizmetlerini kullanarak öğelerinizi ön işlemden yararlanarak, kişiselleştirmeyle ilgili olabilecek olası bilgileri otomatik olarak ayıklayabilirsiniz.

Örnek:

  • Sahne öğelerini, metni, 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 verilerinde bulunmayan özellikleri yansıtacak şekilde daha yoğun hale getirilebilir.
  • Görüntüler, nesne algılama, yaklaşım, yüz ve benzeri işlemler aracılığıyla çalıştırılabilir.
  • metindeki bilgiler, varlıkların ayıklanmasına, becerisine, Bing bilgi graf ve varlık genişleterek, vb. genişletilebilir.

Gibi diğer birçok Azure bilişsel hizmetikullanabilirsiniz.

Eylemler bir seçenek listesini temsil eder

Her eylem:

  • Olay kimliği vardır. Zaten bir olay KIMLIĞINIZ varsa, bunu göndermeniz gerekir. Bir olay KIMLIĞINIZ yoksa, bir tane göndermeyin, kişiselleştirici sizin için bir tane oluşturur ve bu dosyayı sıralama isteğinin yanıtında döndürür. KIMLIK, Kullanıcı değil, sıralama olayı ile ilişkilendirilir. Bir KIMLIK oluşturursanız, bir GUID en iyi şekilde kullanılır.
  • Özelliklerin bir listesini içerir.
  • Özellikler listesi büyük (yüzlerce) olabilir, ancak bir yandan elde etmeyen özellikleri kaldırmak için özellik verimliliğini değerlendirmeyi öneririz.
  • Eylemlerdeki özellikler, kişiselleştirici tarafından kullanılan bağlamdaki özelliklerle bağıntılı olabilir veya olmayabilir.
  • Eylemler için özellikler bazı eylemlerde bulunabilir ve başkaları tarafından kullanılamaz.
  • Belirli bir eylem KIMLIĞI için özellikler bir gün kullanılabilir, ancak daha sonra kullanılamaz hale gelir.

Kararlı özellik kümeleri olduğunda, kişiselleştirici 'ın makine öğrenimi algoritmaları daha iyi gerçekleştirilir, ancak özellik kümesi zaman içinde değişirse derecelendirme çağrıları başarısız olur.

İşlemleri derecelendirme sırasında 50 ' den fazla eylem gönderme. Bunlar her seferinde aynı 50 eylem olabilir, ya da değişebilir. Örneğin, bir e-ticaret uygulaması için 10.000 öğe kataloğuna ait bir Ürün kataloğunuz varsa, bir müşterinin en iyi 40 ' i belirleyebilmesi için bir öneri veya filtreleme motoru kullanabilir ve bir Kullanıcı, geçerli bağlam için en fazla bulmayı (örneğin, Kullanıcı sepete eklenecektir) oluşturacak şekilde bulmak için kişisel olarak kullanabilirsiniz.

Eylem örnekleri

Derecelendirme API 'sine göndereceğiniz eylemler, kişiselleştirmeye çalıştığınız işlemlere göre değişir.

İşte bazı örnekler:

Amaç Eylem
Bir haber web sitesinde vurgulanan makaleyi kişiselleştirin. Her eylem olası bir haber makalelidir.
Web sitesinde ad yerleşimini iyileştirin. Her eylem, reklamlar için bir düzen (örneğin, en üstte, küçük görüntüler, büyük görüntüler) oluşturmak için bir düzen veya kurallar olacaktır.
Bir alışveriş web sitesinde önerilen öğelerin kişiselleştirilmiş sıralamasını görüntüleyin. Her eylem, belirli bir üründür.
Belirli bir fotoğrafta uygulanacak filtreler gibi kullanıcı arabirimi öğelerini önerin. Her eylem farklı bir filtre olabilir.
Kullanıcı amacını açıklamak veya bir eylem önermek için bir sohbet bot 'un yanıtını seçin. Her eylem, yanıtın nasıl yorumlanacağı konusunda bir seçenektir.
Arama sonuçları listesinin en üstünde neyin gösterileceğini seçin Her eylem, en çok birkaç arama sonuçlarından biridir.

Eylemlere yönelik özellik örnekleri

Eylemler için özelliklerin iyi örnekleri aşağıda verilmiştir. Bunlar her bir uygulamaya göre değişir.

  • Eylemlerin özelliklerine sahip özellikler. Örneğin, bu bir film ya da TV serisi mi?
  • Kullanıcıların geçmişte bu eylemle nasıl etkileşim albileceğini gösteren Özellikler. Örneğin, bu film çoğu zaman demografik A veya B 'deki kişiler tarafından görülebildiğinden, genellikle birden fazla kez yürütüyordur.
  • Kullanıcının eylemleri nasıl gördüğü özellikleriyle ilgili özellikler. Örneğin, küçük resimde gösterilen filmin posterleri yüz, araba veya landscapes içeriyor mu?

İstemci uygulamasından eylemleri yükleme

Eylemlerden özellikler genellikle içerik yönetim sistemlerinden, kataloglarından ve öneren sistemlerinden gelebilir. Uygulamanız, sahip olduğunuz ilgili veritabanlarından ve sistemlerden eylemlerle ilgili bilgileri yüklemekten sorumludur. Eylemleriniz, performans üzerinde gereksiz bir etkiye sahip olmak üzere değişiklik veya yüklenmeme durumunda bu bilgileri önbelleğe almak için uygulamanıza Logic ekleyebilirsiniz.

Eylemlerin derecelendirmasını önleme

Bazı durumlarda, kullanıcılara görüntülenmesini istemediğiniz eylemler vardır. Bir eylemin en üst olarak derecelendirmasını önlemenin en iyi yolu, bunu ilk yerde bulunan işlem API 'sine eylem listesine dahil etmez.

Bazı durumlarda, yalnızca bir derecelendirme API çağrısının sonuç eylemi bir kullanıcıya gösteriliyorsa, iş mantığınızdaki daha sonra belirlenebilir. Bu gibi durumlarda, etkin olmayan olayları kullanmanız gerekir.

Eylemler için JSON biçimi

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

JSON nesneleri, iç içe geçmiş JSON nesnelerini ve basit özellik/değerleri içerebilir. Bir dizi yalnızca dizi öğeleri sayı ise dahil edilebilir.

{
    "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 bilgileri örnekleri

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

  • Kullanıcı hakkındaki demografik ve profil bilgileri.
  • Kullanıcı Aracısı gibi HTTP başlıklarından ayıklanan veya IP adreslerine göre ters coğrafi aramalar gibi HTTP bilgilerinden türetilmiş bilgiler.
  • Geçerli saat hakkında, haftanın günü, hafta sonu veya Not, sabah veya öğleden sonra tatil sezi vb. gibi bilgiler.
  • Konum, taşıma veya pil düzeyi gibi mobil uygulamalardan ayıklanan bilgiler.
  • Bu kullanıcının en çok görüntüledikleri film tarzları gibi Kullanıcı davranışının geçmiş toplamaları.

Uygulamanız, sahip olduğunuz ilgili veritabanlarından, sensörlerden ve sistemlerden bağlam hakkındaki bilgileri yüklemekten sorumludur. Bağlam bilgileriniz değişmezse, bu bilgileri derecelendirme API 'sine göndermeden önce önbelleğe almak için uygulamanıza Logic ekleyebilirsiniz.

Bağlam için JSON biçimi

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

JSON nesneleri, iç içe geçmiş JSON nesnelerini ve basit özellik/değerleri içerebilir. Bir dizi yalnızca dizi öğeleri sayı ise dahil edilebilir.

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

Sonraki adımlar

Pekiştirmeye dayalı öğrenme