Udostępnij za pośrednictwem


Tagowanie metadanych i tworzenie przedziałów użytkowników

Intelligent Recommendations mogą służyć do usprawnienia personalizacji programu dla użytkowników końcowych, nawet gdy są anonimowi. Klienci mogą zintegrować spersonalizowane metadane, dzięki którym mogą korzystać ze swojego sklepu. Można to zrobić, korzystając z funkcji identyfikowania tagów metadanych dla zawartości (na przykład artykułów pisanych, podkasty, filmów wideo, produktów detalicznych itp.) oraz zalecania podobnych tagów lub zawartości w zależności od ustawienia/preferencji użytkownika. Metadane użytkownika mogą umożliwiać zalecanie wszystkim użytkownikom odpowiednich treści, takich jak:

  • Nowi lub nowi klienci (nazywane również "użytkownikami niemętni").
  • Łączenie użytkowników z innymi użytkownikami na podstawie unikatowych tagów metadanych.
  • Łączenie użytkowników z odpowiednią i skróconą zawartością w czasie potencjalnego klienta.

Po włączeniu funkcji oznaczania metadanych użytkownicy mogą tworzyć nowe scenariusze rekomendacji, takie jak:

  • Kategorie metadanych, które wybrałymy dla Ciebie
  • Inni ludzie także wyglądają w tych kategoriach
  • Ostatnie zdarzenia oparte na ostatnio dokonanym działaniu
  • Podobne produkty/zawartość oparte na metadanych metadanych
  • Typy danych wybierane na podstawie zachowań użytkowników

Co to jest tag?

Tagi to skrypt opisowy dla elementów/zawartości, której użytkownicy się interesują i muszą być specyficzne dla działania użytkownika końcowego. Np. w świecie filmów, gatunek, członkowie obsady, nastrój itp. mogą być uważane za tagi dla filmu, a także coś, co użytkownicy końcowi mają szczególny sentyment lub niechęć. W tagach mogą się nawet znaleźć gracze/użytkownicy, tytuły artykułów, kategorie produktów, zdarzenia i inna terminologia treści. Celem jest zapewnienie, aby użytkownicy końcowi zalecali odpowiednią zawartość, która będzie pasować do ich zainteresowań/preferencji na podstawie dostępnych metadanych.

Omówienie architektury

Aby skonfigurować tagowanie metadanych w sposób przedstawiony na diagramie architektury, wymagania wstępne są następujące:

  1. Autorytatywne przechowywanie treści z rozbudowanymi tagami metadanych — Katalog.
  2. Zachowanie interakcji z użytkownikiem (kliknięcie zawartości/Użycie). Ponadto mogą być dostępne informacje o profilu użytkownika końcowego, które mogą być używane.
  3. Oddzielne konto i wystąpienie modelowania Intelligent Recommendations służące do zrozumienia zainteresowań użytkowników prezentowanych jako tagi.
  4. Składnik do klasyfikacji zawartości na podstawie spersonalizowanych tagów z zapytaniem interfejsu API w czasie rzeczywistym.

Na tym obrazie przedstawiono zarys architektury konfigurowania tagowania metadanych w oddzielnym koncie Intelligent Recommendations.

Po włączeniu usługi jest spersonalizowane model „tagów” dla użytkowników oparty na:

  1. Historyczne interakcje użytkowników
  2. Zawartość rozbudowy metadanych z „tagami”
    1. Założeniem jest, że tagi będą wyczyszczone (brak błędów pisowni, a tagi są wstępnie określane jako racjonalizowane zestawy od ekspertów i nie są one losowo tworzone ani dołączane).

Konfiguracja kontraktu danych

Aby skonfigurować kontrakt danych w celu obsługi tagowania metadanych, wykonaj następujące czynności: Zwróć uwagę na zmiany między ItemId, TagId i InteractionGroupingId.

W sekcji Aplikacje można zobaczyć przykłady, jak wprowadzenie TagID lub BucketId zmienia konfigurację kontraktu danych. Podczas testowania oznaczania metadanych zalecamy oddzielne konto i wystąpienie modelowania usługi Intelligent Recommendations.

Nazwa funkcji IR KATALOG
Encja danych
KATALOG
Pola jednostki danych
INTERAKCJE
Encja danych
INTERAKCJE
Pola jednostki danych
(Wymagane dla wszystkich odpowiedzi) Reco_ItemsAndVariants ItemId jako TagId
Title
Możliwość filtrowania
(Dotyczy wszystkich list)
Reco_ItemCategories ItemCategories: ItemId (lub TagId), Kategoria
Ludzie widzą też Reco_Interactions InteractionGroupingId jako UserId
ItemId jako TagId
UserId
InteractionType: Purchase == wyświetlony
Sygnatura czasowa
Wybrane dla Ciebie Reco_Interactions (Tak samo jak poprzednio)

Zastosowania i przykłady

W poniższych sekcjach przedstawiono dwie typowe sprawy skorzystać z funkcji oznaczania metadanych i podać kilka przykładów takich danych.

  1. Aby uzyskać "najpopularniejsze pozycje dla użytkowników". Aby zobaczyć przykład, zobacz sekcję „Pobierz najpopularniejsze pozycje dla użytkowników programu Cold Users”.
  2. Aby utworzyć machiną mapę wartości metadanych użytkowników. Aby zobaczyć przykład, zobacz sekcję „Tworzenie mapy METADANYCH użytkowników”.

Częstym problemem w świecie AI-ML jest dostarczanie odpowiednich rekomendacji użytkownikom, którzy są nowymi lub rzadkimi klientami (znanymi również jako „zimni użytkownicy”). Jak uprzednio wspomniano, celem jest tworzenie różnych zasobników w zależności od kategorii i dostępnych informacji demograficznych (czyli wieku lub płci). Następnie użyj wszystkich interakcji, aby połączyć wszystkich użytkowników z odpowiednimi segmentami demograficznymi, co z kolei umożliwia połączenie segmentów z elementami podczas fazy szkolenia modelu. Na etapie obsługi można przypisać demograficzne użytkownika, który nie jest do tego używany, aby zalecać korzystanie z elementów, takich jak „najpopularniejsze elementy przez użytkownika”.

Kroki tego procesu są następujące:

  1. Przygotowanie danych użytkowników do ich metadanych.
  2. Utwórz połączenia dla modelu w pliku przechowywania danych „Reco_Interactions.csv”.
  3. Wykonaj zapytanie w modelu, aby uzyskać interfejs API „najpopularniejszych elementów według segmentu użytkowników”.

Krok 1: Przygotowanie danych użytkowników do ich metadanych

Kilka najlepszych rozwiązań podczas tworzenia pojemników można następujący sposób:

  • Metadane użytkownika mogą być reprezentowane przez zakres osób. Rozważ użycie metadanych dotyczących domeny biznesowej i przypadku użycia. Na przykład, aby utworzyć fors dla danych dotyczących wieku, można użyć tych wartości: Age5To11, Age30To40 itp.
  • Niektóre metadane użytkownika mogą być ze sobą połączone w całości. Rozważ użycie metadanych i kombinacji dotyczących domeny biznesowej i przypadku użycia. Na przykład można połączyć dane Wieku i Grupy w celu utworzenia tak podobnych danych: Age20To30Male, Age20To30Female, Age30To40Male, Age30To40Female itp.
  • Po utworzeniu pojemników należy przypisać każdemu z nich unikatowy identyfikator BucketId.

Krok 2: Utwórz połączenia dla modelu w pliku przechowywania danych „Reco_Interactions.csv”

W zależności od liczby osób, które mają więcej niż 1000 i więcej niż 1000, sposób konfiguracji danych w kontrakcie danych może ulec zmianie.

Jeśli jest mniej niż 1000 osób

Dla każdego wiersza interakcji użytkownik musi ustawić ChannelId na wartość BucketId, która odpowiada (lub najlepiej odpowiada) użytkownikowi. Wiersz CSV Interakcja zostanie zmieniony na: InteractionGroupingID, ItemId, UserId i BucketId jako ChannelId. Przykładowy plik CSV interakcji jest przedstawiony w następujący sposób:

Przykładowy plik CSV dla mniej niż 1000 osób

Interakcje Nagłówki CSV pojawiają się tylko dla wygody i nie powinny być częścią rzeczywistych danych.

InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
InteractionGroupingID ItemId UserId BucketId
Jeśli jest mniej niż 1000 osób

Jeśli danych jest więcej niż 1000, wówczas przy użyciu narzędzia są tworzyć kolejne wiersze interakcji BucketId. Zmień każdy oryginalny wiersz interakcji między użytkownikiem a elementem w dwa nowe oddzielne wiersze z unikatowym InteractionGroupingId, unikatowym tylko dla tych dwóch wierszy. Przykład pokazuje:

  1. Oryginalny wiersz interakcji przy użyciu UserId,ItemId i InteractionGroupingId jako UNIQUE_ID.
  2. Dodatkowy wiersz interakcji z BucketId jako ItemId.
Przykładowy plik CSV dla mniej niż 1000 osób:

Interakcje Nagłówki CSV pojawiają się tylko dla wygody i nie powinny być częścią rzeczywistych danych.

InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
UNIQUE_ID ItemId UserId
UNIQUE_ID BucketId UserId

