Dela via


Metadatataggning och användargruppering

Intelligent Recommendations kan användas för att förbättra den relevanta anpassningen för slutanvändare, även om de är anonyma. Kunderna kan integrera en anpassad upplevelse av metadatataggning för lagring av metadata. Detta sker genom att identifiera metadatataggar för innehåll (som skriftliga artiklar, poddsändningar, videor, återförsäljningsprodukter osv.) och rekommenderar liknande taggar eller innehåll baserat på användarens önskemål. Användarmetadata kan vara kraftfulla för att rekommendera relevant innehåll till alla användare, inklusive:

  • Nya eller sällsynta kunder (kallas även kalla användare).
  • Ansluta användare till andra användare baserat på unik metadatataggning.
  • Koppla användare till relevant innehåll och kort lead-tidsinnehåll.

När metadatataggning är aktiverat kan användare skapa nya rekommendationer, till exempel:

  • Metadatakategorier som vi valde åt dig
  • Andra tittar också på kategorierna
  • Senaste händelser baserat på din senaste aktivitet
  • Liknande produkter/innehåll som bygger på metadatataggar som liknar varandra
  • Tips för dig baserat på användarbeteenden

Vad är en tagg?

Taggar är en beskrivning för något av intresse i objekten/innehållet, som användare tar till sig och som måste vara specifika för slutanvändaren. T.ex. i filmvärlden kan genre, skådespelare, humör, etc. alla betraktas som taggar för en film, liksom något som slutanvändare har en speciell förkärlek/ogillar för. Taggar kan till och med innehålla artiklar och användare, artikeltitlar, produktkategorier, händelser och andra innehållsterminologier. Målet är att säkerställa att slutanvändarna rekommenderas relevant innehåll som passar deras intressen/inställningar utifrån tillgängliga metadata.

Arkitekturöversikt

För att konfigurera metadatataggning som visas i arkitekturdiagrammet är förutsättningarna följande:

  1. Auktoritär lagring av innehåll med avancerade metadatataggar – Katalog.
  2. Användarinteraktion (klickar på innehåll/användning). Profilinformation för slutanvändare kan också vara tillgänglig för användning.
  3. Ett separat konto för Intelligent Recommendations och en modellinstans för att förstå användarintressen som presenteras som taggar.
  4. En komponent för att ranka innehåll baserat på anpassade taggar med en API-fråga i realtid.

Den här bilden visar arkitekturens översikt över hur du konfigurerar metadatataggning på ett separat konto för Intelligent Recommendations.

När funktionen är aktiverad skapar tjänsten en modell med anpassade "taggar" för användare, baserat på:

  1. Historiska användarinteraktioner
  2. Metadatarikt innehåll med "taggar"
    1. Det förutsätts att taggarna inte används (inga stavningsfel och att taggarna är en förutbestämd, standardiserad tagguppsättning från experter och inte slumpmässigt skapade eller bifogade).

Konfigurera datakontrakt

Om du vill konfigurera ett datakontrakt för att stödja metadatataggning gör du följande: Notera ändringarna mellan ItemId TagId och InteractionGroupingId.

I avsnittet Programavsnittet, du ser exempel på hur införandet av en TagID eller BucketId ändrar konfigurationen av Datakontraktet. Vi föreslår att du har en separat Intelligent Recommendations-konto- och modellinstans när du testar metadatataggning.

IR-kapacitetsnamn KATALOG
Dataentitet
KATALOG
Dataentitetsfält
INTERAKTIONER
Dataentitet
INTERAKTIONER
Dataentitetsfält
(Krävs för alla svar) Reco_ItemsAndVariants ItemId som TagId
Title
Filtreringsmöjlighet
(Gäller till alla listor)
Reco_ItemCategories ItemCategories: ItemId (eller TagId), kategori
Personer visar också Reco_Interactions InteractionGroupingId som UserId
ItemId som TagId
UserId
InteractionType: Köp == visade
Tidsstämpel
Val för dig Reco_Interactions (Som föregående)

Tillämpningar och exempel

