Wie kann man in digitalen WorldSkills gewinnen? An einem praktischen Beispiel

    Hi, Habr!

    Im Dezember belegte unser Kollege aus der Abteilung Advanced Analytics, Leonid Sherstyuk, den ersten Platz in der Kompetenz Machine Learning und Big Data bei der zweiten Branchenmeisterschaft DigitalSkills. Dies ist ein "digitaler" Zweig bekannter Wettbewerbe, die von WorldSkills Russia organisiert werden. Mehr als 200 Personen nahmen an der Meisterschaft teil, wetteiferten um Führung in 25 digitalen Kompetenzen - Unternehmensschutz gegen interne Bedrohungen der Informationssicherheit, Internet-Marketing, Entwicklung von Computerspielen und Multimedia-Anwendungen, Quantum-Technologien, Internet der Dinge, Industriedesign usw.



    Als Fall des maschinellen Lernens wurde die Überwachung und Erkennung von Fehlern in KKW-Pipelines, Öl- und Gaspipelines unter Verwendung eines halbautomatischen Ultraschallinspektionssystems vorgeschlagen.

    Leonid wird darüber berichten, was im Wettbewerb war und wie es ihm gelungen ist, unter der Kürzung zu gewinnen.

    WorldSkills ist eine internationale Organisation, die Wettbewerbe rund um die Welt organisiert. Traditionell nahmen Vertreter von Industrieunternehmen und Studenten einschlägiger Universitäten an diesen Wettbewerben teil und demonstrierten ihre Fähigkeiten in Arbeitsspezialitäten. Vor kurzem erschienen digitale Nominierungen im Wettbewerb, in dem junge Spezialisten in den Fähigkeiten des Roboterbaus, der Anwendungsentwicklung, der Informationssicherheit und in anderen Berufen miteinander konkurrieren, die Sie nicht als Arbeiter bezeichnen können. In einer dieser Nominierungen - Maschinelles Lernen und Arbeiten mit Big Data - nahm ich in Kazan am Wettbewerb DigitalSkills unter der Schirmherrschaft des WS teil.

    Da die Kompetenz für den Wettbewerb neu ist, konnte ich mir kaum vorstellen, was mich erwartet. Für den Fall habe ich alles wiederholt, was ich über die Arbeit mit Datenbanken und verteiltem Computing, Metriken und Lernalgorithmen, statistischen Kriterien und Vorverarbeitungsverfahren weiß. Da ich mit den ungefähren Bewertungskriterien vertraut war, wusste ich nicht, wie es in 6 kurzen Sitzungen möglich ist, mit Hadoop zusammenzuarbeiten und einen Chat-Bot zu erstellen.

    Der gesamte Wettbewerb dauert 3 Tage in 6 Sitzungen. Jede Sitzung besteht aus 3 Stunden mit einer Pause, für die Sie mehrere Aufgaben ausführen müssen, die sinnvoll miteinander verbunden sind. Auf den ersten Blick scheint die Zeit recht genug zu sein, aber in Wirklichkeit war ein hektisches Tempo erforderlich, um Zeit für alles zu haben, was geplant war.
    Beim Wettbewerb wurde erwartet, dass mit Big Data nicht gearbeitet werden sollte, und der gesamte Aufgabenpool wurde auf die Analyse eines begrenzten Datenbestands reduziert.

    Im Wesentlichen wurden wir gebeten, den Weg eines Veranstalters zu wiederholen, zu dem die Kunden mit ihren Problemen und Daten kamen und von dem sie innerhalb weniger Wochen auf ein kommerzielles Angebot warteten.

    Wir haben mit den Daten des LS (dem System der halbautomatischen Ultraschallprüfung) gearbeitet. Das System soll die Nähte in der Rohrleitung auf Risse und Defekte prüfen. Die Installation selbst basiert auf einer Schiene, die auf dem Rohr installiert ist, und bei jedem Schritt werden 16 Messungen durchgeführt. Unter idealen Bedingungen und ohne Fehler sollten einige Sensoren das maximale Signal gegeben haben, andere - Null; In Wirklichkeit waren die Daten sehr laut und die Beantwortung der Frage, ob an einem bestimmten Ort ein Defekt vorliegt, wurde zu einer nicht trivialen Aufgabe.


    Installation des BCD-Systems

    Der erste Tag war der Kenntnis der Daten, ihrer Reinigung und der Erstellung von beschreibenden Statistiken gewidmet. Es wurden nur minimale Hintergrundinformationen über die Installation und die Art der an das Gerät angeschlossenen Sensoren gegeben. Zusätzlich zur Datenvorverarbeitung mussten wir feststellen, welche Art von Sensoren sich auf dem Instrument befinden und wie sie sich befinden.


    Datenbeispiel: So sehen die zugehörigen Sensoren aus: Die

    Hauptvorverarbeitung besteht darin, Messungen durch einen gleitenden Durchschnitt zu ersetzen. Bei einem zu großen Fenster besteht die Gefahr, dass zu viele Informationen verloren gehen. Korrelationen, die zur Bestimmung des Typs beitragen, sind jedoch offensichtlicher. Einige Verbindungen waren auffällig und ohne Vorbehandlung; Es war jedoch keine Zeit, die Rohdaten aufmerksam zu untersuchen. Daher ist es unmöglich, auf Korrelogramme zu verzichten.


    Korrelationsmatrix

    Auf dieser Matrix sind zwei Sensoren entlang der Diagonale sichtbar, die eng miteinander verwandt sind und invers korrelierte Variablen. All dies half bei der Bestimmung der Sensortypen.

    Der letzte obligatorische Punkt war, die Sensoren auf eine Koordinate zu reduzieren. Da das Messgerät wesentlich mehr als ein Messschritt ist und die Sensoren über das gesamte Instrument verteilt sind, war dies ein zwingender Schritt, bevor die Daten für das Training verwendet werden.

    \
    Lage der Sensoren an der Installation

    Das Installationsdiagramm der Sensoren am Gerät zeigt, dass wir die Abstände zwischen den drei Sensorgruppen ermitteln müssen. Der einfachste und schnellste Weg besteht darin, festzustellen, auf welchem ​​Segment des Instruments sich jeder Sensor befinden sollte, und dann nach der maximalen Korrelation zu suchen, wobei ein Teil der Messungen um einen Schritt verschoben wird.

    Diese Phase wurde durch die Tatsache verkompliziert, dass meine Annahmen über den Sensortyp nicht garantiert wurden. Daher musste ich alle Korrelationen, Typen und Schemata durchsehen und in einem einzigen konsistenten System verknüpfen.

    Am zweiten Tag mussten wir Daten für das Training und Clustering nach Punkten vorbereiten und dann einen Klassifikator erstellen.

    Während der Vorbereitung der Daten entfernte ich zu korrelierte Messwerte und fügte als synthetisches Merkmal einen gleitenden Durchschnitt, eine Ableitung und einen Z-Score hinzu. Zweifellos war es bei der Synthese neuer Variablen möglich, sich weit auszuspielen, aber die Zeit hat ihre eigenen Grenzen gesetzt.

    Clustering könnte dazu beitragen, die Fehlerpunkte von allen anderen zu trennen. Ich habe 3 Methoden ausprobiert: K-Means, Birch und DBScan, aber leider gab keine von ihnen ein gutes Ergebnis.

    Für den Vorhersagealgorithmus wurde uns vollständige Freiheit gegeben; fragte nur das Format, das in der Ausgabe stehen sollte. Der Algorithmus sollte eine Tabelle (oder dazu reduzierbare Daten) bereitstellen, in der eine Zeile einem Riss und den Spalten deren Eigenschaften (wie Länge, Breite, Typ und Seite) entspricht. Es schien mir die einfachste Option, bei der wir für jeden Punkt der Testprobe eine Vorhersage treffen und dann die benachbarten Punkte zu einem Riss zusammenfassen. In der Folge habe ich drei Klassifikatoren erstellt, die folgende Fragen beantworten: Auf welcher Seite der Naht befindet sich der Fehler, wie tief ist er und welcher Typ ist er (längs oder quer).

    Hier fällt die Tiefe auf, die die Regression vorhergesagt haben sollte; In der markierten Stichprobe fand ich jedoch nur 5 eindeutige Tiefen, sodass ich diese Vereinfachung für gültig hielt.


    Metriken zur Bewertung der Leistung von Algorithmen

    Von allen Algorithmen (ich habe es geschafft, logistische Regression, einen Entscheidungsbaum und einen Gradientenschub zu testen), war der beste Anstieg erwartungsgemäß der beste. Die Metriken sind zweifellos sehr angenehm, aber es ist ziemlich schwierig, die Leistung von Algorithmen ohne Ergebnis einer neuen Testprobe zu bewerten. Die Organisatoren kehrten nie mit spezifischen Metriken zurück und beschränkten sich nur auf einen allgemeinen Kommentar, den niemand mit dem Test sowie mit einer verspäteten Stichprobe gemeistert hatte.


    Fehlermatrix zum Boosting

    Insgesamt war ich mit den Ergebnissen zufrieden. Insbesondere hat sich die Reduktion der Höhe auf eine kategoriale Variable bewährt.

    Am letzten Tag mussten wir die geschulten Algorithmen in einem Produkt zusammenfassen, das ein potenzieller Kunde verwenden konnte, und eine Präsentation unserer unternehmensbereiten Lösung vorbereiten.

    Hier half mir der Perfektionismus, relativ sauberen Code zu schreiben, der auch in kurzer Zeit nicht fehlte. Aus vorgefertigten Codeteilen kam der Prototyp schnell zusammen, und ich hatte Zeit, Fehler zu debuggen. Im Gegensatz zu den vorherigen Stufen spielte hier die Entscheidung die wichtigste Rolle und nicht die Erfüllung der formalen Kriterien.


    Das fertige Produkt ist ein CLI-Dienstprogramm.

    Am Ende der Sitzung hatte ich ein CLI-Dienstprogramm, das den Quellordner als Eingabe übernimmt und die Tabellen mit den Ergebnissen der Vorhersage in einer für den Technologen geeigneten Form zurückgibt.

    In der Endphase erhielt ich die Gelegenheit, über meine Erfolge zu berichten und zu sehen, was andere Teilnehmer annahmen. Selbst unter strengen Kriterien waren unsere Lösungen völlig anders - jemand, der erfolgreich Clustering hatte, andere verwendeten gekonnt lineare Methoden. Während der Präsentationen konzentrierten sich die Teilnehmer auf ihre Stärken - einige verkauften das Produkt, andere vertieften sich in technische Details. Es gab schöne Grafiken und adaptive Schnittstellen für die Lösung.


    Der Hauptvorteil meiner Entscheidung wurde auf eine Folie gelegt:

    Was kann man über den Wettbewerb insgesamt sagen?

    Wettbewerbe dieser Art sind eine großartige Gelegenheit, um herauszufinden, wie schnell Sie typische Aufgaben erledigen können. Die Kriterien wurden so aufgestellt, dass nicht derjenige, der die besten Ergebnisse erzielt hat (wie es zum Beispiel bei Kaggle geschieht), mehr Punkte erhält, sondern wer am ehesten typische Operationen für die tägliche Arbeit in der Industrie durchführt. Meiner Meinung nach können Teilnahme und Sieg an solchen Wettbewerben einen potenziellen Arbeitgeber ebenso überzeugen wie Erfahrung in der Branche, bei Hackathons und Kaggle.

    Lenonid Sherstyuk,
    Datenanalytiker, Advanced Analytics, SIBUR

    Jetzt auch beliebt: