Condividi tramite


Contesto e azioni

Importante

A partire dal 20 settembre 2023 non sarà possibile creare nuove risorse di Personalizza esperienze. Il servizio Personalizza esperienze verrà ritirato il 1° ottobre 2026.

Personalizza esperienze funziona identificando i contenuti che l'applicazione dovrà mostrare agli utenti in un determinato contesto. Il contesto e le azioni sono le due informazioni più importanti passate in Personalizza esperienze. Il contesto rappresenta le informazioni disponibili sull'utente corrente o sullo stato del sistema e le azioni sono le opzioni tra cui scegliere.

Contesto

Le informazioni per il contesto variano in base all'applicazione e al caso d'uso, ma in genere possono includere, ad esempio:

  • Informazioni demografiche e sul profilo dell'utente.
  • Informazioni estratte da intestazioni HTTP, come l'agente utente, o derivate da informazioni HTTP, come le ricerche geografiche inverse basate su indirizzi IP.
  • Informazioni sulla data e l'ora correnti, ad esempio il giorno della settimana, se si tratta di giorno feriale o no, mattina o pomeriggio, periodo festivo o no e così via.
  • Informazioni estratte da applicazioni per dispositivi mobili, ad esempio posizione, movimento o livello della batteria.
  • Dati aggregati cronologici del comportamento degli utenti, ad esempio quali generi di film hanno guardato più spesso.
  • Informazioni sullo stato del sistema.

L'applicazione è responsabile del caricamento delle informazioni sul contesto dai database, dai sensori e dai sistemi pertinenti disponibili. Se le informazioni sul contesto non cambiano, è possibile aggiungere logica nell'applicazione per memorizzarle nella cache prima di inviarle all'API Classifica.

Azioni

Le azioni rappresentano un elenco di opzioni.

Quando si effettua la Classificazione di azioni, non inviare più di 50 azioni. Può trattarsi ogni volta delle stesse 50 azioni, oppure di altre. Ad esempio, se si dispone di un catalogo prodotti di 10.000 articoli per un'applicazione di e-commerce, è possibile usare una raccomandazione o motore di filtraggio per determinare i primi 40 prodotti che potrebbero piacere ai clienti e usare Personalizza esperienze per trovare quello che genererà la massima ricompensa per il contesto corrente.

Esempi di azioni

Le azioni da inviare all'API Classifica cambiano in base a quello che si prova a personalizzare.

Di seguito sono riportati alcuni esempi.

Scopo Azione
Personalizzare l'articolo da evidenziare in un sito Web di notizie. Ogni azione è un potenziale articolo di notizie.
Ottimizzare il posizionamento degli annunci in un sito Web. Ogni azione sarà costituita da un layout o da regole per creare un layout per gli annunci (ad esempio in alto, a destra, immagini piccole, immagini grandi).
Visualizzare una classifica personalizzata di articoli consigliati in un sito Web di acquisti. Ogni azione corrisponde a un prodotto specifico.
Suggerire elementi dell'interfaccia utente, come i filtri da applicare a una specifica foto. Ogni azione può essere un filtro diverso.
Scegliere la risposta di un chatbot per chiarire le finalità dell'utente o suggerire un'azione. Ogni azione corrisponde a un'opzione su come interpretare la risposta.
Scegliere la voce da visualizzare all'inizio di un elenco di risultati della ricerca Ogni azione corrisponde a uno dei primi risultati della ricerca.

Caricare azioni dall'applicazione client

Le caratteristiche delle azioni derivano in genere da sistemi di gestione di contenuti, cataloghi e sistemi di raccomandazioni. L'applicazione è responsabile del caricamento delle informazioni sulle azioni dai database e dai sistemi pertinenti disponibili. Se le azioni non cambiano o se il fatto di caricarle ogni volta influisce inutilmente sulle prestazioni, è possibile aggiungere logica nell'applicazione per memorizzare queste informazioni nella cache.

Impedire la classificazione delle azioni

In alcuni casi è possibile che non si vogliano mostrare determinate azioni agli utenti. Il modo migliore per evitare che un'azione venga classificata consiste nell'aggiungerla all'elenco Azioni escluse o non passarla alla richiesta di classificazione.

