Contesto e azioni

Importante

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

Personalizza esperienze funziona imparando a visualizzare l'applicazione 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.

Non inviare più di 50 azioni quando le azioni di classificazione. Possono essere le stesse 50 azioni ogni volta o possono cambiare. Ad esempio, se si dispone di un catalogo prodotti di 10.000 articoli per un'applicazione di e-commerce, è possibile usare un motore di raccomandazione o filtro per determinare i primi 40 clienti e usare Personalizza esperienze per trovare quello che genererà la ricompensa più 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 vengono forniti 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à un layout o regole per creare un layout per gli annunci (ad esempio, in alto, a destra, piccole immagini, immagini di grandi dimensioni).
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 passandola alla richiesta di classificazione.

In alcuni casi, potrebbe non essere necessario eseguire il training degli eventi per impostazione predefinita. In altre parole, si vogliono eseguire il training degli eventi solo quando viene soddisfatta una condizione specifica. Ad esempio, la parte personalizzata della pagina Web è sotto la piega (gli utenti devono scorrere prima di interagire con il contenuto personalizzato). In questo caso si eseguirà il rendering dell'intera pagina, ma si vuole eseguire il training di un evento solo quando l'utente scorre e ha la possibilità di interagire con il contenuto personalizzato. Per 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 azioni possibili vengono descritte usando le funzionalità. Le funzionalità rappresentano tutte le informazioni che si ritiene importanti per il processo decisionale per massimizzare i premi. Un buon punto di partenza consiste nell'immaginare di dover selezionare l'azione migliore a ogni timestamp e chiedersi: "Quali informazioni devo prendere una decisione informata? Quali informazioni sono disponibili per descrivere il contesto e ogni possibile azione?" Le funzionalità possono essere generiche o specifiche di un elemento.

Personalizza esperienze non prevede, limita o corregge le funzionalità 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 le funzionalità categoriche, non è necessario pre-definire i valori possibili.
  • Per le funzionalità numeriche, non è necessario pre-definire gli intervalli.
  • I nomi delle funzionalità che iniziano con un carattere di sottolineatura _ verranno ignorati.
  • L'elenco delle funzionalità può essere di grandi dimensioni (centinaia), ma è consigliabile iniziare con un set di funzionalità conciso ed espandersi in base alle esigenze.
  • le funzionalità di azione possono avere o meno alcuna correlazione con le funzionalità del contesto .
  • Le funzionalità non disponibili devono essere omesse dalla richiesta. Se il valore di una funzionalità specifica non è disponibile per una determinata richiesta, omettere la funzionalità per questa richiesta.
  • Evitare di inviare funzionalità con un valore Null. Un valore Null verrà elaborato come stringa con un valore "null" indesiderato.

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

Caratteristiche del contesto

  • Alcune funzionalità di contesto possono essere disponibili solo parte del tempo. Ad esempio, se un utente è connesso al sito Web del negozio di alimentari online, il contesto conterrà funzionalità che descrivono la cronologia degli acquisti. Queste funzionalità non saranno disponibili per un utente guest.
  • Deve essere presente almeno una funzionalità di contesto. Personalizza esperienze non supporta un contesto vuoto.
  • Se le funzionalità del 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 funzionalità. Ad esempio, nello scenario del negozio di alimentari online, il popcorn microwavable avrà una funzionalità "tempo di cottura", mentre un cetriolo non lo farà.
  • Le caratteristiche per un determinato ID azione possono essere disponibili un giorno ma diventare indisponibili in seguito.

Esempi:

Di seguito sono riportati esempi validi per le funzionalità 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 viene visto principalmente dalle persone nei dati demografici A o B, in genere viene riprodotto non 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 funzionalità di stringa, con alcune eccezioni.

Impatto dei tipi di funzionalità su Machine Learning in Personalizza esperienze

  • Stringhe: per i tipi stringa, ogni combinazione chiave-valore (nome della funzionalità, valore della funzionalità) viene considerata come una funzionalità one-hot (ad esempio, category:"Produce" e category:"Meat" verrebbe rappresentata internamente come funzionalità diverse nel modello di Machine Learning).
  • Numerico: usare valori numerici solo quando il numero è una grandezza che dovrebbe influire proporzionalmente sul risultato della personalizzazione. Questo è molto dipendente dallo scenario. Le funzionalità basate su unità numeriche, ma dove il significato non è lineare, ad esempio Età, Temperatura o Altezza persona, sono codificate meglio come stringhe categoriche. Ad esempio, Age può essere codificato 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'11", "Height":"6'0-6-4", "Height":">6'4".
  • Boolean
  • Sono supportate solo matrici numeriche.