Följande avsnitt går igenom två vanliga användningsfall som har nytta av metadatataggning och ger några exempel med demodata för varje.

  1. Att få "de mest populära objekten för dig" för kalla användare. Ett exempel finns i avsnittet Hämta mest populära objekt åt dig för kalla användare.
  2. Skapa en maskininlärd mappning av användares metadatavärden. Ett exempel finns i avsnittet "Skapa en ML-mappning av användares metadatavärden".

Ett vanligt problem i AI-ML-världen är hur du ger relevanta rekommendationer till nya eller sällsynta kunder(kallas även kalla användare). Som tidigare nämnts är syftet här att skapa olika alternativ utifrån meningsfulla kategorier och tillgänglig demografisk information (d.v.s. Ålder och Kön). Använd sedan alla interaktioner för att koppla alla användare till deras motsvarande demografiska element, vilket i sin tur gör att elementen kan kopplas till objekt under modellutbildningsfasen. Under serveringsfasen kan en kall användares demografiska bucket tilldelas och sedan användas för att rekommendera artiklar, till exempel "mest populära artiklar per användargrupp".

Stegen är följande:

  1. Förbered gruppering av användare med deras metadatainformation.
  2. Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.csv.
  3. Fråga efter modellen om du vill hämta API för "de mest populära objekten av användarna".

Steg 1: Förbered gruppering av användare med deras metadatainformation

Här följer några metodtips för hur du skapar affärsmetoder:

  • Metadata för användare kan representeras som omfångsintervall. Överväg att använda metadata som är meningsfulla för affärsdomänen och använda ärende. Om du till exempel vill skapa en beskrivning av åldersdata kan du använda följande värden: Age5To11, Age30To40, etc.
  • Vissa användarmetadata kan till och med slås ihop i delar. Överväg att använda metadata och kombinationer som är logiska för affärsdomänen och använda ärende. Du kan till exempel kombinera både ålders- och könsdata för att skapa sådana här segment: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female, etc.
  • När bucket har skapats måste du tilldela varje bucket en unik BucketId.

Steg 2: Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.csv

Beroende på hur många fel som är över eller under 1 000 kan det hända att data konfigureras i datakontraktet.

Om det finns MINDRE än 1 000 platser

För varje interaktionsrad anger du den ChannelId till BucketId som motsvarar användaren (eller passar bäst). Interaktions-CSV-raden ändras till: InteractionGroupingID, ItemId, UserId och BucketId som ChannelId. Ett exempel på avsnittet Interaktioner CSV som följer:

Exempel på CSV på MINDRE än 1 000 provexemplar

Interaktioner CSV rubrik visas endast för enkelhetens skull och bör inte vara en del av faktiska data.

InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
InteractionGroupingID ItemId UserId BucketId
Om det finns MER än 1 000 platser

Om det finns mer än 1 000 datarader skapar du fler interaktionsrader med hjälp av BucketId. Förvandla varje original interaktionsrad mellan en användare och ett objekt två nya olika rader med en unik InteractionGroupingId som bara är unik för dessa två rader. Exemplet visar:

  1. Den ursprungliga interaktionsraden med UserId,ItemId och InteractionGroupingId som UNIQUE_ID.
  2. Den ytterligare interaktionsraden med BucketId som ItemId.
Exempel på CSV på MINDRE än 1 000 provexemplar:

Interaktioner CSV rubrik visas endast för enkelhetens skull och bör inte vara en del av faktiska data.

InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
UNIQUE_ID ItemId UserId
UNIQUE_ID BucketId UserId

Ta hänsyn till modellkonstruktionen som diskuterats tidigare. Efter att en Kall användare och deras demografiska bucket har fastställts, fråga efter Serverande slutpunkt med hjälp av listtypen "Nästa bästa åtgärd" (tidigare CART) med demografiskt fokus BucketId och rekommendera de mest populära objekten för den bucket.

Om det finns MINDRE än 1 000 platser

En exempellänk till API-fråga där parametern för ChannelId ersätts med BucketId värdet, som ser ut så här:

<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Exempel 1: Mindre än 1 000 buckets

