Delen via


Taggen van metagegevens en bucketing van gebruikers

Intelligent Recommendations kan worden gebruikt om relevante personalisatie voor eindgebruikers te verbeteren, zelfs als deze anoniem zijn. Klanten kunnen een gepersonaliseerde ervaring van taggen van metagegevens integreren voor hun winkel. Deze ervaring wordt bereikt door de mogelijkheid te gebruiken om tags van metagegevens voor inhoud te identificeren (zoals geschreven artikelen, podcasts, video's, detailhandelproducten enzovoort) en vergelijkbare tags of inhoud aan te bevelen op basis van de smaak/voorkeur van die gebruiker. Metagegevens van gebruikers kunnen krachtig zijn voor het aanbevelen van relevante inhoud aan alle gebruikers, waaronder:

  • Nieuwe of onregelmatige klanten (ook wel "koude gebruikers" genoemd).
  • Gebruikers verbinden met andere gebruikers op basis van taggen van unieke metagegevens.
  • Gebruikers verbinden met zowel relevante inhoud als inhoud met een korte doorlooptijd.

Wanneer taggen van metagegevens is ingeschakeld, kunnen gebruikers nieuwe aanbevelingsscenario's maken, zoals:

  • Metagegevenscategorieën die we voor u hebben geselecteerd
  • Anderen kijken ook naar deze categorieën
  • Recente gebeurtenissen op basis van uw recente activiteit
  • Vergelijkbare producten/inhoud op basis van de toegekende metagegevenstags ervan
  • Selecties voor u op basis van gebruikersgedragbuckets

Wat is een tag?

Tags zijn een beschrijving van iets van belang binnen de artikelen/inhoud waar gebruikers naar op zoek zijn, en moeten specifiek zijn voor de activiteit van de eindgebruiker. Als het gaat om films kunnen genre, castleden, stemming, enzovoort bijvoorbeeld allemaal worden beschouwd als tags voor een film, maar tags kunnen ook te maken hebben met iets waar eindgebruikers een speciale voorliefde voor dan wel afkeer van hebben. Tags kunnen zelfs beroemde acteurs/gebruikers, artikeltitels, genre, productcategorieën, evenementen en andere inhoudsterminologie bevatten. Het doel is ervoor te zorgen dat eindgebruikers relevante inhoud wordt aanbevolen die past bij hun interesses/smaak/voorkeur op basis van beschikbare metagegevens.

Architectuuroverzicht

Als u het taggen van metagegevens wilt configureren zoals weergegeven in het architectuurdiagram, moet u aan de volgende vereisten voldoen:

  1. Gezaghebbende opslag voor inhoud met uitgebreide metagegevenstags: catalogus.
  2. Gebruikersinteractiegedrag (klikken op inhoud/gebruik). Profielinformatie van eindgebruikers kan ook beschikbaar zijn voor gebruik.
  3. Een afzonderlijk Intelligent Recommendations-account en een modelleringsinstantie om inzicht te krijgen in gebruikersinteresses die worden gepresenteerd als tags.
  4. Een onderdeel om inhoud te rangschikken op basis van gepersonaliseerde tags met een realtime API-query.

Deze afbeelding toont het architectuuroverzicht voor het configureren van het taggen van metagegevens in een apart account voor Intelligent Recommendations.

Indien ingeschakeld, produceert de service een model van gepersonaliseerde "tags" voor gebruikers, gebaseerd op:

  1. Historische gebruikersinteracties
  2. Uitgebreide inhoud van metagegevens met "tags"
    1. De aanname hier is dat de tags zijn opgeschoond (geen spelfouten en de tags vormen een vooraf bepaalde, gerationaliseerde set van experts en niet willekeurig gemaakt of bijgevoegd).

Configuratie van gegevenscontracten

Ga als volgt te werk om een gegevenscontract te configureren om taggen van metagegevens te ondersteunen: let op de wijzigingen tussen ItemId, TagId en InteractionGroupingId.

In de sectie Toepassingen ziet u voorbeelden van hoe de introductie van een TagID of BucketId de configuratie van het gegevenscontract verandert. We raden u aan een apart Intelligent Recommendations-account en een aparte modelleringsinstantie te hebben wanneer u het taggen van metagegevens test.

Naam IR-functie CATALOGUS
Gegevensentiteit
CATALOGUS
Gegevensentiteitsvelden
INTERACTIES
Gegevensentiteit
INTERACTIES
Gegevensentiteitsvelden
(Vereist voor alle responsen) Reco_ItemsAndVariants ItemId als de TagId
Title
Filterend vermogen
(Is van toepassing op alle lijsten)
Reco_ItemCategories ItemCategories: ItemId (of TagId), Categorie
Wat anderen ook bekijken Reco_Interactions InteractionGroupingId als de UserId
ItemId als de TagId
UserId
InteractionType: Aankoop == bekeken
Tijdstempel
Selectie voor u Reco_Interactions (Hetzelfde als vorige)

Toepassingen en voorbeelden

In de volgende gedeelten worden twee veelvoorkomende gebruiksscenario´s besproken die gebruikmaken van het taggen van metagegevens en worden enkele voorbeelden gegeven met demogegevens voor elk.

  1. "Meest populaire artikelen voor u" ophalen voor koude gebruikers. Om een voorbeeld te zien, raadpleegt u het gedeelte met de titel "Meest populaire artikelen voor u" ophalen voor koude gebruikers.
  2. Een Op Machine Learning gebaseerd overzicht van de metagegevenswaarden van gebruikers maken. Zie voor een voorbeeld het gedeelte met de titel "Een ML-overzicht van de metagegevenswaarden van gebruikers maken".

Een veelvoorkomend probleem in de wereld van AI-ML is hoe relevante aanbevelingen kunnen worden verschaft aan gebruikers die nieuwe of onregelmatige klanten zijn (ook wel "koude gebruikers" genoemd). Zoals eerder vermeld, is het doel hier om enkele afzonderlijke buckets te maken op basis van betekenisvolle categorieën en beschikbare demografische informatie (namelijk Leeftijd en Geslacht). Gebruik vervolgens alle interacties om alle gebruikers aan hun overeenkomstige demografische buckets te koppelen, waardoor de buckets tijdens de modeltrainingsfase aan artikelen kunnen worden gekoppeld. Tijdens de weergavefase kan de demografische bucket van een koude gebruiker worden toegewezen en vervolgens worden gebruikt om items aan te bevelen, bijvoorbeeld 'meest populaire items per gebruikersbucket'.

De stappen zijn als volgt:

  1. Bucketing van gebruikers met hun metagegevensinformatie voorbereiden.
  2. De verbindingen voor het model maken in het gegevensopslagbestand "Reco_Interactions.csv".
  3. Een query uitvoeren op het model om de API "meest populaire artikelen per gebruikersbucket' op te halen.

Stap 1: bucketing van de gebruikers met hun metagegevensinformatie voorbereiden.

Enkele best practices bij het maken van uw buckets zijn als volgt:

  • Metagegevens van gebruikers kunnen worden weergegeven als gerangschikte buckets. Overweeg om de metagegevens te gebruiken die zinvol zijn voor uw bedrijfsdomein en gebruiksscenario. Als u bijvoorbeeld een bucket voor leeftijdsgegevens wilt maken, kunt u deze waarden gebruiken: Leeftijd5tot11, Leeftijd30tot40 enzovoort.
  • Sommige metagegevens van gebruikers kunnen zelfs in buckets worden gecombineerd. Overweeg om de metagegevens en combinaties te gebruiken die zinvol zijn voor uw bedrijfsdomein en gebruiksscenario. U kunt bijvoorbeeld gegevens over leeftijd en geslacht combineren om buckets als de volgende te maken: Leeftijd20tot30Man, Leeftijd20tot30Vrouw, Leeftijd30tot40Man, Leeftijd30tot40Vrouw enzovoort
  • Nadat er buckets zijn gemaakt, moet u aan elke bucket een unieke BucketId toewijzen.

Stap 2: de verbindingen voor het model in het gegevensopslagbestand "Reco_Interactions.csv" maken

Afhankelijk van het aantal buckets boven of onder de 1000, kan de manier waarop gegevens zijn geconfigureerd in het gegevenscontract veranderen.

Bij MINDER dan 1000 buckets

Voor elke interactierij stelt u de ChannelId in op de BucketId, die overeenkomt met (of het beste past bij) de gebruiker. De interactie CSV-rij is gewijzigd in: InteractionGroupingID, ItemId, UserId en BucketId als de ChannelId. Een voorbeeld van de CSV van interacties wordt als volgt weergegeven:

Voorbeeld-CSV voor MINDER dan 1000 buckets

CSV-headers van interacties worden alleen voor het gemak weergegeven en mogen geen deel uitmaken van de werkelijke gegevens.

InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Kanaal Catalogus Kracht IsPositive
InteractionGroupingID ItemId UserId BucketId
Bij MEER dan 1000 buckets

Als er meer dan 1000 gegevensbuckets zijn, maakt u meer interactierijen met behulp van de BucketId. Verander elke oorspronkelijke interactierij tussen een gebruiker en een artikel in twee nieuwe afzonderlijke rijen met een unieke InteractionGroupingId die alleen uniek is voor deze twee rijen. Het voorbeeld laat het volgende zien:

  1. De oorspronkelijke interactierij met UserId,ItemId en InteractionGroupingId als UNIQUE_ID.
  2. De aanvullende interactierij met BucketId als ItemId.
Voorbeeld-CSV voor MEER dan 1000 buckets:

CSV-headers van interacties worden alleen voor het gemak weergegeven en mogen geen deel uitmaken van de werkelijke gegevens.

InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Kanaal Catalogus Kracht IsPositive
UNIQUE_ID ItemId UserId
UNIQUE_ID BucketId UserId

Houd rekening met het eerder besproken modelconstructieschema. Nadat een koude gebruiker en diens demografische bucket zijn bepaald, voert u een query uit op het leveringseindpunt met behulp van het lijsttype "Next Best Action" (voorheen CART) met de demografische focus BucketId om de meest populaire items voor die bucket aan te bevelen.

Bij MINDER dan 1000 buckets

Een voorbeeld van een API-querykoppeling waarbij de parameter voor BucketId wordt vervangen door de waarde van ChannelId. Dit ziet er als volgt uit:

<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Voorbeeld 1: minder dan 1000 buckets

Ga uit van een gebruiker met UserId=100, met een aangepaste toegewezen BucketId=Leeftijd30tot40, die onlangs een artikel heeft gekocht met ItemId=98005. Dit voorbeeld maakt een rij in het bestand "Reco_Interactions.csv", die een BucketId (in het veld ChannelId van het IR-schema) gebruikt die het best overeenkomt met de gebruiker (weergegeven door UserId in het IR-schema):

  • Oorspronkelijke interactie-informatie is: InteractionGroupingId=1, UserId=100, ItemId=98005
  • Merk op dat in het CSV-voorbeeld de relevante ChannelId, die het beste overeenkomt met UserId , is toegevoegd. In het voorbeeld komt de UserId overeen met de BucketId= Age30To40, dus de is gewijzigde interactierij:
InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Kanaal Catalogus Kracht IsPositive
0 98005 100 Leeftijd30tot40
  • De API-query en -respons retourneren een lijst met ItemId's, inclusief ItemId=43218 op de derde positie, wat een populair item is voor gebruikers van deze categorie.
API-query
GET <serving-endpoint>/reco/v1.0/Popular?ChannelId=Age30To40
De 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"
}
Bij MEER dan 1000 buckets