Progettazione delle caratteristiche

  • Usare tipi di stringa e categorici per le caratteristiche che non sono di grandezza.
  • Assicurarsi che siano presenti funzionalità sufficienti per favorire la personalizzazione. Quanto più accuratamente mirato deve risultare il contenuto, tante più caratteristiche sono necessarie.
  • Ci sono caratteristiche di densità diverse. 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.

La presenza di funzionalità ad alta densità consente a Personalizza esperienze di estrapolare l'apprendimento da un elemento a un altro. Tuttavia, se ci sono solo alcune funzionalità e sono troppo dense, Personalizza esperienze tenterà di specificare il contenuto di destinazione con solo pochi bucket tra cui scegliere.

Problemi comuni relativi alla progettazione e alla formattazione delle funzionalità

  • Invio di funzionalità con cardinalità elevata. Funzionalità con valori univoci che probabilmente non vengono ripetuti in molti eventi. Ad esempio, le informazioni personali specifiche di un singolo utente , ad esempio 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 l'apprendimento di Personalizza esperienze per ottimizzare il punteggio medio di ricompensa. L'invio di ID utente (anche se non PII) aggiungerà probabilmente più rumore al modello e non è consigliato.
  • Invio di valori univoci che raramente si verificano più volte. È consigliabile raggruppare le funzionalità in un livello di dettaglio superiore. Ad esempio, la presenza di caratteristiche come "Context.TimeStamp.Day":"Monday" o "Context.TimeStamp.Hour":13 può essere utile perché sono presenti solo 7 e 24 valori univoci, rispettivamente. Tuttavia, "Context.TimeStamp":"1985-04-12T23:20:50.52Z" è molto preciso e ha un numero estremamente elevato di valori univoci, che rende molto difficile per Personalizza esperienze imparare da esso.

Migliorare i set di caratteristiche

Analizzare il comportamento dell'utente eseguendo un processo di valutazione delle funzionalità. 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 intelligenza artificiale e servizi di intelligenza artificiale di Azure

L'intelligenza artificiale e i servizi di intelligenza artificiale di Azure pronti per l'esecuzione possono essere un'aggiunta molto potente 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 aumentate estraendo entità, sentiment ed espandendo le entità con il grafico delle conoscenze Bing.

È possibile usare diversi altri servizi di intelligenza artificiale di Azure, ad esempio

Usare gli incorporamenti come funzionalità

Gli incorporamenti da vari modelli di Machine Learning hanno dimostrato di essere funzionalità influenzate per Personalizza esperienze

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

Namespaces (Spazi dei nomi)

Facoltativamente, le funzionalità possono essere organizzate usando spazi dei nomi (rilevanti sia per le funzionalità di contesto che di azione). Gli spazi dei nomi possono essere usati per raggruppare le funzionalità in base all'argomento, all'origine o a qualsiasi altro raggruppamento appropriato nell'applicazione. Si determina se vengono usati spazi dei nomi e cosa devono essere. Gli spazi dei nomi organizzano le funzionalità in set distinti e disambiguano le funzionalità con nomi simili. È possibile considerare gli spazi dei nomi come un "prefisso" aggiunto ai nomi delle funzionalità. 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
  • Time
  • 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 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 funzionalità possono essere ripetuti tra gli spazi dei nomi e verranno considerati come funzionalità separate
  • Non è possibile utilizzare i caratteri seguenti: codici < 32 (non stampabili), 32 (spazio), 58 (due punti), 124 (pipe) e 126-140.
  • Tutti gli spazi dei nomi che iniziano con un carattere di sottolineatura _ 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 codice JSON seguente, user, environment, devicee activity sono spazi dei nomi.

Nota

È consigliabile usare nomi per gli spazi dei nomi delle funzionalità basati su UTF-8 e iniziare con lettere diverse. Ad esempio, user, environment, devicee activity iniziano con u, ed, e a. Attualmente l'uso di spazi dei nomi con gli stessi caratteri 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