Weź pod uwagę omówiony wcześniej zarys modelu. Po określeniu nieużywanego użytkownika i jego zasobnika demograficznego utwórz zapytanie o punkt końcowy obsługi przy użyciu typu listy „Następne najlepsze działanie” (dawniej CART) BucketId skoncentrowanego na demografii.

Jeśli jest mniej niż 1000 osób

Przykładowe łącze zapytania interfejsu API, w którym parametr ChannelId jest zastępowany BucketId, co może wyglądać tak:

<serving-endpoint>/Reco/V1.0/Popular?channelID=<BucketId>
Przykład 1: mniej niż 1000 osób

Przyjmij użytkownika z UserId=100, z przypisaną wartością niestandardową BucketId=Age30To40, który ostatnio kupił element przy użyciu wartości ItemId=98005. W tym przykładzie zostanie utworzony wiersz w pliku „Reco_Interactions.csv”, który używa BucketId ( ChannelId w polu schematu IR), który najlepiej odpowiada użytkownikowi (reprezentowanym przez UserId przez schemat IR):

  • Oryginalne informacje o interakcji to: InteractionGroupingId=1, UserId=100, ItemId=98005
  • Zauważ, że w przykładzie CSV dołączony został odpowiedni ChannelId, który najlepiej pasuje do UserId. W przykładzie dopasowano UserId do BucketId= Age30To40, więc zmodyfikowany wiersz interakcji to:
InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
1 98005 100 Age30To40
  • Zapytanie i odpowiedź interfejsu API zwraca listę elementów ItemId, w tym ItemId=43218 na trzeciej pozycji, która jest popularną pozycją dla użytkowników z tej kategorii.
Zapytanie API
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"
}
Jeśli jest mniej niż 1000 osób

Przykładowy link zapytania API, w którym ItemId jest zastępowany przez BucketId dla zimnego użytkownika, wyglądałby tak:

<serving-endpoint>/Reco/V1.0/Cart/<BucketId>?
Przykład 2: więcej niż 1000 osób

Przyjmij użytkownika z UserId=100, z przypisaną wartością niestandardową BucketId=Age30To40Female, który ostatnio kupił element przy użyciu wartości ItemId=98005. Teraz możesz użyć oryginalnych danych interakcji i skonstruować wiersze w pliku „Reco_Interactions.csv”:

  • Oryginalne informacje o interakcji to: InteractionGroupingId= NEW_UNIQUE_ID, UserId=100, ItemId=98005
  • Dwa wiersze skonstruowanych informacji o interakcji, które powinny znajdować się w pliku „Reco_Interactions.csv” odczytywanym przez usługę Intelligent Recommendations:
InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
UNIQUE_ID 98005 100
UNIQUE_ID Age30To40Female 100
  • Zapytanie i odpowiedź interfejsu API zwraca listę elementów ItemId, w tym ItemId=43218 na trzeciej pozycji, który jest popularnym produktem dla użytkowników z tej kategorii.
Zapytanie API
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"
}

Aplikacja 2: Utwórz mapę ML wartości metadanych użytkowników

Modelowanie „tagów” metadanych użytkownika zamiast bezpośrednich interakcji użytkownika może być potężną modyfikacją, gdy celem jest uzyskanie wyniku, który pokazuje, w jaki sposób użytkownicy są połączeni z tymi tagami i które tagi są naprawdę podobne pod względem zachowania. Przypisz każdy zrozumiały i dostępny tag (np. dane demograficzne, takie jak Wiek i Połączenie, lub inne metadane) unikatowy identyfikator, z którego usługa odwołuje się jako identyfikator TagId. Na etapie szkolenia Model wszystkie dane interakcji są używane do tworzenia połączenia między identyfikatorami UserIds i TagIds.

Podczas fazy udostępniania system może udostępnić spersonalizowaną listę tagów, wywołując „Wybrane dla Ciebie” za pomocą UserId, oraz podobne tagi, wywołując „Ludzie też lubią” za pomocą TagId.

Jak używać identyfikatorów TagId do rekomendacji:

  1. Przygotowanie listy wartości metadanych użytkownika (tagów) i przypisanie do każdej z nich unikatowej TagId.
  2. Utwórz połączenia dla modelu w pliku przechowywania danych Reco_Interactions.CSV.
  3. Zapytaj model, aby uzyskać interfejs API „spersonalizowane tagi według użytkownika” lub „podobne tagi”.

Krok 1: Przygotowanie listy wartości metadanych użytkownika (tagów) i przypisanie do każdej z nich unikatowej TagId

Podczas tworzenia wartości dla danych z wieku i tak jest nadal dobrym rozwiązaniem: Age5To11, Age12To18 itp.

