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:
- Auktoritär lagring av innehåll med avancerade metadatataggar – Katalog.
- Användarinteraktion (klickar på innehåll/användning). Profilinformation för slutanvändare kan också vara tillgänglig för användning.
- Ett separat konto för Intelligent Recommendations och en modellinstans för att förstå användarintressen som presenteras som taggar.
- En komponent för att ranka innehåll baserat på anpassade taggar med en API-fråga i realtid.
När funktionen är aktiverad skapar tjänsten en modell med anpassade "taggar" för användare, baserat på:
- Historiska användarinteraktioner
- Metadatarikt innehåll med "taggar"
- 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.
- 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.
- Skapa en maskininlärd mappning av användares metadatavärden. Ett exempel finns i avsnittet "Skapa en ML-mappning av användares metadatavärden".
Program 1: Få "de mest populära objekten för dig" för kalla användare
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:
- Förbered gruppering av användare med deras metadatainformation.
- Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.csv.
- 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:
- Den ursprungliga interaktionsraden med
UserId
,ItemId
ochInteractionGroupingId
somUNIQUE_ID
. - Den ytterligare interaktionsraden med
BucketId
somItemId
.
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 |
Steg 3: Fråga efter modellen om du vill hämta API för "de mest populära objekten av användarna"
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 medUserId
läggs till. I exempletUserId
matchades den medBucketId
= 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:
- Förbereda en lista med användarmetadatavärden (taggar) och tilldela var och en av dem en unik
TagId
. - Skapa anslutningarna för modellen i datalagringsfilen Reco_Interactions.CSV.
- 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:
- Endast de nyligen skapade data kommer att användas i entiteten för interaktionsdata för modellen.
- 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.
- Det kan
InteractionGroupingId
vara bra att återanvända originalinteraktionen om den är tillgänglig. Annars kan du prova att gruppera efterUserId
. 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.
- Ursprunglig interaktionsrad: med
UserId
,ItemId
,InteractionGroupingId
. Till skillnad från exemplet ovan medBucketId
, INKLUDERA INTE den här raden i indata datauppsättning.- NY interaktionsrad: med
UserId
,TagId
somItemId
,UserId
somInteractionGroupingId
.
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 angettInteractionGroupingId
lika med.UserId
Observera också attItemId
representerarTagId
.
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