Mærkning af metadata og brugerinddeling
Intelligent Recommendations kan bruges til at forbedre relevant tilpasning for slutbrugere, også selvom de er anonyme. Kunder kan integrere en tilpasset metadatamærkningsoplevelse for deres butiksfacade. Denne oplevelse opnås ved hjælp af muligheden for at identificere metadatatags for indhold (f.eks. skrevne artikler, podcasts, videoer, detailprodukter osv.) og anbefale lignende tags eller indhold baseret på den pågældende brugers smag/præferencer. Brugermetadata kan være effektive i forhold til at anbefale relevant indhold til alle brugere, herunder:
- Nye eller sjældne kunder (også kaldet "kolde brugere").
- Oprettelse af forbindelse mellem brugere baseret på entydig mærkning af metadata.
- Oprettelse af forbindelse mellem brugere og både relevant indhold og indhold med kort gennemløbstid.
Når mærkning af metadata er aktiveret, kan brugere oprette nye anbefalingsscenarier som:
- Metadatakategorier, vi har udvalgt til dig
- Andre personer kigger også på disse kategorier
- Seneste hændelser baseret på din seneste aktivitet
- Lignende produkter/indhold på baggrund af deres tilskrevne metadatatags
- Udvalgt for dig baseret på brugerfunktionsmåder
Hvad er et tag?
Tags er en beskrivelse af noget af interesse inden for varerne/indholdet, som brugerne bliver tiltrukket af, og som skal være specifikt for slutbrugerens aktivitet. Inden for filmverdenen kan genren, skuespillerne, stemningen osv. f.eks. alle sammen betragtes som tags for en film – samt ting, som slutbrugerne synes særligt godt om eller ikke bryder sig om. Tags kan endda inkludere kendisspillere/-brugere, artikeltitler, genre, produktkategorier, hændelser og anden indholdsteminologi. Målet er at sikre, at slutbrugerne får anbefalet relevant indhold, der passer til deres interesser/smag/præferencer, baseret på tilgængelige metadata.
Oversigt over arkitektur
Hvis du vil konfigurere metadatatagging som vist i arkitekturdiagrammet, er forudsætningerne følgende:
- Autoritativt lager til indhold med avancerede metadatatags – katalog.
- Brugerinteraktioner (klik på indhold/forbrug). Oplysninger om slutbrugerprofilen kan også være tilgængelige til brug.
- En separat forekomst af kontoen til Intelligent Recommendations og modelleringsforekomsten for at forstå brugernes interesser, der præsenteres som tags.
- En komponent, der rangordner indhold baseret på tilpassede tags med en API-anmodning i realtid.
Når tjenesten er aktiveret, oprettes der en model med tilpassede "tags" for brugere baseret på:
- Historiske brugerinteraktioner
- Metadatabaseret indhold med "tags"
- Det antages her, at taggene er renset (ingen stavefejl, og taggene er et forudbestemt, rationaliseret sæt fra eksperter og ikke tilfældigt oprettet eller tilknyttet).
Konfiguration af datakontrakt
Hvis du vil konfigurere en datakontrakt til understøttelse af mærkning af metadata, skal du gøre følgende: Notér ændringerne mellem ItemId
, TagId
og InteractionGroupingId
.
I sektionen Programmer kan du se eksempler på, hvordan introduktionen af et TagID
eller BucketId
ændrer konfigurationen af datakontrakten. Vi anbefaler, at der oprettes en separat konto til Intelligent Recommendations og en modelleringsforekomst, når mærkning af metadata testes.
Navn på IR-funktion | KATALOG Dataobjekt |
KATALOG Dataenhedsfelter |
INTERAKTIONER Dataobjekt |
INTERAKTIONER Dataenhedsfelter |
---|---|---|---|---|
(Kræves for alle svar) | Reco_ItemsAndVariants |
ItemId som TagId Title |
||
Filtreringsmulighed (Gælder for alle lister) |
Reco_ItemCategories | ItemCategories: ItemId (eller TagId ), kategori |
||
Andre kigger også på | Reco_Interactions |
InteractionGroupingId som UserId ItemId som TagId UserId InteractionType: Køb == vist Tidsstempel |
||
Udvalgt til dig | Reco_Interactions | (Samme som foregående) |
Anvendelsesformål og eksempler
Følgende afsnit gennemgår to almindelige brugsscenarier, der drager fordel af mærkning af metadata, og de indeholder eksempler med demodata for hver af dem.
- Sådan opretter du "de mest populære varer til dig" til kolde brugere. Hvis du vil se et eksempel, skal du se afsnittet med titlen "Hent de mest populære varer til dig til kolde brugere".
- Sådan opretter du et maskinoplært kort over brugernes metadataværdier. Hvis du vil se et eksempel, skal du se afsnittet med titlen "Opret et ML-kort over brugernes metadataværdier".
Anvendelsesformål 1: Få de "mest populære varer til dig" til kolde brugere
Et almindeligt problem inden for AIML er, hvordan du kan komme med relevante anbefalinger til brugere, som er nye eller sjældne kunder (også kaldet "kolde brugere"). Som tidligere nævnt er formålet her at skabe nogle særlige buckets, der er baseret på meningsfulde kategorier og tilgængelige demografiske oplysninger (dvs. alder og køn). Brug derefter alle interaktioner til at knytte alle brugere til deres tilsvarende demografiske visninger, hvilket igen gør det muligt for visningerne at blive knyttet til varer i modeloplæringsfasen. I serviceringsfasen kan en Kold brugers demografiske bucket tildeles og derefter bruges til at anbefale varer, f.eks. "mest populære varer efter brugerbucket".
Trinnene er som følger:
- Forbered en visning af brugere med deres metadataoplysninger.
- Opret forbindelser til modellen i datalagerfilen "Reco_Interactions.csv".
- Forespørg på modellen for at få API'en "de mest populære varer efter brugervisning".
Trin 1: Forbered en visning af brugerne med deres metadataoplysninger
Der er et par bedste fremgangsmåder, når du opretter dine visninger:
- Brugermetadata kan repræsenteres som intervalopdelte visninger. Overvej at bruge de metadata, der giver mening for dit forretningsdomæne og din use case. Hvis du f.eks. vil oprette en visning for aldersdata, kan du bruge følgende værdier: Age5To11, Age30To40 osv.
- Nogle brugermetadata kan endda kombineres i visninger sammen. Overvej at bruge de metadata og kombinationer, der giver mening for dit forretningsdomæne og din use case. Du kan f.eks. kombinere data for både alder og køn for at oprette visninger som denne: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female osv.
- Når buckets er oprettet, skal du tildele hver enkelt bucket et entydigt
BucketId
.
Trin 2: Opret forbindelser til modellen i datalagerfilen "Reco_Interactions.csv"
Afhængigt af, om antallet af visninger er over eller under 1.000, kan den måde, data konfigureres på i datakontrakten, ændre sig.
Hvis der er UNDER 1.000 visninger
For hver interaktionsrække skal du angive ChannelId
til det BucketId
, der svarer til (eller bedst passer til) brugeren. Interaktions-CSV-rækken ændres til: InteractionGroupingID
, ItemId
UserId
og BucketId
som ChannelId
. Et eksempel på CSV-filen med interaktioner vises nedenfor:
Eksempel på CSV til UNDER 1000 visninger
Overskrifter i CSV-filen for interaktioner vises kun for nemheds skyld og bør ikke være en del af de faktiske data.
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
InteractionGroupingID |
ItemId |
UserId |
BucketId |
Hvis der er OVER 1.000 visninger
Hvis der er mere end 1000 databuckets, kan du oprette flere interaktionsrækker ved hjælp af BucketId
.
De enkelte oprindelige interaktionsrækker mellem en bruger og en vare skal omdannes til to nye separate rækker med en entydig InteractionGroupingId
, der kun er entydig for disse to rækker. Eksemplet viser:
- Den oprindelige interaktionsrække, der bruger
UserId
,ItemId
ogInteractionGroupingId
somUNIQUE_ID
. - Den ekstra interaktionsrække med
BucketId
somItemId
.
Eksempel på CSV til OVER 1000 visninger:
Overskrifter i CSV-filen for interaktioner vises kun for nemheds skyld og bør ikke være en del af de faktiske data.
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
ItemId |
UserId |
|||||||||
UNIQUE_ID |
BucketId |
UserId |
Trin 3: Forespørg på modellen for at få API'en "de mest populære varer efter brugervisning"
Tag højde for den modelopbygningsstruktur, der blev beskrevet tidligere. Når en kold bruger og brugerens demografiske bucket er blevet fastsat, kan du forespørge på leveringsslutpunktet ved hjælp af listetypen "Næste bedste handling" (tidligere INDKØBSVOGN) med det demografisk fokuserede BucketId
for at anbefale de mest populære varer til den pågældende bucket.
Når der er UNDER 1.000 visninger
Et link til en API-forespørgsel, hvor parameteren for ChannelId
erstattes af BucketId
-værdien, ser således ud:
<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Eksempel 1: Under 1000 visninger
Forestil dig en bruger med UserId
=100 og en brugerdefineret tildelt BucketId
=Age30To40, der for nylig har købt en vare med ItemId
=98005.
I dette eksempel oprettes der en række i filen "Reco_Interactions.csv", som bruger et BucketId
(i feltet ChannelId
i IR-skemaet), som passer bedst til brugeren (repræsenteret ved UserId
i IR-skemaet):
- De oprindelige interaktionsoplysninger er:
InteractionGroupingId
=1,UserId
=100,ItemId
=98005 - Bemærk i CSV-eksemplet, at det relevante
ChannelId
, der svarer bedst tilUserId
, er vedhæftet. I eksemplet blevUserId
matchet medBucketId
= Age30To40, så den ændrede interaktionsrække er:
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | 98005 | 100 | Age30To40 |
- API-forespørgslen og -svaret returnerer en liste over ItemIds, herunder
ItemId
=43218 på tredje placering, som er en populær vare for brugere i denne kategori.
API-forespørgsel
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
Respons
{
"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"
}
Når der er OVER 1.000 visninger
Et link til en API-forespørgsel, hvor parameteren for ItemId
erstattes af BucketId
for en kold bruger, ser således ud:
<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Eksempel 2: Over 1.000 visninger
Forestil dig en bruger med UserId
=100 og en brugerdefineret tildelt BucketId
=Age30To40Female, der for nylig har købt en vare med ItemId
=98005.
Nu kan du bruge de oprindelige interaktionsdata og oprette rækker i filen "Reco_Interactions.csv":
- De oprindelige interaktionsoplysninger er:
InteractionGroupingId
= NEW_UNIQUE_ID,UserId
=100,ItemId
=98005 - De to rækker med oprettede interaktionsoplysninger, der skal være i filen "Reco_Interactions.csv", som læses af tjenesten Intelligent Recommendations:
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UNIQUE_ID |
98005 |
100 |
|||||||||
UNIQUE_ID |
Age30To40Female |
100 |
- API-forespørgslen og -svaret returnerer en liste over ItemIds, herunder
ItemId
=43218 på tredje placering, som er et populært produkt for brugere i denne kategori.
API-forespørgsel
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female?
Respons
{
"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"
}
Anveldesesformål 2: Opret et ML-kort over brugernes metadataværdier
Modellering af "tags" til brugermetadata i stedet for direkte brugerinteraktioner kan give en markant ændring, når målet er at skabe et resultat, som viser, hvor forbundne brugerne er med disse tags, og hvilke tags der i virkeligheden ligner hinanden målt på adfærd. Giv hvert enkelt meningsfuldt og tilgængeligt tag (f.eks. demografi som alder og køn eller andre metadata) et entydigt id, som tjenesten henviser til som TagId
. I modeloplæringsfasen bruges alle interaktionsdata til at oprette forbindelse mellem UserId'er og TagId'er.
I leveringsfasen kan systemet vise en tilpasset liste over tags ved at kalde "Udvalgt til dig" med UserId
og lignende tags ved at kalde "Andre synes også godt om" med TagId
.
Sådan bruger du TagId'er til anbefalinger:
- Udarbejd en liste over brugermetadataværdier (tags), og tildel hver enkelt af dem et entydigt
TagId
. - Opret forbindelser til modellen i datalagerfilen Reco_Interactions.CSV.
- Forespørg på modellen for at få API for "tilpassede tags efter bruger" eller "lignende tags".
Trin 1: Udarbejd en liste over brugermetadataværdier (tags), og tildel hver enkelt af dem et entydigt TagId
Når der oprettes værdier for aldersdata, er visning stadig en god fremgangsmåde: Age5To11, Age12To18 osv.
I forbindelse med andre metadataværdier skal du oprette et separat TagId for hver af dem. Hvis vi f.eks. vil have en kategori for familiestatus: : Single, Couple, CoupleWithKids osv.
Trin 2: Opret forbindelser til modellen i datalagerfilen Reco_Interactions.CSV
Brug hver enkelt original interaktion mellem en bruger og en vare til at oprette en række interaktionsdata med TagId
.
[Bemærk:]
Nogle vigtige påmindelser med denne fremgangsmåde:
- Det er kun de nyoprettede data, der bruges i interaktionsdataobjektet for modellen.
- Oprettelsen af en interaktionsrække, der opretter forbindelse mellem brugere og TagId'er, behøver ikke nødvendigvis at være baseret på en interaktion. Dette er et eksempel, der illustrerer, hvordan du kan oprette en interaktion for at knytte brugere til tags i modellen.
- For
InteractionGroupingId
kan det være en god ide at genbruge den oprindelige interaktion, hvis den er tilgængelig. Ellers kan du prøve at gruppere efterUserId
. I modeloplæringsfasen bruges alle interaktionsdata til at oprette forbindelse mellem de forskellige TagId'er og mellem UserId'er og TagId'er. Vores forslag er at forsøge med forskellige fremgangsmåder til at gruppere og derefter se, hvilke der giver de bedste relevante resultater, da forskellige scenarier og forbrugsmønstre kan være forskellige.
- Oprindelig interaktionsrække: Med
UserId
,ItemId
,InteractionGroupingId
. I modsætning til eksemplet ovenfor medBucketId
skal du IKKE INKLUDERE denne række i inputdatasættet.- NY interaktionsrække: Med
UserId
,TagId
somItemId
,UserId
somInteractionGroupingId
.
Et eksempel på en datakontrakt ser således ud:
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
UserId |
TagId |
UserId |
Trin 3: Forespørg på modellen for at tilpassede tags efter bruger eller lignende tags
Hvis du er omhyggelig med opbygning af modellen, får du det ønskede resultat ved at forespørge leveringsslutpunktet ved hjælp af listetyperne "Udvalgt til dig" og "Andre synes også godt om".
En "Udvalgt til dig"-API-forespørgsel, som returnerer de anbefalede TagId'er for et givet UserId
ser sådan ud:
<serving-endpoint>Reco/v1.0/picks?userId=<UserId>
En "Andre synes også godt om"-API-forespørgsel, hvor basisenhedsparameteren erstattes af det tilsvarende TagId
:
<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Eksempel på svaroutput
{
"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"
}
Eksempel 3: Forespørgsel på tagId'er med demodata
Forestil dig, at en bruger med UserId
=100 har angivet, at vedkommende er passer til følgende koder: 123 (som repræsenterer "fodboldfan), Age30To40Female og FamilyWithKids.
Du kan bruge den oprindelige interaktionsrække til at oprette følgende rækker i filen "Reco_Interactions.csv": Tre nye rækker interaktionsoplysninger, én for hvert tag for den pågældende bruger, som skal være i filen "Reco_Interactions.csv", der læses af tjenesten Intelligent Recommendations:
![Bemærk]
I dette eksempel har vi valgt at gruppere efter
UserId
og har angivetInteractionGroupingId
, så det er lig medUserId
. Bemærk også, atItemId
repræsentererTagId
.
InteractionGroupingId | ItemId | ItemVariantId | Bruger-id | InteractionType | Tidsstempel | Fremtidig attribut | Fremtidig attribut | Kanal | Katalog | Styrke | IsPositive |
---|---|---|---|---|---|---|---|---|---|---|---|
100 | 123 | 100 | |||||||||
100 | Age30To40Female | 100 | |||||||||
100 | FamilyWithKids | 100 |
Forespørgsel og svar for udvalgte
Sådan ser den konstruerede "Udvalgt til dig"-anmodning ud:
GET <serving-endpoint>/reco/v1.0/picks?UserId=100
Pluksvar returnerer en liste over 200 ItemIds (for tags), herunder TagID
=FamilyWithKids på første placering.
{
"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"
}
Forespørgsel og svar for lignende
Sådan ser den konstruerede "Andre har også"-anmodning ud ved hjælp af API'en for lignende:
GET <serving-endpoint>/Reco/V1.0/Similar/FamilyWithKids?
Svaret "Andre synes også godt om" returnerer en liste over 200 ItemIds (for tags), herunder Age30To40Female på første placering og FamilyWithKids på anden placering.
{
"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"
}
Hvis du vil vide mere om vores service og de modeller, vi understøtter, kan du se vores modelleringsvejledning.
Se også
Vejledning til hurtig start: Opret en IR-konto
Spørgsmål og svar for modellering
Vejledning til datakontrakter
Eksempler på API-forespørgsler