Bessere Interaktion – die Cognitive-Services-Reihe

Das könnte Ihnen auch gefallen: Das Recommendations-API
Kommentare

Im letzten Teil unserer Cognitive-Services-Reihe werfen wir einen Blick auf Algorithmen, die wir als Anwender der großen Onlineshops gut kennen: „Dieses Produkt könnte Sie auch interessieren.“ Und das Schöne: Die Magie wurde bereits für uns implementiert und steht als REST-Service zur Verfügung.

Unter der Rubrik „Knowledge“ sind einige APIs angesiedelt, die Wissen extrahieren oder bereitstellen können. Das EntityLinking-API analysiert beispielsweise einen Text nach Schlüsselwörtern und stellt diese in Beziehung zu einem Eintrag in Wikipedia. Der Clou: Auch mehrdeutige Wörter werden aus dem Zusammenhang korrekt erkannt. Wir möchten uns in dieser Ausgabe aber im Speziellen dem Recommendations-API widmen.

Recommendations-API

Das API ermöglicht durch Bereitstellen von Nutzungsdaten den Aufbau eines Modells, um anschließend Fragen wie „Was wurde gemeinsam gekauft?“ oder „Welche ähnlichen Produkte gibt es noch?“ beantworten zu können, und zwar live: Sobald einer Ihrer Benutzer einen Artikel anklickt, können Sie sofort Empfehlungen per REST abfragen und auf der Website visualisieren – quasi Einkaufsberater as a Service.

Catalog Data

Die Basis für die Erstellung eines Modells ist der Aufbau eines Katalogs. Im Katalog stehen alle verfügbaren Artikel. Als Angabe genügen eine ID und der Name, optional können zusätzlich eine Beschreibung, die Produktkategorie und mehrere Features als Key-Value Pair angegeben werden. Vor allem die Features erhöhen die Qualität des Modells: Neue Artikel, bei denen es noch keine ausreichenden Erfahrungswerte gibt (so genannte „Cold Items“), führen so ebenfalls zu sinnvollen Empfehlungen – weil eine Verbindung zu bestehenden Produkten mit ähnlichen Features hergestellt werden kann. Der Katalog muss als Textdatei in einem bestimmten Format hochgeladen werden: entweder mittels REST-API  oder über das Recommendations-UI. Derzeit erreicht der Katalog mit 100 000 Artikeln sein Maximum.

Usage Data

Im zweiten Schritt werden die Nutzungsdaten bekanntgegeben. Um das Modell initial trainieren zu können, empfiehlt sich der Upload einer größeren Anzahl von Daten als Textdatei (ebenfalls per REST oder UI möglich). Jede Transaktion besteht dabei aus einer User ID, einer Item ID (aus dem Katalog), dem Zeitpunkt und der Aktion. Über die Aktion wird angegeben, ob der Benutzer auf den Artikel geklickt oder ihn weiterempfohlen hat, bzw. ob der Artikel in den Warenkorb gelegt oder tatsächlich gekauft wurde.

Je mehr Daten vorhanden sind, desto besser werden natürlich die Ergebnisse sein. Als Faustregel wird empfohlen, dass jeder Artikel in ungefähr zwanzig Transaktionen vorkommen sollte. Nutzungsdaten können anschließend auch als Event per REST übertragen werden – so wird das Modell permanent verbessert.

Frequently Bought Together

Nachdem Daten in das Modell geladen wurden, ist es an der Zeit, den Algorithmus darauf loszulassen. Zur Auswahl stehen verschiedene Varianten des so genannten Builds, zum Beispiel „Frequently Bought Together“ (FBT). Dabei werden die Artikel ermittelt, die oft in einer Transaktion gemeinsam gekauft wurden – also mit derselben User-ID und zum selben Zeitpunkt. Beim Kauf einer Gitarre werden also möglicherweise Saiten und Notenständer vorgeschlagen, aber keine anderen Gitarren. Ein Build kann wieder mittels REST-API oder UI angestoßen werden, anschließend kann über das API eine konkrete Empfehlung abgefragt werden.

Recommendation

Eine Alternative zum FBT-Algorithmus sind Item-to-Item- oder User-to-Item-Recommendations. Dabei werden vor allem Produkte empfohlen, die oft gemeinsam betrachtet wurden – also im Fall des Musikbeispiels von vorhin: andere schwarze E-Gitarren. Bei der Erstellung des Recommendation Builds kann angegeben werden, ob auch User-to-Item-Analysen gemacht werden sollen. In diesem Fall kann aus der Historie eines bestimmten Benutzers eine personalisierte Empfehlung abgefragt werden.

Zugriff aus .NET

Für .NET gibt es derzeit kein offizielles NuGet-Package, mithilfe der zur Verfügung gestellten Swagger-Metadaten können aber entsprechende Proxyklassen erzeugt werden. Außerdem sind für verschiedenste Programmiersprachen fertige Code-Snippets zu finden – in Listing 1 sehen Sie eine angepasste Variante zum Abfragen von Empfehlungen in C#. Das gesamte Beispiel finden Sie auf GitHub unter.

 
public async Task<IEnumerable<Recommendation>> GetItemToItemRecommendation(IEnumerable<string> itemIds, int numberOfResults = 5)
{
  var client = new HttpClient();

  client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", $"{subscriptionKey}");

  var uri = $"https://westus.api.cognitive.microsoft.com/recommendations/v4.0/models/{modelId}/recommend/item?itemIds={string.Join(",", itemIds)}&numberOfResults={numberOfResults}&minimalScore=0";

  var response = await client.GetAsync(uri);

  var json = JObject.Parse(await response.Content.ReadAsStringAsync());
  var items = json["recommendedItems"].ToString();

  var result = JsonConvert.DeserializeObject<Recommendation[]>(items);
  return result;
}

Kosten

Die Abrechnung erfolgt über Azure und ist abhängig von der Anzahl der durchgeführten Transaktionen pro Monat. Bis zu 10 000 API-Aufrufe sind kostenlos, für 100 000 werden knapp über 60 Euro im Monat fällig. Wer 50 Millionen Transaktionen pro Monat benötigt, sollte durch das Feature seinen monatlichen Gewinn um mindestens 4 200 Euro steigern, um kostendeckend zu bleiben.

Fazit

Das Recommendations-API erweitert – wie auch die in den letzten Ausgaben vorgestellten Services – unseren Entwicklerwerkzeugkasten. Bilderkennung, Textanalyse, Kaufempfehlungen: Es steht außer Frage, dass wir diese Funktionalitäten selten selbst entwickeln können (oder dürfen). Die Cognitive Services stellen uns APIs zur Verfügung, mit denen wir günstig experimentieren und faszinierende Ergebnisse erzielen können – wir wünschen viel Spaß beim Ausprobieren!

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -