ML.NET 0.7 (Maschinelles Lernen .NET)

Published on November 12, 2018

ML.NET 0.7 (Maschinelles Lernen .NET)

Ursprünglicher Autor: Das ML.NET Team
  • Übersetzung
Wir freuen uns, die Veröffentlichung von ML.NET 0.7 ankündigen zu können - der neuesten Version eines plattformübergreifenden und Open-Source-Lernsystems für .NET-Entwickler ( ML.NET 0.1 wurde am // Build 2018 veröffentlicht ). Diese Version soll die Funktionalität der Plattform erweitern. Mehr unter dem Schnitt!



Supportsystemempfehlungen mit Matrix Factorization




Mit Empfehlungssystemen können Sie personalisierte Empfehlungen für Produkte im Katalog, Songs, Filme usw. erstellen. Die Unterstützung für den Aufbau von Empfehlungssystemen in ML.NET wurde durch die Matrixfaktorisierung (MF) verbessert. Dies ist ein beliebter Ansatz für Empfehlungen, wenn Sie Daten darüber erhalten, wie Benutzer bestimmte Elemente im Katalog auswerten. Beispielsweise wissen Sie vielleicht, wie Benutzer bestimmte Filme bewerten. Dank dieses Wissens können wir andere Filme empfehlen, die sie wahrscheinlich auch sehen möchten.

Wir haben MF zu ML.NET hinzugefügt, da es oftmals viel schneller als Field-Aware Factorization Machines (die wir zu ML.NET 0.3 hinzugefügt haben) ist und stattdessen numerische Bewertungen (z. B. 1 bis 5 Sterne) beibehalten kann binäre Werte (mögen oder nicht mögen). Obwohl wir MF hinzugefügt haben, können Sie FFM weiterhin verwenden, wenn Sie andere Informationen außerhalb der Bewertung verwenden möchten, die der Benutzer dem Element zuweist (z. B. Filmgenre, Datum der Filmveröffentlichung, Benutzerprofil). Eine detailliertere Diskussion der Unterschiede finden Sie hier .

Ein Beispiel für die Verwendung von MF finden Sie hier.. Dieses Beispiel ist allgemein, aber Sie können sich vorstellen, dass die Zeilen der Matrix den Benutzern entsprechen, die Spalten der Matrix den Filmen entsprechen und die Werte der Matrizen den Bewertungen entsprechen. Diese Matrix ist eher selten, da die Benutzer nur eine kleine Teilmenge des Katalogs auswerten.

MF ML.NET verwendet LIBMF .

Anomalieerkennungsszenarien - Erkennung ungewöhnlicher Ereignisse




Die Erkennung von Anomalien identifiziert ungewöhnliche Werte oder Ereignisse. Es wird in Szenarien wie Betrugserkennung (Erkennung verdächtiger Kreditkartentransaktionen) und Serverüberwachung (Erkennung ungewöhnlicher Aktivitäten) verwendet.

Mit ML.NET 0.7 können Sie zwei Arten von abnormalem Verhalten erkennen:

  • Spitzenerkennung: Spitzen werden auf plötzliche zeitliche Spitzen in den Werten der Eingangsdaten zurückgeführt. Dies können Ausreißer aufgrund von Fehlfunktionen, Cyberangriffen, viralen Webinhalten usw. sein.
  • Änderungspunkterkennung: Änderungspunkte markieren den Beginn konstanter Abweichungen im Datenverhalten.

Diese Anomalien können bei zwei Datentypen mit unterschiedlichen ML.NET-Komponenten erkannt werden:

  • IidSpikeDetector und IidChangePointDetector werden für Daten verwendet, die aus einer stationären Verteilung stammen (jeder Datenpunkt ist unabhängig vom vorherigen).
  • SsaSpikeDetector und SsaChangePointDetector werden für Daten verwendet, die Komponenten der Saisonalität / des Trends enthalten (möglicherweise zeitlich geordnet, z. B. Produktverkäufe).

Beispielcode für die Erkennung von Anomalien in ML.NET finden Sie hier .

Verbesserte Anpassbarkeit der ML.NET-Pipelines




ML.NET bietet viele Datentransformationen (z. B. Textverarbeitung, Bilder, kategoriale Funktionen usw.). Für einige Anwendungsfälle sind jedoch bestimmte Konvertierungen erforderlich. Jetzt haben wir Unterstützung für benutzerdefinierte Transformationen hinzugefügt, sodass Sie benutzerdefinierte Lösungen problemlos hinzufügen können.

Mit CustomMappingEstimator können Sie Ihre eigenen Datenverarbeitungsmethoden erstellen und in die ML.NET-Pipeline eingeben. So wird es in der Pipeline aussehen:

var estimator = mlContext.Transforms.CustomMapping<MyInput, MyOutput>(MyLambda.MyAction, "MyLambda")
    .Append(...)
    .Append(...)

Im Folgenden finden Sie eine Definition der Funktion dieser benutzerdefinierten Zuordnung. In diesem Beispiel konvertieren wir die Textbezeichnung ("Spam" oder "Ham") in eine logische Bezeichnung ("true" oder "false").

public class MyInput
{
    public string Label { get; set; }
}
public class MyOutput
{
    public bool Label { get; set; }
}
public class MyLambda
{
    [Export("MyLambda")]
    public ITransformer MyTransformer => ML.Transforms.CustomMappingTransformer<MyInput, MyOutput>(MyAction, "MyLambda");
    [Import]
    public MLContext ML { get; set; }
    public static void MyAction(MyInput input, MyOutput output)
    {
        output.Label= input.Label == "spam" ? true : false;
    }
}

Ein vollständigeres Beispiel für CustomMappingEstimator finden Sie hier .

X86-Unterstützung zusätzlich zu x64




In dieser ML.NET-Version können Sie jetzt Machine-Learning-Modelle auf x86 / 32-Bit-Geräten (nur Windows) verwenden. ML.NET war bisher auf x64-Geräte (Windows, Linux und Mac) beschränkt. Bitte beachten Sie, dass einige auf externen Verbindungen basierende Komponenten (z. B. TensorFlow) unter x86-Windows nicht verfügbar sind.

NimbusML - experimentelle Python-Bindung für ML.NET




NimbusML bietet experimentelle Python-Bindungen für ML.NET. Wir haben Feedback von externen Community- und internen Entwicklungsteams bezüglich der Verwendung mehrerer Programmiersprachen erhalten. Wir wollten, dass möglichst viele Menschen ML.NET nutzen.

Mit ML.NET können Datensynths nicht nur Machine-Learning-Modelle in Python verwenden (mit Komponenten, die auch in Scikit-Learn- Pipelines verwendet werden können), sondern auch das Speichern von Modellen, die problemlos in .NET-Anwendungen verwendet werden können (mehr siehe hier ).

Wenn Sie es verpasst haben: Feedback zur neuen API


ML.NET 0.6 verfügt über neue APIs für ML.NET, die eine erhöhte Flexibilität bieten. Diese APIs werden in Version 0.7 und später noch weiterentwickelt, und wir möchten Ihr Feedback erhalten, um das System noch besser zu machen.

Willst du teilnehmen? Feedback zu ML.NET GitHub geben !

Zusätzliche Ressourcen


  • Hier sind die wichtigsten ML.NET-Konzepte zum Verständnis der neuen API.
  • Hier finden Sie eine Anleitung, die zeigt, wie diese APIs für verschiedene vorhandene und neue Szenarien verwendet werden.
  • Link zur API ML.NET mit allen API - Dokumentation finden Sie hier .

Los geht's!




Falls Sie dies noch nicht getan haben, laden Sie ML.NET hier herunter . Und erkunden Sie andere nützliche Ressourcen:


Minute Werbung


Die Jungs aus der AI-Community veranstalten jetzt eine Online-Meisterschaft in Data Science mit einem Preisgeld von 600.000 Rubel. Schließen Sie sich uns an, der Fall könnte Sie interessieren.