In alcuni casi, si potrebbe preferire che non sia effettuato il training su eventi per impostazione predefinita. In altre parole, si vogliono eseguire il training di eventi solo quando una condizione specifica è soddisfatta. Ad esempio, la parte personalizzata della pagina Web è sotto la piegatura (gli utenti devono scorrere la pagina per poter interagire con il contenuto personalizzato). In questo caso, si eseguirà il rendering dell'intera pagina; tuttavia, è consigliabile eseguire il training su un evento solo quando l'utente scorre la pagina e ha la possibilità di interagire con il contenuto personalizzato. In questi casi, è consigliabile Rinviare l'attivazione degli eventi per evitare di assegnare eventi di ricompensa (e training) predefiniti con cui l'utente finale non ha avuto la possibilità di interagire.

Funzionalità

Sia il contesto che le possibili azioni vengono descritte usando caratteristiche. Le caratteristiche rappresentano tutte le informazioni ritenute importanti per il processo decisionale per massimizzare le ricompense. Un buon punto di partenza consiste nell'immaginare di dover selezionare l'azione migliore a ogni timestamp e chiedersi: "Di quali informazioni ho bisogno per poter prendere una decisione informata? Quali informazioni ho a disposizione per descrivere il contesto e ogni possibile azione?" Le caratteristiche possono essere generiche o specifiche a un elemento.

Personalizza esperienze non stabilisce, limita o corregge le caratteristiche che è possibile inviare per azioni e contesto:

  • Nel corso del tempo, è possibile aggiungere e rimuovere caratteristiche su contesto e azioni. Personalizza esperienze continua ad apprendere dalle informazioni disponibili.
  • Per caratteristiche di categoria, non è necessario pre-definire i valori possibili.
  • Per caratteristiche numeriche, non è necessario pre-definire gli intervalli.
  • I nomi di caratteristiche che iniziano con un trattino basso _ verranno ignorati.
  • L'elenco delle caratteristiche può essere di grandi dimensioni (centinaia di voci), ma è consigliabile iniziare con un set di caratteristiche breve ed espanderlo in base alle esigenze.
  • Le caratteristiche di azione possono essere o meno correlate alle caratteristiche di contesto.
  • Le caratteristiche non disponibili devono essere omesse dalla richiesta. Se il valore di una caratteristica specifica non è disponibile per una determinata richiesta, omettere la caratteristica per tale richiesta.
  • Evitare di inviare caratteristiche con valore null. Un valore null verrà elaborato come stringa con di valore "null", il che è sconsigliato.

È normale che le caratteristiche cambino nel tempo. Tuttavia, tenere presente che il modello di Machine Learning di Personalizza esperienze si adatta in base alle caratteristiche visualizzate. Se si invia una richiesta contenente tutte le nuove caratteristiche, il modello di Personalizza esperienze non sarà in grado di usare eventi precedenti per selezionare l'azione più adatta a quello corrente. La presenza di un set di caratteristiche "stabile" (con caratteristiche ricorrenti) consentirà di migliorare le prestazioni degli algoritmi di Machine Learning di Personalizza esperienze.

Caratteristiche del contesto

  • Alcune caratteristiche di contesto potrebbero essere disponibili solo per parte del tempo. Ad esempio, se un utente è connesso al sito Web di un negozio di alimentari, il contesto conterrà caratteristiche che descrivono la cronologia degli acquisti. Queste caratteristiche non saranno disponibili per un utente guest.
  • Deve essere presente almeno una caratteristica di contesto. Personalizza esperienze non supporta un contesto vuoto.
  • Se le caratteristiche di contesto sono identiche per ogni richiesta, Personalizza esperienze sceglierà l'azione migliore a livello globale.

Caratteristiche delle azioni

  • Non tutte le azioni devono contenere le stesse caratteristiche. Ad esempio, nello scenario del negozio di alimentari online, i popcorn per microonde avranno una caratteristica "tempo di cottura", mentre un cetriolo non la avrà.
  • Le caratteristiche per un determinato ID azione possono essere disponibili un giorno ma diventare indisponibili in seguito.

Esempi:

Di seguito sono riportati alcuni esempi validi di caratteristiche di azione. che variano notevolmente in base a ogni applicazione.

  • Caratteristiche con attributi delle azioni. Ad esempio, si tratta di un film o di una serie TV?
  • Caratteristiche riguardanti il modo in cui gli utenti possono aver interagito con l'azione nel passato. Ad esempio, questo film è visto prevalentemente da persone che rientrano nel livello demografico A o B e non viene solitamente riprodotto più di una volta.
  • Caratteristiche che riguardano come vengono viste le azioni dall'utente. Ad esempio, il poster del film mostrato nell'anteprima include volti, automobili o panorami?

