Im Rahmen des Hackathons im April 2019 wurden zwei Projekte von unserem Product Team bearbeitet.
Der Hackathon ist ein Wochenend-Wettbewerb von Microsoft, indem verschiedene Teams bestehend aus Mitgliedern von Microsoft Partner in einem Zeitraum von 48 Stunden ein Projekt zum Thema Künstliche Intelligenz umsetzten müssen. Das Thema im Frühjahr 2019 war „AI meetsBizApps“. Von Microsoft werden die Räume, die Verpflegung, sowie Leihgeräte und Experten bereitgestellt. Alle Ressourcen sind über den kompletten Zeitraum verfügbar, auch noch zur später Stunde. Das Besondere an dem Wettbewerb ist er beginnt freitagsabends um 21 Uhr und endet Sonntagnachmittags um 16 Uhr. Die Nächte gehören mit zur Entwicklungszeit.
Parallel zu den Projekten fanden eine Menge Impulsvorträge zu verschiedenen Themen statt. Die Vorträge wurden von Microsoftexperten und Wettbewerbsteilnehmern gehalten.
Projekt 1 – Support Bot
Unser erstes Projekt beschäftigte sich mit einem Support-Bot, um unseren Support zu entlasten. Mithilfe von dem QnA-Maker von Microsoft wurde ein Bot aufgesetzt, der am Ende des Zeitraums multilingual und über verschiedene Kommunikationswege erreichbar war. Dazu zählten E-Mail und Microsoft Teams (Chatplattform von MS), über einen Anruf war der Bot noch nicht erreichbar. Das Projektteam entwickelte auch ein einheitliches Konzept um die Knowledge Base des Bots, durch den Import eines vorformatierten Word-Dokuments, zu erweitern. Eine Knowledge Base enthält alle bekannten Informationen, also alle Fragen, Schlagwörter und dazugehörige Antworten. Dieser Vorgang wurde mithilfe von Flow implementiert. Flow bietet die Möglichkeit automatisierte Workflows (Arbeitsprozesse) zwischen verschiedenen Apps und Diensten zu erstellen.
Projekt 2 – Auftragswahrscheinlichkeit
Das zweite Projekt beschäftigte sich mit einer künstlichen Intelligenz, welche die Auftragswahrscheinlichkeit anhand von verschiedenen Faktoren berechnen sollte. Der genauere Aufbau und die Umsetzung werden im Folgenden weiterthematisiert.
Business Case
Der Projektauftrag kam von einem unserer größten Kunden. Dieser beschäftigt aktuell um die 200 Personen nur für die Auftragsverfassung, auf die kommerzielle Weise per Telefon, per Mail oder über andere Kanäle. Laut Kundenaussage werden aktuell nur 7% der Angebote zu Aufträgen, diese Zahl ist nicht effektiv und vor allem auch nicht lukrativ. Nach unseren ersten AI – Berechnungen kamen wir auf einen Wert von 4,4 %. Wenn der Kunde durch die künstliche Intelligenz nur ein Prozent mehr Aufträge erzeugen könnte, wäre ein großer Mehrwert geschaffen.
Lösungsansatz
Die visuelle Umsetzung sollte mithilfe einer Ampel dargestellt werden, welche je nach Prozentzahl die entsprechende Farbe anzeigt. Die Ampel sollte mit einem JavaScript Addin und einer Extension (Erweiterung der Standardobjekte) in das Kundensystem integriert werden. Unser Projekt beinhaltet zwei Phasen, die erste soll den Kunden zum Nachdenken anregen, wenn die Ampel rot anzeigt; In der letzten Phase soll die Intelligenz Empfehlungen abgeben um die Wahrscheinlichkeit zu verbessern, indem z.B. eine andere Menge oder ein anderer Artikel angeboten wird. Im Rahmen des Hackathons wurde nur die erste Phase umgesetzt.
Umsetzung
Unsere Entwicklungsumgebung war das Microsoft Azure Maschine Learning Studio. Hier wird die Datenquelle für den Lernprozess der AI angeben, sowie die Konfigurationen für das Lernverhalten und die Ergebnisvisualisierung.
Einer der wichtigsten Punkte in der Lernprozessvorbereitung ist das Aufteilen der Daten und das dazugehörige Clustering.
Eine Intelligenz lernt nicht mit der kompletten Datenmenge, sondern durch eine Konfigurationseinstellung nur mit einem Teil der Daten und der andere Teil wird am Ende zum Vergleichen genutzt. Unsere Daten wurden mit einer Verteilung 80 zu 20 aufgeteilt. Jeder Teil hatte den gleichen Anteil an angenommen und abgelehnten Angeboten.
Zusätzlich zu dem Aufteilen des Data Sets müssen die Daten geclustert werden, d.h. sie müssen eindeutig zu einer Gruppe gehören. Das Clustering erleichtert die Mustererkennung für die künstlichen Intelligenz. In unserem Projekt lagen uns ungefähr vier Millionen Angebotszeilen vor, in denen die Intelligenz keine Muster erkennen konnte und immer eine rote Ampel zurückgab.
Unser Modell wurde mit den folgenden drei Modellen trainiert:
Hinter jeder dieser Methoden steht ein komplexer mathematischer Algorithmus. Der „Two Class Decision Forest“ und der „Two Class Decision Jungle“ basieren auf der Logik von Entscheidungsbäumen.
Unser Modell sah folgenden Maßen aus:
Kombination der Algorithmen
Unserer Modell traniert mit allen drei Algorithmen, die Ergebnisse fließen zusammen und bilden zusammen das Endendergebnis. Die Fehlerquote fließt in jedes Modell bei jedem Trainingslauf wieder ein.
JavaScript Add-In
Das beste Ergebnis landet in einem Webservice, der das JavaScript Add-In ansteuert. Das JavaScript Add-In ist als Extension in Buisness Central integriert und die Ampel wird auf der Angebotsseite angezeigt. Über Java Script haben wir auch einen Bericht geschrieben.
Zusammenfassung
Während des Projektes hatten wir mit einigen Schwierigkeiten zu kämpfen. Dazu zählte die Datenaufbereitung von 1,5 TB und diese in Microsoft Azure zu importieren. Das Clustering der Daten benötigte die meiste Zeit, da unsere Daten, trotz der Menge nur sehr wenige positive Ergebnisse hatten. Zu diesem Punkt zählte auch das richtige Modell für das Maschine Learning zu wählen um die Genauigkeit zu erhöhen. Unsere Berechnung konnte nicht nur auf Prozentzahlen beruhen, sondern musste mit zuerst mit null (negative Chance) und eins(positive Chance) zu einer Prozentzahl werden, die dann das Ergebnis bildete. Die eingeschränkten Funktionalitäten von Azure OnPrem bei Dezimal und Integer erforderten ein Umdenken.
Das JavaScript Add-In brauchte auch etwas mehr Zeit, da die Sprache JavaScript zuvor noch nie genutzt wurde.
Durch die begrenzte Zeit wurde das Data Modell komplett mit den Tools von Microsoft Azure Maschine Learning Studio erstellt, statt diese selbst zu schreiben und zu implementieren.
Zusammengefasst ist das Projekt für die Angebotswahrscheinlichkeit erfolgreich gewesen und wird im weiteren Verlauf mit dem Kunden zusammen perfektioniert und ausgebaut. Der Support Bot wird auch weiterentwickelt.
Die Auftragswahrscheinlichkeit konnte beim Wettbewerb den zweiten Platz einholen.