1 Minute Lesezeit

Neuartige Produktempfehlungen: Vektorbasierte Ansätze und intelligente Vergleichstabellen

Neuartige Produktempfehlungen: Vektorbasierte Ansätze und intelligente Vergleichstabellen

Die Möglichkeiten von Produktempfehlungen im E-Commerce entwickeln sich ständig weiter. Während viele Standardlösungen auf statischen Algorithmen basieren, können innovative Ansätze wie vektorbasierte Empfehlungen und dynamische Vergleichstabellen die User Experience erheblich verbessern und die Conversion-Rate steigern.

Dieser Blogpost behandelt zwei moderne Ansätze, die Entwickler:innen unabhängig von ihrer Plattform umsetzen können:

  1. Vektorbasierte Produktempfehlungen: Empfehlungen, die semantische Ähnlichkeiten zwischen Produkten analysieren.

  2. Intelligente Vergleichstabellen: Dynamische Gegenüberstellungen von Produkten mit UX-Optimierungen, die nur relevante Informationen anzeigen.


1. Vektorbasierte Produktempfehlungen

Vektorbasierte Produktempfehlungen nutzen semantische Ähnlichkeiten zwischen Produktmerkmalen. Anders als klassische Methoden, die Kategorien oder Kaufhistorien nutzen, berechnen vektorbasierte Systeme die Nähe zwischen Produkten im Vektorraum. Produkte mit ähnlichen Attributen erscheinen dadurch natürlicher und relevanter in den Empfehlungen.

Funktionsweise

Jedes Produkt wird durch einen Vektor dargestellt, der numerische Werte für wichtige Attribute enthält (z. B. Farbe, Material, Preis). Ähnlichkeiten zwischen Produkten werden anhand der Distanz zwischen diesen Vektoren berechnet, z. B. durch die Kosinus-Ähnlichkeit.

Beispiel in .php: Kosinus-Ähnlichkeit

function cosineSimilarity(array $vecA, array $vecB): float {     $dotProduct = array_sum(array_map(fn($a, $b) => $a * $b, $vecA, $vecB));     $magnitudeA = sqrt(array_sum(array_map(fn($a) => $a ** 2, $vecA)));     $magnitudeB = sqrt(array_sum(array_map(fn($b) => $b ** 2, $vecB)));

    return ($magnitudeA * $magnitudeB) > 0 ? $dotProduct / ($magnitudeA * $magnitudeB) : 0.0; }

$currentProductVector = [0.7, 0.2, 0.1]; $otherProducts = [     ["name" => "Produkt A", "vector" => [0.65, 0.25, 0.1]],     ["name" => "Produkt B", "vector" => [0.1, 0.8, 0.1]],     ["name" => "Produkt C", "vector" => [0.6, 0.15, 0.25]], ];

$recommendations = array_map(function ($product) use ($currentProductVector) {     $similarity = cosineSimilarity($currentProductVector, $product['vector']);     return ['name' => $product['name'], 'similarity' => $similarity]; }, $otherProducts);

usort($recommendations, fn($a, $b) => $b['similarity'] <=> $a['similarity']);

print_r($recommendations);

2. Intelligente Vergleichstabellen

Herausforderung: Dynamik und Relevanz in der Produktauswahl

Vergleichstabellen sind hilfreich, wenn Produkte ähnliche Eigenschaften haben. Aber was passiert, wenn sich Produkte stark unterscheiden? Niemand möchte einen Kühlschrank mit einem Laptop vergleichen. Um die User Experience zu verbessern, sollten Vergleichstabellen dynamisch gesteuert werden, indem sie nur relevante Produkte und Attribute anzeigen.

Lösungen für eine bessere UX:

  1. Relevanzfilter für Produkte: Vergleichstabellen sollten nur Produkte mit ähnlichen Attributen anzeigen. Dies kann durch ein Kategoriefilter oder ein Attribut-Matching sichergestellt werden.

  2. Dynamische Attributanzeige: Tabellen sollten nur Attribute anzeigen, die sich zwischen Produkten unterscheiden. So bleibt die Übersichtlichkeit erhalten.

  3. Fallback-Optionen: Falls keine relevanten Produkte gefunden werden, kann ein anderer Empfehlungsmechanismus (z. B. "ähnliche Kategorien") greifen.


Beispiel in .php: Dynamische Vergleichstabellen

Hier ein Beispiel für eine intelligente Vergleichstabelle mit Filter- und Dynamikoptionen.

// Beispielprodukte $products = [     ["name" => "Produkt A", "price" => 99.99, "material" => "Leder", "category" => "Fashion", "warranty" => "2 Jahre"],     ["name" => "Produkt B", "price" => 89.99, "material" => "Textil", "category" => "Fashion", "warranty" => "1 Jahr"],     ["name" => "Produkt C", "price" => 109.99, "material" => "Kunstleder", "category" => "Fashion", "warranty" => "3 Jahre"],     ["name" => "Produkt D", "price" => 499.99, "material" => "Metall", "category" => "Electronics", "warranty" => "2 Jahre"], ];

// Filter: Nur Produkte aus derselben Kategorie anzeigen $currentCategory = "Fashion"; $filteredProducts = array_filter($products, fn($product) => $product['category'] === $currentCategory);

// Dynamische Attribute auswählen $attributes = ["price", "material", "warranty"]; $dynamicAttributes = array_keys(array_filter(     array_reduce($filteredProducts, function ($carry, $product) use ($attributes) {         foreach ($attributes as $attr) {             $carry[$attr][$product[$attr]] = true;         }         return $carry;     }, []),     fn($values) => count($values) > 1 ));

// Tabelle generieren function generateDynamicComparisonTable(array $products, array $attributes): string {     $table = "<table border='1' style='width:100%; text-align:left;'>";     $table .= "<tr><th>Produkt</th>";     foreach ($attributes as $attribute) {         $table .= "<th>" . ucfirst($attribute) . "</th>";     }     $table .= "</tr>";

    foreach ($products as $product) {         $table .= "<tr><td>{$product['name']}</td>";         foreach ($attributes as $attribute) {             $table .= "<td>{$product[$attribute]}</td>";         }         $table .= "</tr>";     }     $table .= "</table>";     return $table; }

echo generateDynamicComparisonTable($filteredProducts, $dynamicAttributes);

Funktionsweise:

  1. Relevanzfilter: Nur Produkte mit derselben Kategorie werden in die Tabelle aufgenommen.

  2. Dynamische Attribute: Nur Attribute, die sich zwischen den Produkten unterscheiden, werden angezeigt.

  3. Fallback-Option: Produkte ohne Vergleichsbasis können alternativ durch "bessere Alternativen in derselben Kategorie" ersetzt werden.


Fazit

Mit diesen beiden Ansätzen können Entwickler:innen:

  • Vektorbasierte Empfehlungen implementieren, die kontextuell und semantisch genauer arbeiten als klassische Methoden.

  • Intelligente Vergleichstabellen erstellen, die relevante Produkte und Attribute dynamisch anpassen, um die User Experience zu optimieren.

Diese Konzepte verstehen sich system-agnostisch und bieten inspirierende Ansätze für moderne Produktempfehlungen, die sich leicht in bestehende Systeme integrieren lassen.


Bild von Simon Reichel