Tipi di caratteristiche supportate

Personalizza esperienze supporta caratteristiche di tipo stringa, numerico e booleano. È probabile che l'applicazione usi principalmente caratteristiche stringa, con alcune eccezioni.

Impatto dei tipi di caratteristica sul Machine Learning in Personalizza esperienze

  • Stringhe: per i tipi stringa, ogni combinazione chiave-valore (nome della caratteristica, valore della caratteristica) viene considerata come una caratteristica one-hot (ad esempio, category:"Produce" e category:"Meat" verrebbero rappresentate internamente come caratteristiche diverse nel modello di Machine Learning).
  • Numerico: usare valori numerici solo quando il numero è di una dimensione tale da influire proporzionalmente sul risultato della personalizzazione. Questo dipende largamente dallo scenario. Per caratteristiche basate su unità numeriche, ma il cui significato non è lineare (ad esempio, Età, Temperatura o Altezza della persona), la codificazione in stringhe categoriche è preferibile. Ad esempio, Età può essere codificata come "Age":"0-5", "Age":"6-10" e così via. L'altezza può essere inserita in bucket come "Height": "<5'0", "Height": "5'0-5'4", "Height": "5'5'-5’11", "Height":"6'0-6-4", "Height":">6'4".
  • Booleano
  • Matrice Sono supportate solo matrici numeriche.

Progettazione delle caratteristiche

  • Usare tipi di stringa e di categoria per le caratteristiche non di grandezza.
  • Assicurarsi il numero di caratteristiche disponibili sia sufficiente per la personalizzazione. Quanto più accuratamente mirato deve risultare il contenuto, tante più caratteristiche sono necessarie.
  • Sono disponibili caratteristiche di diverse densità. Una caratteristica si considera densa se include molti elementi raggruppati in pochi bucket. Ad esempio, è possibile classificare migliaia di video come "Lunghi" (più di 5 minuti di durata) e "Brevi" (meno di 5 minuti di durata). Questa caratteristica è molto densa. D'altra parte, le stesse migliaia di elementi possono avere un attributo "Titolo", che non avrà quasi mai lo stesso valore da un elemento a un altro. Questa caratteristica è non densa, ovvero diradata.

Con le caratteristiche ad alta densità, Personalizza esperienze è in grado di estrapolare l'apprendimento da un elemento a un altro. Ma nel caso in cui siano presenti poche caratteristiche troppo dense, Personalizza esperienze tenterà di mirare accuratamente al contenuto con pochi bucket tra cui scegliere.

Problemi comuni relativi alla progettazione e alla formattazione delle caratteristiche

  • Invio di caratteristiche con cardinalità elevata. Caratteristiche con valori univoci che probabilmente non sono ripetuti in molti eventi. Ad esempio, le informazioni personali specifiche di un singolo utente (come nome, numero di telefono, numero di carta di credito, indirizzo IP), non devono essere usate con Personalizza esperienze.
  • Invio di ID utente Con un numero elevato di utenti, è improbabile che queste informazioni siano rilevanti per Personalizza esperienze nell’imparare a ottimizzare il punteggio medio di ricompensa. L'invio di ID utente (anche se non PII) è sconsigliato, in quanto aggiungerà probabilmente ulteriore rumore al modello.
  • Invio di valori univoci che raramente si presentano più volte. È consigliabile raggruppare le caratteristiche a un livello di dettaglio superiore. Ad esempio, la presenza di caratteristiche come "Context.TimeStamp.Day":"Monday" o "Context.TimeStamp.Hour":13 può essere utile in quanto sono presenti rispettivamente solo 7 e 24 valori univoci. Tuttavia, "Context.TimeStamp":"1985-04-12T23:20:50.52Z" è molto preciso e ha un numero estremamente elevato di valori univoci, il che rende molto difficile per Personalizza esperienze apprendere da esso.

Migliorare i set di caratteristiche

Analizzare il comportamento dell'utente eseguendo un Processo di valutazione delle caratteristiche. In questo modo è possibile esaminare i dati passati per verificare quali sono le caratteristiche che contribuiscono maggiormente a ricompense positive rispetto a quelle che contribuiscono di meno. È possibile vedere quali caratteristiche risultano utili e sarà quindi necessario trovare quelle più efficaci da inviare a Personalizza esperienze per migliorare ulteriormente i risultati.

Espandere i set di funzionalità con l'intelligenza artificiale e i Servizi di Azure AI