Dla innych wartości metadanych utwórz oddzielny tagId dla każdej z nich. Na przykład jeśli chcę mieć kategorię Stan rodziny: Pojedyncza, Para, CoupleWithKids itp.

Krok 2: Utwórz połączenia dla modelu w pliku przechowywania danych Reco_Interactions.CSV

Użyj każdej oryginalnej interakcji między użytkownikiem a elementem, aby utworzyć wiersz danych interakcji z elementem TagId. [!Uwaga:]

Niektóre ważne przypomnienia w tym podejścia:

  1. W encji danych Interakcje dla modelu będą używane tylko nowo utworzone dane.
  2. Utworzenie wiersza interakcji łączącego użytkowników z tagidami nie musi być oparte na interakcji. W tym przykładzie przedstawiono sposób tworzenia interakcji służącej do łączenia użytkowników z tagami w modelu.
  3. Może mieć InteractionGroupingId sens ponowne użycie oryginalnej interakcji, jeśli jest dostępna. W przeciwnym razie należy wykonać grupowanie według UserId. Podczas fazy uczenia modelu wszystkie dane dotyczące interakcji są wykorzystywane do zbudowania połączenia między różnymi identyfikatorami TagId oraz między identyfikatorami UserID i TagId. Próba różnych metod grupowania i zobaczenia, co daje lepsze wyniki, to sugestie, ponieważ różne scenariusze i wzorce użycia mogą się różnić.
    1. Oryginalny wiersz interakcji: z UserId, ItemId InteractionGroupingId W przeciwieństwie do powyższego przykładu z BucketId, NIE UWZGLĘDNIAJ tego wiersza w wejściowym zbiorze danych.
    2. NOWY rząd interakcji: z UserId, TagId jako ItemId, UserId jako InteractionGroupingId.

Przykładowy kontrakt danych wyglądał tak:

InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
UserId TagId UserId

Krok 3: Zapytaj model, aby uzyskać interfejs API „spersonalizowane tagi według użytkownika” lub „podobne tagi”

Dzięki starannemu modelowi wykonywanie zapytania o punkt końcowy obsługi przy użyciu typów list „Wybrane dla Ciebie” i „Klienci także lubią” powoduje osiągnięcie żądanych wyników.

Zapytanie API „Wybrane dla ciebie”, które zwraca zalecane tagi dla danego UserId, wyglądałoby tak:

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

Zapytanie API „Ludzie też lubią”, w którym parametr seed-item jest zastępowany przez odpowiedni TagId:

<serving-endpoint>/Reco/V1.0/Similar/<TagID-value>?
Przykładowe wyjście odpowiedzi
{
    "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"
}

Przykład 3: zapytanie za tagIds z danymi demonstracyjnmi

Załóżmy, że użytkownik z UserId=100 wskazał, że jest zgodny z następującymi tagami: 123 (co oznacza „fan piłki nożnej”), Age30To40Female i FamilyWithKids.

Możesz użyć oryginalnego wiersza interakcji do skonstruowania następujących wierszy w pliku „Reco_Interactions.csv”: o Nowe 3 wiersze informacji o interakcji, po jednym dla każdego znacznika dla tego użytkownika, które powinny znajdować się w pliku „Reco_Interactions.csv”, który jest czytane przez usługę Intelligent Recommendations:

![Uwaga]

W tym przykładzie wybrano grupowanie według UserId i ustawiliśmy InteractionGroupingId na równe z UserId. Należy również zauważyć, że ItemId jest to obiekt reprezentujący obiekt TagId.

InteractionGroupingId ItemId ItemVariantId Identyfikator użytkownika InteractionType Sygnatura czasowa Przyszły atrybut Przyszły atrybut Kanał Wykaz Mocne strony IsPositive
100 123 100
100 Age30To40Female 100
100 FamilyWithKids 100
Kwerenda i odpowiedzi na wybory

Oto jak wygląda skonstruowane żądanie „Wybrano dla Ciebie”:

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

Funkcja wyboru odpowiedzi zwraca listę 200 identyfikatorów ItemId (dla tagów), w tym TagID=FamilyWithKids na pierwszej pozycji.

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

Zapytanie i odpowiedź na podobne

Oto jak wygląda skonstruowane żądanie „Ludzie też” przy użyciu podobnego interfejsu API:

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

Funkcja odpowiedzi „Klienci także lubią” zwraca listę 200 ItemId (dla tagów), w tym Age30To40Female na pierwszej pozycji i FamilyWithKids na drugiej pozycji.


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

Więcej informacji o usługach i modelach, które obsługujemy, zawiera Przewodnik modelowania.

Zobacz też

Przewodnik szybki start: Tworzenie klienta aplikacji IR
Modelowanie — Pytania i odpowiedzi
Przewodnik po kontraktach danych
Przykładowe żądania interfejsu API