Een voorbeeld van een API-querykoppeling waarbij BucketId wordt vervangen door ItemId voor een koude gebruiker, ziet er als volgt uit:

<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Voorbeeld 2: meer dan 1000 buckets

Ga uit van een gebruiker met UserId=100, met een aangepaste toegewezen BucketId=Leeftijd30tot40Vrouw, die onlangs een artikel heeft gekocht met ItemId=98005. Nu kunt u de oorspronkelijke interactiegegevens gebruiken en rijen maken in het bestand "Reco_Interactions.csv":

  • Oorspronkelijke interactie-informatie is: InteractionGroupingId= NEW_UNIQUE_ID, UserId=100, ItemId=98005
  • De twee rijen met samengestelde interactie-informatie die in het bestand "Reco_Interactions.csv" moeten staan dat wordt gelezen door de Intelligent Recommendations-service:
InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Channel Catalog Kracht IsPositive
UNIQUE_ID 98005 100
UNIQUE_ID Age30To40Female 100
  • De API-query en -respons retourneren een lijst met ItemId's, inclusief ItemId=43218 op de derde positie, wat een populair product is voor gebruikers in deze categorie.
API-query
GET <serving-endpoint>/reco/v1.0/Cart/Age30To40Female? 
De 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"
}

Toepassing 2: een ML-overzicht maken van metagegevenswaarden van gebruikers

