Algorithmen-Evolution


Wenn der geneigte Leser jetzt einen Artikel über evolutionäre Algorithmen erwartet, muss ich ihn leider enttäuschen. Im üblichen Sinne des Wortes sind damit Algorithmen gemeint, die ähnlich den Vorgängen bei Genese und Vererbung Eigenschaften verändern und in einer Umgebung unter Beweis stellen müssen. Im Sinne diesen Artikels geht es bei der Algorithmen-Evolution um Evolutionsstufen von Algorithmen, also eher um die Diskussion “Einzeller – Mehrzeller – Mensch”. Schauen wir uns ein Beispiel an – aber Vorsicht: Das ist etwas trocken.

Ein Algorithmus

Der absolute Klassiker für ein Beispiel eines Algorithmus ist das Sortieren von Irgendwas – typischerweise Zahlen. An ihm werde ich meine Evolution eines Algorithmus beispielhaft ausführen:

Solange es in meiner Liste zwei aufeinanderfolgende Zahlen gibt, von denen die erste größer ist als die zweite: Tausche sie.

Es wird ein Ablauf beschrieben, der in endlichen Schritten eine beliebige Liste von Zahlen ihrer Größe nach sortiert. Wir können auch Worte sortieren, wenn wir die alphabetische Reihenfolge annehmen.

Was tun wir, wenn zwei Zahlen gleich groß sind?

Multivariates Sortieren

Ich weiß nicht, ob es Multivariates Sortieren heißt: Gemeint ist, dass ich in  meiner Zahlenliste ja auch gleichgroße Zahlen haben kann und damit irgendwie umgehen muss. Folgende Möglichkeiten gibt es:

  1. Gleiche Zahlen bleiben während des Sortierens in der gleichen Reihenfolge. So einen Sortieralgorithmus heißt stabil.
  2. Sonst heißen sie instabil.
  3. Vielleicht sind sie ja doch nicht ganz gleich, sondern haben weitere Eigenschaften, durch die sie sich unterscheiden: Zum Beispiel ihre Farbe: Eine blaue 25 könnte aus irgendeinem Grund kleiner als eine rote 25 sein.

Der dritte Fall beschreibt das multivariate Sortieren: Ich sortiere zunächst nach der Größe, dann nach der Farbe. Da nicht offensichtich ist, welche Farbe kleiner sein soll als eine andere, muss das im Algorithmus festgelegt werden. So könnte ich willkürlich sagen: gelb < blau < rot < grün.

Es können in der Liste nun auch zwei gleichgroße und gleichfarbige Zahlen vorkommen. Hier obliegt es mir wieder festzulegen, ob die Zahlen dann gleich sind oder ob ich noch eine weitere Eigenschaft zur Unterscheidung hinzuziehen muss.

Der Nachteil: Der Algorithmus sortiert immer gleich – egal, ob ich gelb toller finde oder rot. Wenn das wichtigere Attribut, die Größe der Zahl, gleich bleibt, ist die Farbe jetzt das Wichtigste.Und ist die Farbe nicht Geschamcksache des Nutzers?

Konfigurierbares Sortieren

Sorgen wir also nun dafür, dass unser Algorithmus woher auch immer weiß, welche Farben mir besser gefallen als andere. Dann kann er die Zahlen so sortieren, dass es bitteschön mir auch gefällt und nicht nur dem Entwickler. Ich könnte also ein persönliches Farb-Profil hinterlegen und es dem Algorithmus mitgeben, wenn ich ihn starte.

Wechseln wir nun den Gegenstand unserer Sortier-Bemühungen: Nehmen wir nun nicht mehr Zahlen, sondern Filme. Wir können uns vorstellen, dass ein Film sehr viele Attribute hat, die wir auswerten können: Erscheinungsjahr, Spieldauer, Regisseur, Hauptdarsteller, Genre, …

Ich könnte also nun in meinem Film-Sortier-Algorithmus hinterlegen, welche Genre ich lieber mag als andere, in welchen Jahren ich tollere Filme erwarten würde als in anderen und welche Hauptdarsteller ich lieber mag als andere. Dann könnte ich alle meine Filme sortieren und beginnend mit dem Tollsten anfangen, sie alle nacheinander mit abnehmender Begeisterung zu schauen.

Adaptives Sortieren

Das ist zwar einerseits cool, dass ich Nutzer-individuell meine 1000 Filme in der Datenbank sortieren kann. Es ist aber auch nervig, wenn jeder Nutzer so detailliert seine Vorgaben eingeben muss. Das muss doch auch besser gehen.

Geht: Wir präsentieren einem Neu-Nutzer unsere Film-Reihenfolge nach einem generischem Profil. Wenn er nun aber nicht den ersten Film auswählt, sondern den siebten oder auch 28sten, dann wissen wir: Der Film ist in den Augen dieses Nutzers toller!

Damit können wir die Eigenschaften des gewählten Filmes höher gewichten und die individuelle Sortierreihenfolge verbessern. Nach dem nächsten Sortieren würden ähnliche Filme weiter vorne in der Liste landen.

Multi-Adaptives Sortieren

Wir haben aus unserer Filmdatenbank nun ein großes Business gemacht, da unser Unique selling Point, das Adaptive Suchen, sich zum Renner entwickelt hat. Leider müssen wir feststellen, dass unsere Nutzer selten einfach den ersten Film nehmen, sondern weiter spulen und andere aussuchen. Wir sehen auch, dass die Viel-Nutzer unserer Datenbank bessere Ergebnisse bekommen, als die Wenignutzer. Die Adaption funktioniert also, aber jeder Nutzer muss offensichtlich durch sein eigenes Tal der Tränen gehen, um die Anpassungen vorzunehmen.

Wir überlegen uns folgende Verbesserung: Wenn wir es schaffen, dass die Wenig-Nutzer von den Vielnutzern profitieren, können wir sicher die allgemeine Kundenzufriedenheit erhöhen. Wir überlegen uns, dass unsere Nutzer bestimmten Gruppen angehören können, die eine vergleichbare Film-Vorlieben haben. Da wir nicht wissen, welche und wieviele Gruppen es gibt, lassen wir über die ausgewählten Filme unserer Kunden ein Verfahren zur Cluster-Analyse laufen. Das Ergebnis ist eine Liste von “typischen” Nutzern und wir versuchen, neue Nutzer möglichst schnell einem üblichen Nutzer-Profil zuzuordnen. So kann er optimal von den anderen Nutzern profitieren.

Weitere Verbesserungen

Wir können das Benutzungserlebnis für unsere Filmdatenbank weiter verbessern, in dem wir den Zugang erleichtern oder auch die Präsentation der Ergebnisse besonders gut gestalten.

  1. Wir bieten unsere Film-Datenbank als App für die Plattformen IOS und Android an.
  2. Wir bieten ein Interface zu Alexa, Siri, Google-Dings an, um Kommandos wie “Hey Alexa, mach mir mal einen Film an” möglichst im Sinne des Nutzers ausführen können.
  3. Wir können Google fragen, ob sie nicht ein Google Duplex – Plugin für unsere Filmdatenbank entwicklen wollen. Oder wir machen es gleich selbst.
  4. Wir werten zur Verbesserung der Film-Sortierung auch Facebook-Postings unserer Nutzer aus.

Die Krone der Schöpfung

Unsere Filmdatenbank läuft so richtig gut. Wir haben eine Menge Nutzer, wir haben smarte Verbindungen zwischen weiteren Profilen unserer Nutzer und wir bekommen viele neue Anmeldungen von Nutzern. Sind wir sind im Himmel angekommen? Vielleicht, aber von dort ist der Griff nach den Sternen doch der nächste, oder?

Wir beginnen nun, unsere Plattform zu erweitern:

  1. Wir bieten Werbe-Plätze an.
  2. Wir bieten ortsbezogene Verbindungen zu anderen Dienstleistern wie Kino oder Lieferdiensten an.
  3. Wir starten ein Affiliate-Progamm, über den wir im Falle von Verkäufen mitverdienen.
  4. Natürlich geben wir Empfehlungen, die Video-on-Demand Dienste erfordern. Über Kunden, die mit besonderen Angeboten über unseren Dienst geworben wurden, verdienen wir eine Provision.
  5. Wir bieten nicht nur Empfehkungen zu Filmen an, sondern auch zu Fernsehsendungen, Serien, Nachrichten und verbinden uns mit den Elektronischen Programm Guide EPG. So gewinnen wir weitere Nutzer, die nicht nur eine Film-Empfehlung haben wollen, sondern auch die Angebote des klassischen Fernsehens nutzen wollen.

Und die Moral von der Geschicht?

Die Facebooks, Googles, Amazonen dieser Welt haben unseren Sortier-Algorithmus schon deutlich weiter entwickelt, als meine fiktive Krone der Algorithmen-Schöpfung. Was sie brauchen, ist eine hohe Zahl von Nutzern. Wir sollten uns also überlegen, ob wir ihnen unsere Daten und unser Surf-Verhalten zur Verfügung stellen. Sicher können wir uns entscheiden, das zu tun. Nur sollte dann kein Aufschrei kommen “Oh, hoppla, Facebook nutzt unsere Daten ja für ihre Geschäfte”. Ja, tun sie. Es ist ist sogar ihr Geschäftsmodell: Wir bezahlen für die Dienste mit unseren Daten, die dadurch ohne Geld zu nutzen sind.

Nachtrag 17.5.2018, einen Tag nach Veröffentlichung des Artikels: Selbst manchen Google-Mitarbeitern wird es mit den Google-Projekten etwas zu heikel, wie der Stern in Project Maven: Wegen dieses Pentagon-Deals rennen Google die Mitarbeiter weg berichtet.

Was bleibt für mich?

Ich nutze lieber Dienste, deren Geschäftsmodell ein anderes ist. Ich tausche lieber Geld gegen Dienst. Üblich ist das heutzutage nicht mehr, aber darum ja nicht schlechter.

Appendix: Scoring

Multivariates Sortieren ggf. mit einer Adaptierung für den Benutzer macht man üblicherweise über eine sogenannte Scoring-Funktion. Diese überführt alle Eigenschaften der zu sortierenden Gegenstände in eine Zahl, die ich dann einfach sortieren kann. Ein Beispiel für einen Film:

Score(“Will Smith”, 2012) = 42
Score(“Denzel Washington”, 2013)=38

Somit würde ich wohl den Abend mit Will Smith verbringen, wenn ein größerer Score “besser zu mir passend” bedeutet.