Der Einsatz von künstlicher Intelligenz (KI) wird für Unternehmen immer wichtiger, um Prozesse zu automatisieren und sich Wettbewerbsvorteile zu sichern. Machine Learning ist ein Teilbereich der künstlichen Intelligenz. Hier wird künstliches Wissen aus Erfahrungen generiert. Salesforce bietet seinen Kunden schon heute einfache und sehr effiziente Lösungen für Machine Learning in der Plattform an.
In diesem Artikel geben wir einen Überblick zu den verfügbaren Salesforce Diensten für Machine Learning. Schwerpunkt unseres Artikels sind allerdings Möglichkeiten, wenn Sie an die Grenzen der Salesforce Plattform kommen. Denn nur, weil Salesforce Einstein Ihre Anforderung nicht löst, heißt es nicht, dass es nicht möglich ist. Hier kommt die Nummer 1 der Machine Learning Programmiersprachen „Python“ ins Spiel, um Salesforce Daten verarbeiten zu können.
Marcel Joist, Professional Service Leiter von Salesforce Partner H+W CONSULT, zeigt Ihnen am Beispiel der Case-Klassifikation wie Sie Cases aus Salesforce abfragen und diese für das Anlernen eines Klassifizierungalgorithmus verwenden. Dieses Beispiel kann man als Einstieg in das Thema nutzen und es dann immer weiter ausbauen. Es dient nur als „Proof of Concept“. Die nächsten Schritte sind unten beschrieben.
Dieser Artikel wurde veröffentlicht am 12.05.2020.
Künstliche Intelligenz in Salesforce
Grundsätzlich empfehlen wir als Salesforce Partner immer erst die vorhandenen Click-to-Point Möglichkeiten der Salesforce Plattform zu nutzen. Diese sind bereits sehr mächtig und führen mit viel weniger Aufwand zum Ziel und mit jedem Release werden diese besser.
Verfügbare Einstein Dienste
- Einstein Prediction Builder – Vorhersagen von Werten z.B Wahrscheinlichkeit für einen Abschluss (Opportunity) oder die Konvertierung eines Leads
- Opportunity Scoring
- Lead Scoring
- Case-Classification
- Einstein Vision – Bildverarbeitung (Objekterkennung)
- Einstein Bots – Textverarbeitung und Automatisierung von Service-Anfragen
- Einstein Language – Textverarbeitung (Sentiment & Cassification)
- Einstein Discovery – Auswertung von Daten zur Analyse
- Einstein Next Best Action – Vorschlagen der nächsten besten Aktion (Recommendation)
- Sales Cloud, Service Cloud Einstein – Fertige Lösung für Sales und Service Abteilungen
- Einstein Voice – Sprachverarbeitung
Weitere Informationen finden Sie auch hier und auf Trailhead:
Python: Wenn die Grenzen von Salesforce Einstein erreicht sind
Mögliche Gründe für einen solchen Schritt könnten sein:
- Sprachen werden nicht unterstützt.
- Die Ergebnisse sind nicht optimal und müssen weiter verbessert werden.
- Funktionen werden noch nicht bereitgestellt von Salesforce.
- Man hat ein Machine Learning Team, welches spezialisiert ist auf Python.
- Man benötigt ein sehr individuelles Modell und Datenverarbeitung, welche aus weiteren Quellen integriert werden sollen.
- Man hat keine Lizenzen für Einstein Produkte erworben aber ein eigenes Machine Learning Team.
In einem Kundenprojekt hatten wir die Anforderung, Cases automatisch zu klassfizieren, damit Servicemitarbeiter sich auf die kritischten Kundenanfragen zuerst fokussieren. Dies ist mit den Salesforce Einstein Diensten nicht wie gewünscht möglich. Aus diesem Grund griffen wir auf die Programmiersprache Python samt seiner Werkzeuge für Machine Learning zurück.
- Das Modell und der Code ist nicht optimiert und entspricht nicht der perfekten Lösung. Hierfür empfehlen wir Ihnen, einen Experten in Machine Learning, der das Modell anhand der Daten optimiert auf Ihr Ziel.
- Dieser Artikel führt keine Bewertung durch wie Ihr spezifisches Problem am Besten gelöst wird. Hierfür kommen Sie gerne auf H+W CONSULT zu. Wir beraten Sie gerne.
Diese Python Libraries verwende ich im Beispiel:
- Simple-Salesforce: Zur Anbindung an Salesforce und zur Verarbeitung der Daten (https://github.com/simple-salesforce/simple-salesforce)
- Numpy und Pandas: Als Grundlage für SciKit-Learn und zur Verarbeitung der Daten (https://numpy.org/ , https://pandas.pydata.org/)
- NLTK: Zur Verarbeitung der Texte (Stop-Wörter, Wortreduktion auf den Stamm) (https://www.nltk.org/) man kann auch https://spacy.io/ nutzen
- SciKit-Learn: Machine-Learning Algorithmen (https://scikit-learn.org/stable/)
- Python Standard Library: (https://docs.python.org/3/library/pickle.html)
Schritt 1: Wir laden alle benötigten Libraries
Schritt 2: Wir verbinden uns zur Org und holen uns die Daten

Falls Sie mehr als 50.000 Datensätze verwenden wollen, sollten Sie auf die BULK-API wechseln. Mehr Informationen
Schritt 3: Umwandlung der Datenstruktur und Bereinigung
Wir wandeln die Daten in eine Datenstruktur um, welche genutzt werden kann und bereinigen die Daten. Zusätzlich geben wir uns die Kategorien inkl. der Datensätze aus.

Zur Konfiguration der Sprache, welche wichtig ist für die Auswahl der richtigen Filterwörter (Stopwords) und der Reduktion von Wörtern auf ihre Grundformen (Stemming), definieren wir eine Variable, die wir später nutzen.
Beispiel: Aus dem Satz „Ich fahre mit unseren Autos zur Werkstatt“ wird durch die Reduktion der Wörter „ich fahr mit uns autos zur werkstatt“ und nach den Filterwörtern „fahr autos werkstatt“. Hier können Sie es selber mal testen.
language
=
'german'
Schritt 4: Definition der Methoden für Training und Stemming
Die Trainingsmethode gibt uns das Modell und Reporting-Informationen zurück.
Ich verwende hier ein paar interessante Methoden aus SciKit-Learn & NLTK:
- fit: Anlernen des Modells
- predict: Vorhersagen von Daten
- train_test_split: Trennen der Daten in Training- und Testdaten
- score: Bewerten des Modells mit einem Accuracy Score
- classification_report: Erstellen eines Reports
- SnowballStemmer: Reduzieren der Wörter auf den Stamm
- word_tokenize: Sätze in Wörter zerlegen
Sie können alle Funktionen einfach auf der Webseite von Scikit-Learn nachschlagen.
Schritt 5
Als nächsten Schritt erstellen wir die Pipelines zur Berechnung der Modelle:
In diesem Fall nutze ich den „TfidfVectorizer“ zum Zerlegen und Zählen der Wörter im Verhältnis zum Gesamttext. Hieraus kommen dann die Features, also die zu lernenden Werte für den Klassifizierungsalgorithmus.
In unserem Beispiel verwende ich direkt mehrere Klassifizierungsalgorithmen und vergleiche später die Performance.
Ich will das Beispiel so einfach wie möglich halten, aus diesem Grund verwende ich keine weiteren Optimierungen. Zur Optimierung könnte man die Parameter per GridSearch einbauen oder mit #(’skb‘, SelectKBest(chi2, k = 50)) arbeiten. Hier kommt ein Experte für Machine Learning zum Einsatz.
Schritt 6: Ausführung
Nun zum letzten Teil des Codes. Wir führen alles aus und geben die Ergebnisse aus


Der beste Score liegt nur bei Accuracy: 0.6065573770491803 und nur die Kategorien „Migration, Programming und Customization SFDC“ werden einigermaßen erkannt.
So teste ich die Modelle im Code:
Ausgabe des Script aus meiner Developer Org:

So könnte man die Modelle speichern, damit man einen Webservice bauen kann.

Wie es weitergeht, um das Modell auch in die Produktion nehmen zu können
- Testen mit mehr Daten: Ich empfehle mind. 1.000-2.000 Datensätze pro Kategorie.
- Optimieren der Parameter und Daten Features – Link
- Bereinigen der Kategorien z.B ApexCode und ApexPage
- Hinzufügen von mehr Daten z.B Quelle des Leads.
- Optimieren, Optimieren, Optimieren – Link
- GridSearch ist bei wenigen Datensätzen allerdings gefährlich und kann schnell zum Overfitting führen.
- Ich empfehle mind. eine Precision von 80 und einen Recall von 80. Allerdings müssen Sie es für Ihren Einsatzzweck entscheiden.
- Web Service für das Modell erstellen – Link
- Authentifizierung einbauen in den Service – Link
- Deployment des Services z.B auf Heroku – Link
- Apex Development – Trigger mit HTTP-Call-Out – Link
Diese Python Libraries empfehlen wir Ihnen noch:
- Deep Learning Neuronale Netze : Link
- Bildverarbeitung: Link
- Alternative zu NLTK wird heute immer mehr genutzt.
Haben Sie Fragen zu Machine Learning in Salesforce?
Falls Sie sich zu diesem Thema mit jemandem austauschen möchten, kommen Sie gerne auf H+W CONSULT zu.