Het modelleren van gebruikersmetagegevens "Tags" in plaats van directe gebruikersinteracties kan een krachtige wijziging zijn wanneer het doel is om een uitkomst te produceren die laat zien hoe gebruikers verbonden zijn met die tags, en welke tags qua gedrag echt vergelijkbaar zijn. Wijs aan elke betekenisvolle en beschikbare tag (bijvoorbeeld demografische gegevens zoals leeftijd en geslacht of andere metagegevens) een unieke id toe, waarnaar de service verwijst als TagId. Tijdens de modeltrainingsfase worden alle interactiegegevens gebruikt om een verbinding tot stand te brengen tussen UserIds en TagIds.

Tijdens de leveringsfase kan het systeem een gepersonaliseerde lijst met tags verschaffen door "Selecties voor u" aan te roepen met UserId en vergelijke tags door "Wat anderen ook leuk vinden" met TagId aan te roepen.

TagIds voor aanbevelingen gebruiken:

  1. Bereid een lijst met metagegevenswaarden (tags) van gebruikers voor en wijs aan allemaal een unieke TagId toe.
  2. Maak de verbindingen voor het model in het gegevensopslagbestand "Reco_Interactions.csv".
  3. Voer een query uit op het model om de API 'gepersonaliseerde tags per gebruiker' of 'vergelijkbare tags' op te halen.

