Sauber, klar: wie wir Chatbot gelehrt haben, um zwischen Kundenfragen zu unterscheiden


    Anton Chaynikov, Entwickler von Data Science, Redmadrobot
    Hallo, Habr! Heute werde ich über Dornen auf dem Weg zum Chatbot sprechen, was die Arbeit der Chat-Betreiber der Versicherungsgesellschaft erleichtert. Oder besser gesagt: Wir haben dem Bot beigebracht, Anforderungen durch maschinelles Lernen voneinander zu unterscheiden. Mit welchen Modellen sie experimentierten und welche Ergebnisse sie erzielten. Wie haben vier Ansätze zur Bereinigung und Anreicherung der Daten von anständiger Qualität und fünf Versuche, die Datenqualität "unanständig" zu bereinigen.


    Aufgabe


    +100500 Kundenanrufe pro Tag kommen in den Chat der Versicherungsgesellschaft. Die meisten Fragen sind einfach und wiederholend, aber die Bediener sind nicht besser darin, und die Kunden müssen immer noch fünf bis zehn Minuten warten. Wie kann die Servicequalität verbessert und die Arbeitskosten optimiert werden, so dass die Bediener weniger Routinearbeit haben und die Benutzer ein angenehmeres Gefühl haben, wenn sie ihre Fragen schnell lösen?


    Und wir werden Chatbot machen. Lassen Sie ihn Benutzermeldungen lesen, einfache Anweisungen für einfache Fälle geben und Standardfragen für komplexe Fälle stellen, um die Informationen zu erhalten, die der Bediener benötigt. Ein Live-Operator verfügt über eine Skriptstruktur - ein Skript (oder ein Blockdiagramm), das angibt, welche Fragen Benutzer stellen dürfen und wie sie darauf reagieren sollen. Wir würden dieses Schema in den Chatbot aufnehmen, aber was für ein Pech - der Chatbot versteht nicht menschlich und weiß nicht, wie er die Frage des Benutzers mit dem Skriptzweig in Verbindung bringt.


    Wir werden ihn also mit Hilfe des guten alten maschinellen Lernens unterrichten. Sie können jedoch nicht einfach eine von Benutzern generierte Dateneinheit verwenden und ihm ein Modell mit anständiger Qualität beibringen. Dazu müssen Sie mit der Architektur des Modells experimentieren, die Daten bereinigen und gelegentlich erneut sammeln.


    Wie man bot lernt:


    • Betrachten wir die Varianten der Modelle: wie die Größe des Datensatzes, die Textvektorisierung, die Dimensionsreduzierung, der Klassifizierer und die Endgenauigkeit kombiniert werden.
    • Bereinigen Sie anständige Daten: Finden Sie die Klassen, die Sie sicher werfen können; Finden Sie heraus, warum die letzten sechs Monate des Aufschlags besser waren als die vorherigen drei; Bestimmen, wo das Modell liegt und wo das Markup liegt. Finden Sie heraus, wofür Tippfehler nützlich sein können.
    • Bereinigen Sie die „unanständigen“ Daten: Mal sehen, wann Clustering nützlich und nutzlos ist, wie Benutzer und Betreiber sprechen, wann es Zeit ist, das Leiden zu beenden und die Markup-Sammlung zu sammeln.

    Textur


    Wir hatten zwei Kunden - Versicherungsgesellschaften mit Online-Chatrooms und Chatboat-Schulungsprojekten (wir werden sie nicht anrufen, es spielt keine Rolle), mit drastisch unterschiedlicher Datenqualität. Nun, wenn die Hälfte der Probleme des zweiten Projekts durch Manipulationen aus dem ersten gelöst wurde. Details unten.


    Technisch gesehen ist es unsere Aufgabe, Texte zu klassifizieren. Dies erfolgt in zwei Schritten: Zuerst werden die Texte vektorisiert (mithilfe von tf-idf, doc2vec usw.). Anschließend wird das Klassifizierungsmodell anhand der Vektoren (und Klassen) untersucht: Zufallsstruktur, SVM, neuronales Netzwerk usw. und so weiter


    Woher kommen die Daten:


    • SQL-Upload-Verlaufsnachrichten im Chat. Relevante Upload-Felder: Kurzmitteilungen; Autor (Kunde oder Betreiber); Nachrichten in Dialogen gruppieren; Zeitstempel; Kategorie des Kundenantrags (Fragen zu CTP, CASCO, LCA, Fragen zur Arbeit der Website, Fragen zu Treueprogrammen, Fragen zu Änderungen der Versicherungsbedingungen usw.).
    • Die Baumstruktur von Szenarien oder die Reihenfolge der Fragen und Antworten von Bedienern an Kunden mit unterschiedlichen Anforderungen.

    Ohne Bestätigung natürlich nirgendwo. Alle Modelle wurden an 70% der Daten trainiert und die Ergebnisse für die restlichen 30% bewertet.


    Qualitätskennzahlen für die von uns verwendeten Modelle:


    • Beim Training: Logloss, zur Unterscheidbarkeit;
    • Beim Schreiben von Berichten: Klassifizierungsgenauigkeit eines Testmusters zur Vereinfachung und Klarheit (auch für den Kunden);
    • Bei der Wahl einer Richtung für das weitere Vorgehen: Die Intuition des Datenwissenschaftlers, der die Ergebnisse genau betrachtet.

    Experimente mit Modellen


    Selten, wenn die Aufgabe sofort klar ist, welches Modell die besten Ergebnisse liefert. Also hier: keine Experimente irgendwo.


    Wir werden Vektorisierungsoptionen ausprobieren:


    • tf-idf in separaten Wörtern;
    • tf-idf auf Dreiergruppen von Zeichen (im Folgenden: 3 Gramm);
    • tf-idf auf 2-, 3-, 4-, 5-Gramm getrennt;
    • tf-idf auf 2-, 3-, 4-, 5-Gramm, alle zusammen genommen;
    • Alle oben genannten + Wörter im Quelltext in die Wörterbuchform bringen;
    • Alle oben genannten + Dimensionsreduktionen mit der abgeschnittenen SVD-Methode.
    • Mit der Anzahl der Messungen: 10, 30, 100, 300;
    • doc2vec, trainiert am Textkörper der Aufgabe.

    Die Einstufungsoptionen für diesen Hintergrund sehen eher schlecht aus: SVM, XGBoost, LSTM, zufällige Gesamtstrukturen, naive Bayes, zufällige Gesamtstrukturen zusätzlich zu den Vorhersagen von SVM und XGB.


    Und obwohl wir die Reproduzierbarkeit der Ergebnisse an drei unabhängig zusammengestellten Datensätzen und ihren Fragmenten überprüft haben, werden wir nur für die breite Anwendbarkeit bürgen.


    Die Ergebnisse der Versuche:


    • In der Kette der "Vorverarbeitungs-Vektorisierung-Senkung der Dimensionalitätsklassifizierung" ist die Auswirkung der Wahl bei jedem Schritt nahezu unabhängig von den anderen Schritten. Was sehr praktisch ist, Sie können nicht für jede neue Idee ein Dutzend Optionen durchgehen und bei jedem Schritt die bekannteste Option verwenden.
    • tf-idf in Worten verliert bis zu 3 Gramm (Genauigkeit 0,72 vs. 0,78). 2-, 4-, 5 Gramm verlieren an 3 Gramm (0,75–0,76 vs. 0,78). {2; 5} -Programme gewinnen zusammen mit 3 Gramm sehr wenig. In Anbetracht der starken Zunahme des Speicherbedarfs haben wir uns entschlossen, die Steigerung der Genauigkeit von 0,4% zu vernachlässigen.
    • Im Vergleich zu tf-idf waren alle doc2vec-Sorten hilflos (Genauigkeit 0,4 und darunter). Es lohnt sich zu versuchen, ihn nicht auf dem Korpus der Aufgabe (~ 250000 Texte), sondern auf einem viel größeren (2,5–25 Millionen Texten) auszubilden, der aber bisher leider nicht in die Hände gelangt ist.
    • Abgeschnittene SVD hat nicht geholfen. Die Genauigkeit steigt mit zunehmenden Messungen monoton und erreicht die Genauigkeit ohne TSVD.
    • Bei den Klassifikatoren gewinnt XGBoost mit einer deutlichen Marge (+ 5–10%). Die engsten Konkurrenten sind SVM und Random Forest. Naive Bayes ist nicht einmal ein Wettbewerber, wenn es um Wälder geht.
    • Der Erfolg von LSTM hängt stark von der Größe des Datensatzes ab: Bei einer Stichprobe von 100.000 Objekten kann es mit XGB mithalten. Bei einer Probe von 6000 - zusammen mit Bayes hinterherhinken.
    • Eine zufällige Gesamtstruktur über SVM und XGB stimmt entweder immer mit XGB überein oder macht mehr Fehler. Das ist sehr traurig, wir haben gehofft, dass SVM in den Daten zumindest einige Regelmäßigkeiten finden würde, die für XGB nicht zugänglich sind, aber leider.
    • Bei XGBoost ist alles schwierig mit Stabilität. Ein Update von Version 0.72 auf 0.80 reduzierte beispielsweise die Genauigkeit der trainierten Modelle auf unerklärliche Weise um 5–10%. Und noch etwas: XGBoost unterstützt das Ändern von Trainingsparametern während des Trainings und die Kompatibilität mit der Standard-API für das Scikit-Lernen, jedoch streng getrennt. Sie können nicht beides zusammen machen. Ich musste es reparieren.
    • Wenn Sie Wörter in die Wortschatzform bringen, verbessert dies die Qualität in Kombination mit tf-idf in Worten etwas, ist jedoch in allen anderen Fällen unbrauchbar. Am Ende haben wir es deaktiviert, um Zeit zu sparen.

    Erfahrung 1. Datenbereinigung oder was mit Markup zu tun ist


    Chat-Operatoren sind nur Menschen. Bei der Ermittlung der Kategorie der Benutzerabfragen machen sie häufig Fehler und verstehen die Grenzen zwischen Kategorien unterschiedlich. Daher müssen die Quelldaten rücksichtslos und intensiv gereinigt werden.


    Unsere Daten zum Trainingsmodell beim ersten Projekt:


    • Geschichte der Online-Chat-Nachrichten seit mehreren Jahren. Das sind 250.000 Meldungen in 60.000 Dialogen. Am Ende des Dialogs hat der Bediener die Kategorie ausgewählt, auf die sich der Aufruf des Benutzers bezieht. In diesem Datensatz etwa 50 Kategorien.
    • Skriptbaum. In unserem Fall hatten die Operatoren keine Arbeitsskripte.

    Was genau die Daten sind, haben wir als Hypothesen formuliert, geprüft und wo möglich korrigiert. Folgendes ist passiert:


    Nähere dich dem ersten. Sie können 5-10 aus der gesamten riesigen Klassenliste sicher verlassen.
    Wir lehnen kleine Klassen (<1% der Stichprobe) ab: wenig Daten + geringe Auswirkung. Wir kombinieren schwierige Klassen, auf die die Bediener immer noch gleich reagieren. Zum Beispiel:
    'dms' + 'Wie melde ich mich zum Arzt an' + 'Frage zum Ausfüllen des Programms'
    'Stornierung' + 'Stornierungsstatus' + 'Stornierung einer bezahlten Police'
    'Frage zur Verlängerung' + 'Wie kann die Police verlängert werden?'


    Als Nächstes werfen wir Klassen wie "other", "other" und dergleichen heraus: Sie sind für Chatbot (Weiterleitung zum Operator) ohnehin unbrauchbar und beeinträchtigen gleichzeitig die Genauigkeit, da 20% (30, 50, 90) Anfragen von Operatoren klassifiziert werden, die nicht dort sind, wo sie stehen sollten und hier. Jetzt werfen wir eine Klasse raus, mit der der Chatbot (noch) nicht arbeiten kann.


    Ergebnis: in einem Fall - Wachstum von Genauigkeit 0,40 auf 0,69, im anderen - von 0,66 auf 0,77.


    Nähere dich dem zweiten. Zu Beginn des Chats wissen die Betreiber selbst nicht genau, wie sie eine Klasse für die Attraktivität des Benutzers auswählen sollen, so dass in den Daten viele „Lärm“ und Fehler auftreten.


    Experiment: Wir nehmen nur die letzten zwei (drei, sechs, ...) Dialoge und trainieren das Modell darauf
    .


    Ergebnis: In einem bemerkenswerten Fall stieg die Genauigkeit von 0,40 auf 0,60, im anderen von 0,69 auf 0,78.


    Nähere dich dem dritten. Manchmal bedeutet eine Genauigkeit von 0,70 nicht „in 30% der Fälle ist das Modell falsch“, sondern „in 30% der Fälle lügt die Markierung und das Modell korrigiert sie sehr vernünftig“.


    Sie können diese Hypothese nicht mit Metriken wie Genauigkeit oder Logloss testen. Für die Zwecke des Experiments haben wir uns auf den Blick des Datenwissenschaftlers beschränkt, im Idealfall ist es jedoch notwendig, Datensätze qualitativ neu zu kartieren, ohne das Cross-Training zu vergessen.


    Um mit solchen Proben zu arbeiten, haben wir uns den Prozess der "iterativen Anreicherung" ausgedacht:


    1. Datensätze in 3-4 Fragmente aufteilen.
    2. Das Modell auf dem ersten Fragment trainieren.
    3. Vorhersagen der trainierten Modellklassen.
    4. Sehen Sie sich die vorhergesagten Klassen und den Vertrauensgrad des Modells genau an und wählen Sie den Grenzwert des Vertrauens.
    5. Entfernen Sie aus dem zweiten Fragment Texte (Objekte), die mit Sicherheit unterhalb der Grenze vorausgesagt werden, um das Modell darauf zu trainieren.
    6. Wiederholen Sie diesen Vorgang, bis Sie sich langweilen oder Fragmente ausgehen.

    Zum einen sind die Ergebnisse ausgezeichnet: Das Modell der ersten Iteration hat eine Genauigkeit von 70%, das zweite - 95%, das dritte - 99 +%. Ein genauer Blick auf die Ergebnisse der Vorhersagen bestätigt diese Genauigkeit vollständig.


    Andererseits, wie kann man in diesem Prozess systematisch sicherstellen, dass nachfolgende Modelle nicht aus den Fehlern der vorherigen Modelle gelernt werden? Es gibt eine Idee, den Prozess an einem manuell „verrauschten“ Dataset mit einer hochwertigen Quellmarkierung wie MNIST zu testen. Aber die Zeit dafür war leider nicht genug. Und ohne Überprüfung wagten wir nicht, eine iterative Bereicherung und die daraus resultierenden Modelle in der Produktion einzuführen.


    Nähere dich dem vierten. Der Datensatz kann erweitert werden - und somit die Genauigkeit erhöhen und die Umschulung reduzieren, wodurch den vorhandenen Texten viele Varianten von Tippfehlern hinzugefügt werden.
    Typen von Tippfehlern: Einen Buchstaben verdoppeln, einen Buchstaben überspringen, benachbarte Buchstaben an bestimmten Stellen neu anordnen und einen Buchstaben durch einen benachbarten Buchstaben auf der Tastatur ersetzen.


    Experiment: Der Anteil der Buchstaben, bei denen ein Tippfehler auftritt: 2%, 4%, 6%, 8%, 10%, 12%. Erhöhen Sie das Dataset: normalerweise bis zu einer Größe von 60.000 Replikaten. Je nach Anfangsgröße (nach den Filtern) bedeutete dies eine 3–30-fache Steigerung.


    Ergebnis: abhängig vom Datensatz. Bei einem kleinen Datensatz (~ 300 Replikate) führen 4–6% der Tippfehler zu einer stabilen und signifikanten Erhöhung der Genauigkeit (0,40 → 0,60). Im Großen und Ganzen ist es schlimmer. Bei einem Druckfehleranteil von 8% oder mehr werden die Texte zu Unsinn und die Genauigkeit sinkt. Bei einer Fehlerrate von 2–8% variiert die Genauigkeit im Bereich von wenigen Prozent, sehr selten übertrifft die Genauigkeit ohne Tippfehler, und es lohnt sich nicht, die Trainingszeit mehrmals zu erhöhen.


    Als Ergebnis erhalten wir ein Modell, das 5 Referenzklassen mit einer Genauigkeit von 0,86 unterscheidet. Wir koordinieren mit dem Kunden die Texte der Fragen und Antworten für jede der fünf Gabeln, befestigen die Texte am Chatbot und senden sie an QA.


    Erleben Sie 2. Knie in den Daten oder was Sie ohne Markup tun müssen


    Nachdem wir beim ersten Projekt gute Ergebnisse erzielt hatten, gingen wir mit vollem Vertrauen an das zweite. Aber zum Glück haben wir nicht vergessen, wie man überrascht wird.


    Was wir getroffen haben:


    • Szenario-Baum mit fünf Filialen, der vor etwa einem Jahr mit dem Kunden abgestimmt wurde.
    • Eine markierte Stichprobe von 500 Nachrichten und 11 Klassen unbekannter Herkunft.
    • Eine Auswahl von 220.000 Nachrichten, 21.000 Dialogen und 50 weiteren Klassen, die von Chat-Betreibern festgelegt wurden.
    • SVM-Modell, trainiert an der ersten Probe, mit einer Genauigkeit von 0,69, die vom vorherigen Team von Datenwissenschaftlern geerbt wurde. Warum SVM, die Geschichte schweigt.

    Zunächst betrachten wir die Klassen: im Skriptbaum, im Beispiel des SVM-Modells, im Hauptbeispiel. Und das sehen wir:


    • Die Klassen der SVM-Modelle entsprechen in etwa den Skriptzweigen, jedoch nicht den Klassen aus dem großen Beispiel.
    • Der Szenariobaum wurde vor einem Jahr über Geschäftsprozesse geschrieben und veraltete fast vergebens. Das SVM-Modell ist damit veraltet.
    • Die zwei größten Klassen in der großen Stichprobe sind Verkäufe (50%) und Sonstige (45%).
    • Von den fünf nächstgrößeren Klassen sind drei so häufig wie der Verkauf.
    • Die restlichen 45 Klassen enthalten jeweils weniger als 30 Dialoge. Ie Wir haben keinen Skriptbaum, keine Klassenliste und kein Markup.

    Was ist in solchen Fällen zu tun? Wir haben die Ärmel hochgekrempelt und sind alleine gegangen, um die Klassen und das Markup aus den Daten zu ziehen.


    Versuchen Sie den ersten. Versuchen wir, Benutzerfragen zu gruppieren, d. H. Die ersten Nachrichten im Dialog mit Ausnahme der Begrüßung.


    Wir prüfen. Wir bieten Vektorrepliken mit 3 Gramm an. Wir reduzieren die Abmessung auf die ersten zehn TSVD-Messungen. Clusteragglomeratives Clustering mit euklidischer Entfernung und der Ward-Zielfunktion. Erneut senken wir die Dimension mit t-SNE (auf zwei Dimensionen, damit die Ergebnisse mit den Augen betrachtet werden können). Wir zeichnen Replikationspunkte auf die Ebene und malen in der Farbe von Clustern.


    Ergebnis: Angst und Schrecken. Vernünftige Cluster können wir davon ausgehen, dass es keine gibt:



    Fast nicht - es gibt eins, orange auf der linken Seite, weil alle Nachrichten darin ein 3-Gramm-"@" enthalten. Dieses 3G ist ein Vorverarbeitungsartefakt. Während der Filterung der Interpunktionszeichen wurde "@" nicht nur nicht ausgefiltert, sondern auch mit Leerzeichen überwachsen. Aber das Artefakt ist nützlich. In diesem Cluster waren Benutzer, die zuerst ihre E-Mail schreiben. Leider ist nur durch das Vorhandensein von E-Mails überhaupt nicht klar, was die Anfrage des Benutzers ist. Weitermachen


    Versuch den zweiten. Was ist, wenn Betreiber häufig mit mehr oder weniger Standard-Links antworten?
    Wir prüfen. Wir ziehen Link-ähnliche Teilzeichenfolgen aus Betreibernachrichten heraus, wir bearbeiten die Links geringfügig, unterscheiden sich in der Schreibweise, sind aber in der Bedeutung identisch (http / https, / search? City =% city%), wir betrachten die Linkhäufigkeiten.


    Ergebnis: nicht viel versprechend. Erstens antworten die Betreiber mit Links zu einem geringen Anteil der Anfragen (<10%). Zweitens gibt es sogar nach manueller Reinigung und dem Herausfiltern der einmal gefundenen Verbindungen mehr als dreißig. Drittens gibt es keine besondere Ähnlichkeit im Verhalten von Benutzern, die den Dialog mit einem Link beenden.


    Versuchen Sie den dritten. Schauen wir uns die Standardantworten der Operatoren an. Was ist, wenn sie Indikatoren für eine Art von Nachrichtenklassifizierung sind?


    Wir prüfen. In jedem Dialog nehmen wir die letzte Bemerkung des Operators (ohne den Abschied zu zählen: „Ich kann mit etwas anderem helfen“ usw.) und betrachten die Häufigkeit der eindeutigen Nachbildungen.


    Ergebnis: vielversprechend, aber unpraktisch. 50% der Bedienerantworten sind einzigartig, weitere 10–20% werden zweimal getroffen, die restlichen 30–40% werden durch eine relativ kleine Anzahl beliebter Vorlagen abgedeckt. Relativ klein - etwa dreihundert. Ein genauerer Blick auf diese Vorlagen zeigt, dass viele von ihnen Varianten der gleichen Bedeutung der Antwort sind - wo sie sich durch einen Buchstaben, einen Buchstaben und einen Absatz unterscheiden. Ich möchte diese ähnlichen Antworten zusammenfassen.


    Versuch vierter. Wir fassen die letzten Replikate der Operatoren zusammen. Diese Cluster sind viel besser:



    Damit kann man schon arbeiten.


    Clustering und Zeichnen von Replikaten auf der Ebene wie beim ersten Versuch, indem Sie die unterschiedlichsten Cluster manuell definieren, aus dem Dataset entfernen und das Clustering erneut durchführen. Nach der Trennung von etwa der Hälfte des Datensatzes enden die klaren Cluster und wir überlegen, welche Klassen ihnen zugewiesen werden sollen. Wir streuen Cluster nach den ursprünglichen fünf Klassen - das Muster ist "schief" und drei der fünf ursprünglichen Klassen erhalten keinen einzigen Cluster. Ist schlecht Wir verteilen Cluster in fünf Klassen, die wir nach dem Zufallsprinzip planen: "Anruf", "Kommen", "Warten auf eine Antwort pro Tag", "Probleme mit dem Captcha", "Andere". Der Versatz ist kleiner, aber die Genauigkeit beträgt nur 0,4–0,5. Schon wieder schlecht Wir weisen jedem der über 30 Cluster eine eigene Klasse zu. Die Probe ist wieder "schief" und die Genauigkeit beträgt wieder 0,5, obwohl etwa fünf ausgewählte Klassen eine anständige Genauigkeit und Vollständigkeit haben (0,8 und höher).


    Versuchen Sie den fünften. Wir brauchen alle Vorzüge von Clustering. Extrahieren Sie das vollständige Clustering-Dendrogramm anstelle der obersten 30 Cluster. Wir speichern es in einem Format, das für Kundenanalytiker zugänglich ist, und wir helfen ihnen beim Markieren - wir skizzieren die Liste der Klassen.


    Für jede Nachricht berechnen wir eine Kette von Clustern, die jede Nachricht enthalten, beginnend beim Stamm. Wir erstellen eine Tabelle mit Spalten: Text, ID des ersten Clusters in der Kette, ID des zweiten Clusters in der Kette, ..., ID des Clusters, der dem Text entspricht. Wir speichern die Tabelle in csv / xls. Dann können Sie mit Office-Tools arbeiten.


    Wir geben die Daten und eine Skizze der Klassenliste zur Kennzeichnung des Kunden an. Kundenanalytiker haben ~ 10.000 erste Benutzerbeiträge neu definiert. Wir haben bereits aus der Erfahrung gelernt und gebeten, jede Nachricht mindestens zweimal zu markieren. Und das aus gutem Grund - 4000 von diesen 10.000 müssen weggeworfen werden, weil sich die beiden Analysten unterschiedlich ausgeprägt haben. Bei den verbleibenden 6.000 haben wir die Erfolge des ersten Projekts ziemlich schnell wiederholt:


    • Grundlinie: Wir filtern nicht in irgendeiner Weise - die Genauigkeit beträgt 0,66.
    • Wir vereinen die Klassen aus Sicht des Operators als identisch. Wir erhalten die Genauigkeit von 0,73.
    • Wir entfernen die Klasse "Andere" - die Genauigkeit steigt auf 0,79.

    Das Modell ist fertig, jetzt müssen Sie einen Skriptbaum zeichnen. Aus Gründen, die wir nicht erklären wollen, hatten wir keinen Zugriff auf die Skripts der Bedienerantworten. Wir waren nicht verblüfft und gaben vor, Benutzer zu sein, und für ein paar Stunden im Feld sammelten wir Antwortvorlagen und stellten für alle Gelegenheiten die Fragen der Bediener. Dekorierte sie in einem Baum, verpackte in einem Bot und ging zum Testen. Kunde genehmigt


    Schlussfolgerungen oder diese Erfahrung hat gezeigt:


    • Sie können mit Teilen des Modells (Vorverarbeitung, Vektorisierung, Klassifizierung usw.) separat experimentieren.
    • XGBoost regiert immer noch, auch wenn Sie etwas Ungewöhnliches von ihm brauchen, haben Sie Probleme.
    • Der Benutzer ist ein Peripheriegerät mit zufälliger Eingabe, daher müssen die Benutzerdaten bereinigt werden.
    • Die iterative Anreicherung ist cool, wenn auch gefährlich.
    • Иногда стоит отдать данные обратно на разметку клиенту. Но не забывайте ему помочь получить качественный результат.

    To be concluded.


    Jetzt auch beliebt: