[SL] Ohne Spezifikationen

Heute soll es um Situationen gehen, in denen man ganz ohne Spezifikationen auskommen kann bzw. muss. Damit meine ich nicht Drauflosprogrammmieren und dann solange nachbessern, bis es einigermaßen passt. Vielmehr geht es um Aufgabenstellungen, die mit Machine Learning bearbeitet werden können. Statt eindeutiger ja/nein Regeln hat man dabei viele Beispiele, aus denen so etwas wie eine Regel extrahiert werden soll.

Eindeutige Regeln sind nämlich manchmal nicht zu bekommen, denken Sie etwa an Handschrifterkennung: Die Regel zur Erkennung des Buchstaben “T” könnte lauten “Es müssen zwei gerade Linien sein, eine senkrechte und darüber eine waagerechte.” Das funktioniert für ideale Ts, aber in der Realität sind handgeschriebene Buchstaben etwas schief und krumm, der Querbalken schneidet manchmal den senkrechten Strich usw. usw. Man kann sich noch so sehr bemühen die Regeln zu verbessern (“Senkrecht heißt: maximal 30 Grad geneigt”), die Genauigkeit der Handschrifterkennung wird immer mittelprächtig sein.

Ein Beispiel, das näher am Business ist: Wir betreiben ein Abomodell (Handyvertrag, Versicherung, Software as a Service) und wollen etwas für die Kundenbindung tun. Als Mobilfunkanbieter würden wir vielleicht sagen: “Wenn ein Kunde droht, zur Konkurrenz abzuwandern, bieten wir ihm 3 Monate vor Ablauf des Vertrags offensiv ein neues Handy zu günstigen Konditionen an.” Die Spezifikation dafür wäre dann etwa:

WENN der Vertrag des Kunden in 3 Monaten ausläuft UND mindestens eine der folgenden Bedingungen erfüllt ist:

  • die telefonierten Minuten pro Monat liegen um mehr als 20% unter dem Durchschnitt unserer Kunden
  • das Datenvolumen liegt um mehr als 50% unter dem Durchschnitt unserer Kunden
  • der Kunde nutzt unser Netz an weniger als 10 Tagen im Monat
  • der Kunde hat sich in dem letzten 3 Monaten beschwert

DANN nimm ihn in die Kampagne “Unschlagbares Angebot bei Verlängerung” auf.

Kann man so machen, allerdings könnte es bessere Regeln geben, etwa “Kunde nutzt unser Netz an weniger als 20 Tagen im Monat”. Oder Faktoren, an die wir bei der Spezifikation nicht gedacht haben: “Privatkunden, die seit mehr als 4 Jahren bei uns sind, wechseln so selten, dass wir diesem Segment kein besonderes Angebot machen sollten.”

Machine Learning verspricht, anhand von Beispielen solche und ähnliche Regeln automatisiert zu finden, ohne dass wir sie von vorneherein spezifizieren müssen. Dazu brauchen wir möglichst viele Beispiele von Kunden, ihren Interaktionen und der Angabe, ob wir sie schließlich verloren oder behalten haben.

Es sind sozusagen zwei Enden eines Spektrums: Auf der einen Seite die trockene und sehr formale Spezifikation, die fast ohne Beispiele auskommen kann. Auf der anderen Seite Machine Learning, das sich nur auf Beispiele verlässt.

In unserem Beispiel würde man mit Machine Learning einen Score entwickeln, der für jeden Kunden die Wahrscheinlichkeit des Wechsels vorhersagt. Wenn die Vorhersage gut funktioniert, kann man die Kundenbindungsmaßnahme sinnvoll steuern: Aus Wechselwahrscheinlichkeit und voraussichtlichem Deckungsbeitrag kann man ableiten, ob die Kosten der Kundenbindungsmaßnahme wieder hereingespielt werden. In den Score könnten alle möglichen Merkmale eingehen, etwa Datenvolumen der letzten Monate, demografische Faktoren, Bonität, Wohnort usw. usw. Bei Mobilfunkanbietern wird so etwas schon lange praktiziert.

Machine Learning hat sich in den letzten Jahren sehr dynamisch entwickelt. Spektakuläre Anwendungen sind selbstfahrende Autos, Spracherkennung und Übersetzung. Viele Verfahren werden in Form von APIs angeboten und sind damit in Reichweite von Softwareentwicklern, die sich nicht hauptberuflich mit künstlicher Intelligenz beschäftigen.

Für Inspiration und Beispiele aus vielen anderen praktischen Anwendungen sind die Kaggle Competitions eine gute Quelle. Da gibt es zum Beispiel:

Vielleicht denken Sie ja an die Option “Machine Learning”, wenn Sie das nächste Mal eine Spezifikation mit komplizierten Regeln sehen.

Matthias Berth

Alle Emails