Stap 1: een lijst met metagegevenswaarden (tags) van gebruikers voorbereiden en aan allemaal een unieke TagId toewijzen.

Bij het maken van waarden voor leeftijdsgegevens is bucketing nog steeds een goede benadering: Leeftijd5tot11, Leeftijd12tot18 enzovoort.

Maak voor andere metagegevenswaarden een afzonderlijke TagId voor elk. Als we bijvoorbeeld een categorie willen voor gezinsstatus: Alleenstaand, Echtpaar, EchtpaarMetKinderen enzovoort.

Stap 2: de verbindingen voor het model in het gegevensopslagbestand "Reco_Interactions.csv" maken

Gebruik elke oorspronkelijke interactie tussen een gebruiker en artikel om een rij met interactiegegevens samen te stellen met TagId. [!Opmerking:]

Enkele belangrijke geheugensteuntjes bij deze aanpak:

  1. Alleen de nieuw samengestelde gegevens worden gebruikt in de gegevensentiteit Interacties voor het model.
  2. Het maken van een interactierij die gebruikers met TagIds verbindt, hoeft niet noodzakelijkerwijs gebaseerd te zijn op een interactie. Dit is een voorbeeld om te illustreren hoe men een interactie kan maken om gebruikers te verbinden met tags in het model.
  3. Voor InteractionGroupingId kan het zinvol zijn om de oorspronkelijke interactie opnieuw te gebruiken, indien deze beschikbaar is. Probeer anders een van beide te groeperen op UserId. Tijdens de modeltrainingsfase worden alle interactiegegevens gebruikt om een verbinding tot stand te brengen tussen de verschillende TagIds en tussen UserIds en TagIds. Ons voorstel is met verschillende manieren te proberen om te groeperen en vervolgens kijken welke de betere relevante resultaten oplevert, aangezien verschillende scenario's en gebruikspatronen kunnen verschillen.
    1. Oorspronkelijke interactierij: met UserId, ItemId, InteractionGroupingId. In tegenstelling tot het bovenstaande voorbeeld met BucketId, moet u deze rij NIET OPNEMEN in de invoergegevensset.
    2. NIEUWE interactierij: met UserId, TagId als ItemId en UserId als InteractionGroupingId.