Anta en användare med UserId=100 med en anpassad tilldelad BucketId=Age30To40, som nyligen köpte ett objekt med ItemId=98005. I det här exemplet skapas en rad i filen “Reco_Interactions.csv” som använder BucketId (i fältet ChannelId på IR-schema) som bäst överensstämmer med användaren (representerad av UserId i IR-schema):

  • Originalinformation om interaktion är: InteractionGroupingId=1, UserId=100, ItemId=98005
  • Observera i CSV-exemplet att relevant ChannelId, som bäst överensstämmer med UserId läggs till. I exempletUserId matchades den med BucketId= Age30To40, så den ändrade interaktionsraden är:
InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
1 98005 100 Age30To40
  • API-frågan och svaret returnerar en lista med ItemIds, inklusive ItemId=43218 på den tredje positionen, vilket är en populär post för användare av den här kategorin.
API-fråga
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Popular",
    "longTitle": "Popular",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}
Om det finns MER än 1 000 platser

En exempellänk till API-fråga där ItemId ersätts med BucketId för kall användare, som ser ut så här:

<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Exempel 2: Mer än 1 000 buckets

Anta en användare med UserId=100 med en anpassad tilldelad BucketId=Age30To40Female, som nyligen köpte ett objekt med ItemId=98005. Nu kan du använda den ursprungliga interaktionsdata och konstruera rader i “Reco_Interactions.csv”-filen:

  • Originalinformation om interaktion är: InteractionGroupingId= NEW_UNIQUE_ID, UserId=100, ItemId=98005
  • De två raderna med konstruerad interaktionsinformation som ska finnas i filen Reco_Interactions.csv som läses av tjänsten Intelligent Recommendations:
InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
UNIQUE_ID 98005 100
UNIQUE_ID Age30To40Female 100
  • API-frågan och svaret returnerar en lista med ItemIds, inklusive ItemId=43218 på den tredje positionen, vilket är en populär produkt för användare av den här kategorin.