L'intelligenza artificiale e i Servizi di Azure AI pronti per l'esecuzione possono rivelarsi particolarmente efficaci in aggiunta a Personalizza esperienze.

Pre-elaborando gli elementi con i servizi di intelligenza artificiale, è possibile estrarre automaticamente le informazioni che saranno probabilmente più pertinenti per la personalizzazione.

Ad esempio:

  • È possibile eseguire il file di un film tramite Video Indexer per estrarre elementi delle scene, testo, sentiment e molti altri attributi. Questi attributi possono quindi essere resi più densi in base a caratteristiche non presenti nei metadati degli elementi originali.
  • È possibile eseguire immagini tramite rilevamento di oggetti, visi tramite sentiment e così via.
  • Le informazioni nel testo possono essere incrementate estraendo entità e valutazione ed espandendo le entità con Knowledge Graph di Bing e così via.

È possibile usare diversi altri Servizi di Azure AI, come

Usare incorporamenti come caratteristiche

Gli incorporamenti da vari modelli di Machine Learning si sono dimostrati caratteristiche efficaci per Personalizza esperienze

  • Incorporamenti da modelli linguistici di grandi dimensioni
  • Incorporamenti da modelli di Visione di Azure AI

Namespaces (Spazi dei nomi)

Facoltativamente, le caratteristiche possono essere organizzate usando spazi dei nomi (rilevanti sia per le caratteristiche di contesto che di azione). Gli spazi dei nomi possono essere usati per raggruppare le caratteristiche in base all'argomento, all'origine o a qualsiasi altro raggruppamento appropriato nell'applicazione. È necessario stabilire se siano usati spazi dei nomi e quali debbano essere. Gli spazi dei nomi organizzano le caratteristiche in set distinti e disambiguano quelle con nomi simili. Gli spazi dei nomi possono essere considerati come un "prefisso" aggiunto ai nomi delle caratteristiche. Gli spazi dei nomi non devono essere annidati.

Di seguito sono riportati esempi di spazi dei nomi di caratteristiche usati dalle applicazioni:

  • User_Profile_from_CRM
  • Ora
  • Mobile_Device_Info
  • http_user_agent
  • VideoResolution
  • DeviceInfo
  • Meteo
  • Product_Recommendation_Ratings
  • current_time
  • NewsArticle_TextAnalytics

Convenzioni di denominazione e linee guida per lo spazio dei nomi

  • Gli spazi dei nomi non devono essere annidati.
  • Gli spazi dei nomi devono iniziare con caratteri ASCII univoci (è consigliabile usare nomi basati su UTF-8). Attualmente, la presenza di spazi dei nomi con gli stessi caratteri iniziali potrebbe comportare conflitti; pertanto, è consigliabile che gli spazi dei nomi inizino con caratteri distinti l'uno dall'altro.
  • Gli spazi dei nomi fanno distinzione tra maiuscole e minuscole. Ad esempio user e User verranno considerati spazi dei nomi diversi.
  • I nomi delle caratteristiche possono essere ripetuti tra gli spazi dei nomi e verranno considerati come caratteristiche separate
  • Non è possibile utilizzare i seguenti caratteri: codici < 32 (non stampabili), 32 (spazio), 58 (due punti), 124 (pipe) e 126-140.
  • Tutti gli spazi dei nomi che iniziano con un trattino basso _ verranno ignorati.

Esempi JSON

Azioni

Quando si effettua una chiamata all'API Classifica, si inviano più azioni tra cui scegliere:

Gli oggetti JSON possono includere oggetti JSON annidati e proprietà/valori semplici. Una matrice può essere inclusa solo se gli elementi della matrice sono numeri.

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

Contesto

Il contesto viene espresso come oggetto JSON inviato all'API Classifica:

Gli oggetti JSON possono includere oggetti JSON annidati e proprietà/valori semplici. Una matrice può essere inclusa solo se gli elementi della matrice sono numeri.

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

Namespaces (Spazi dei nomi)

Nel seguente codice JSON, user, environment, device e activity sono spazi dei nomi.

Nota

È consigliabile usare nomi per gli spazi dei nomi delle caratteristiche basati su UTF-8 e hanno iniziali diverse. Ad esempio, user, environment, device e activity iniziano con u, e, d e a. Attualmente, l'uso di spazi dei nomi con gli stessi caratteri iniziali potrebbe comportare conflitti.

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

Passaggi successivi

Apprendimento per rinforzo