Een voorbeeld van een gegevenscontract ziet er als volgt uit:

InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Kanaal Catalogus Kracht IsPositive
UserId TagId UserId

Stap 3: een query uitvoeren op het model om gepersonaliseerde tags per gebruiker of vergelijkbare tags op te halen.

Met zorgvuldige modelconstructie levert het opvragen van het leveringseindpunt met behulp van de lijsttypen 'Selectie voor u' en 'Wat anderen ook leuk vinden' de gewenste resultaten op.

Een API-query "Selecties voor u" waarmee de aanbevolen TagIds voor een bepaalde UserId worden geretourneerd, ziet er als volgt uit:

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

Een API-query "Wat anderen ook leuk vinden" waarbij de seed-artikelparameter wordt vervangen door de overeenkomstige TagId:

<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Voorbeeldresponsuitvoer
{
    "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"
}

Voorbeeld 3: query voor tagIds met demogegevens

Stel dat een gebruiker met UserId=100 heeft aangegeven over een te stemmen met de volgende tags: 123 (wat staat voor "Voetbalfan"), Leeftijd30tot40Vrouw en GezinMetKinderen.

U kunt de oorspronkelijke interactierij gebruiken om de volgende rijen in het bestand "Reco_Interactions.csv" te maken: 3 nieuwe rijen met interactie-informatie, één voor elke tag voor die gebruiker, die staan in het bestand "Reco_Interactions.csv" dat wordt gelezen door Intelligent Recommendations-service:

![Opmerking]

In dit voorbeeld hebben we ervoor gekozen om te groeperen op UserId, en hebben we InteractionGroupingId gelijk aan UserId ingesteld. Merk ook op dat ItemId TagId vertegenwoordigt.

InteractionGroupingId ItemId ItemVariantId Gebruikers-id InteractionType Tijdstempel Toekomstig kenmerk Toekomstig kenmerk Kanaal Catalogus Kracht IsPositive
100 123 100
100 Leeftijd30tot40Vrouw 100
100 GezinMetKinderen 100
Query en responsen voor selecties

Zo ziet de samengestelde aanvraag 'Selecties voor u' eruit:

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

De respons Selecties retourneert een lijst met 200 ItemId's (voor tags), waaronder TagID=FamilyWithKids op de eerste positie.

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

Query en respons voor vergelijkbare looks

Zo ziet de samengestelde aanvraag 'Wat anderen ook' eruit met de Similar API:

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

De respons 'Wat anderen ook leuk vinden' retourneert een lijst met 200 ItemId's (voor tags), waaronder Age30To40Female op de eerste plaats en FamilyWithKids op de tweede plaats.


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

Bekijk onze Modelleringsgids voor meer informatie over onze service en de modellen die we ondersteunen.

Zie ook

Snelstartgids: een IR-account maken
Q&A voor modellering
Guide voor gegevenscontract
Voorbeeld API-aanvragen