API-fråga
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female? 
Response
{
    "id": "Lists",
    "name": "Lists",
    "version": "v1.0",
    "interactionsVersion": "20220104115104",
    "items": [
        {
            "id": "65106",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62604",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "43218",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "63503",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62452",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Cart",
    "longTitle": "FrequentlyBoughtTogether",
    "titleId": 5,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Program 2: Skapa en ML-mappning av användares metadatavärden

Modellering av användarmetadata "Taggar" i stället för direkta användarinteraktioner kan vara en kraftfull ändring när målet är att skapa ett resultat, som visar hur anslutna användare är med dessa taggar och vilka taggar som verkligen liknar dem genom beteende. Tilldela varje meningsfull och tillgänglig tagg (t.ex. demografisk information som Ålder och Kön, eller andra metadata) en unik identifierare, som tjänsten refererar till som TagId. Under modellutbildningsfasen används alla interaktionsdata för att skapa en anslutning mellan användar-ID och Tagg-ID.

Under serveringsfasen kan systemet tillhandahålla en anpassad lista med taggar genom att ringa "Val för dig" med UserId och liknande taggar genom att anropa "Andra gillar också" med TagId.

Så här använder du TagIds för rekommendationer:

  1. Förbereda en lista med användarmetadatavärden (taggar) och tilldela var och en av dem en unik TagId.
  2. Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.CSV.
  3. Fråga efter modellen om du vill hämta API för "anpassade taggar efter användare" eller "liknande taggar".

Steg 1: Förbereda en lista med användarmetadatavärden (taggar) och tilldela var och en av dem en unik TagId

När man konstruerar värden för åldersdata är gruppering fortfarande ett bra tillvägagångssätt: Age5To11, Age12To18, etc.

För andra metadatavärden skapar du ett separat Tagg-ID för varje. Till exempel om vi vill ha en kategori för Familjestatus: Single, Couple, CoupleWithKids, etc.

Steg 2: Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.CSV

Använd varje ursprunglig interaktion mellan en användare och ett objekt om du vill skapa en rad med interaktionsdata med TagId. [!OBS!]

Några viktiga påminnelser med den här metoden:

  1. Endast de nyligen skapade data kommer att användas i entiteten för interaktionsdata för modellen.
  2. Att skapa en interaktionsrad som kopplar användare till Tagg-ID behöver inte grundas på en interaktion. Det här är ett exempel på hur du kan skapa en interaktion för att ansluta användare till taggar i modellen.
  3. Det kan InteractionGroupingId vara bra att återanvända originalinteraktionen om den är tillgänglig. Annars kan du prova att gruppera efter UserId. Under modellutbildningsfasen används alla interaktionsdata för att skapa en anslutning mellan olika TagIds och UserIDs och TagIds. Vi försöker gruppera olika sätt och sedan se vilka resultat som ger bättre relevanta resultat eftersom olika scenarier och användningsmönster kan skilja sig.
    1. Ursprunglig interaktionsrad: med UserId, ItemId, InteractionGroupingId. Till skillnad från exemplet ovan med BucketId, INKLUDERA INTE den här raden i indata datauppsättning.
    2. NY interaktionsrad: med UserId, TagId som ItemId, UserId som InteractionGroupingId.

Ett exempel på datakontrakt ser ut så här:

InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
UserId TagId UserId

Steg 3: Fråga efter modellen om du vill hämta anpassade taggar efter användare eller liknande taggar

Med en noggrann modellkonstruktion ger en fråga efter serveringsslutpunkten med listtyperna "Val för dig" och "Personer gillar också" de önskade resultaten.

En "Val för dig" API-fråga, som returnerar de rekommenderade TagIds för en given UserId ser ut så här:

<serving-endpoint>Reco/v1.0/picks?userId=<UserId>

En "Andra gillar också"-API-fråga där parametern för objekttyp ersätts med motsvarande TagId:

<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Utdatatyper för exempel
{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "68100",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "62500",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61504",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "65103",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "61401",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Exempel 3: Fråga för tagg-ID med demodata

Anta att en användare med UserId=100, har angett att de är justerade med följande taggar: 123 (som representerar “fotbollsfantast”), Age30To40Female och FamilyWithKids.

Du kan använda den ursprungliga interaktionsraden för att skapa följande rader i filen "Reco_Interactions.csv": Nya tre rader med interaktionsinformation, en för varje tagg för användaren, som ska finnas i filen "Reco_Interactions.csv" som läses av tjänsten Intelligent Recommendations:

![Anteckning]

I det här exemplet har vi valt att gruppera efter UserId och har angett InteractionGroupingId lika med. UserId Observera också att ItemId representerar TagId.

InteractionGroupingId ItemId ItemVariantId AnvändarID InteractionType Tidsstämpel Future Attribute Future Attribute Kanal Katalog Styrka IsPositive
100 123 100
100 Age30To40Female 100
100 FamilyWithKids 100
Fråga och svar för välj

Så här ser den konstruerade förfrågan "Val för dig" ut:

GET <serving-endpoint>/reco/v1.0/picks?UserId=100

Plocksvaret returnerar en lista med 200 ItemIds (för taggar), inklusive TagID=FamilyWithKids på första positionen.

{
    "id": "Picks",
    "name": "Picks",
    "version": "v1.0",
    "items": [
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "625",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "Sports",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "611",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "Picks for you",
    "longTitle": "Picks for you",
    "titleId": 6,
    "personalizationConfidence": 1.0,
    "pagingInfo": {
        "totalItems": 139
    },
    "status": "Success"
}

Fråga och svar på liknande

Så här ser den uppbyggda "Andra gillar också"-förfrågan ut med ett liknande API:

GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?

Svaret "Människor gillar också" returnerar en lista med 200 ItemIds (för taggar) inklusive, Age30To40Female på första positionen FamilyWithKids på den andra positionen.


{
    "id": "Similar",
    "name": "Similar",
    "version": "v1.0",
    "items": [
        {
            "id": "Age30To40Female",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "FamilyWithKids",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "SportsParent",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "651",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        },
        {
            "id": "123",
            "trackingId": "00000000-0000-0000-0000-000000000003"
        }
    ],
    "title": "People also like",
    "longTitle": "People also like",
    "titleId": 6,
    "pagingInfo": {
        "totalItems": 200
    },
    "status": "Success"
}

Om du vill lära dig mer om vår tjänst och de modeller vi har stöd för kan du läsa vår Modellguide.

Se även

Snabbstartsguide: Skapa ett IR-konto
Frågor och svar om modellering
Dataavtalsguide
Exempel på API-begäranden