rxOneClassSvm: OneClass SVM

Machine Learning: einklassige SVM (Support Vector Machines)

Verwendung

  rxOneClassSvm(formula = NULL, data, cacheSize = 100, kernel = rbfKernel(),
    epsilon = 0.001, nu = 0.1, shrink = TRUE, normalize = "auto",
    mlTransforms = NULL, mlTransformVars = NULL, rowSelection = NULL,
    transforms = NULL, transformObjects = NULL, transformFunc = NULL,
    transformVars = NULL, transformPackages = NULL, transformEnvir = NULL,
    blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

Argumente

formula

Die Formel, wie in rxFormula beschrieben. Interaktionsterme und F() werden derzeit in MicrosoftML nicht unterstützt.

data

Ein Datenquellenobjekt oder eine Zeichenfolge, die eine .xdf-Datei oder ein Datenrahmenobjekt angibt.

cacheSize

Die maximale Größe in MB des Caches, in dem die Trainingsdaten gespeichert werden. Erhöhen Sie diesen Wert für große Trainingsdatasets. Der Standardwert ist 100 MB.

kernel

Eine Zeichenfolge, die den Kernel darstellt, der zum Berechnen innerer Produkte verwendet wird. Weitere Informationen finden Sie unter maKernel. Die folgenden Optionen sind verfügbar:

  • rbfKernel(): Radialer Basisfunktionskernel. Dessen Parameter steht für gamma im Term exp(-gamma|x-y|^2. Falls nicht angegeben, ist der Standardwert 1 dividiert durch die Anzahl der verwendeten Features. Beispiel: rbfKernel(gamma = .1). Dies ist der Standardwert.
  • linearKernel(): linearer Kernel.
  • polynomialKernel(): Polynomkernel mit den Parameternamen a, bias und deg im Term (a*<x,y> + bias)^deg. bias, der Standardwert ist 0. Der Grad, deg, ist standardmäßig 3. Wenn a nicht angegeben ist, wird der Wert auf 1 dividiert durch die Anzahl der Features festgelegt. Beispiel: maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel(): Sigmoidkernel mit Parameternamen gamma und coef0 im Term tanh(gamma*<x,y> + coef0). gamma, Standardwert 1 dividiert durch die Anzahl der Features. Dieser Parameter coef0 hat den Standardwert 0. Beispiel: sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

Der Schwellenwert für Optimierungskonvergenz. Wenn die Verbesserung zwischen Iterationen kleiner als der Schwellenwert ist, wird der Algorithmus beendet und das aktuelle Modell zurückgegeben. Der Wert muss größer oder gleich .Machine$double.eps sein. Der Standardwert ist 0,001.

nu

Der Kompromiss zwischen dem Anteil der Ausreißer und der Anzahl der Stützvektoren (dargestellt durch den griechischen Buchstaben nu). Muss zwischen 0 und 1 liegen, in der Regel zwischen 0,1 und 0,5. Der Standardwert ist 0,1.

shrink

Verwendet, falls TRUE, die verkleinernde Heuristik. In diesem Fall werden einige Stichproben während des Trainingsverfahrens „verkleinert“, was das Training beschleunigen kann. Der Standardwert ist TRUE.

normalize

Gibt den Typ der verwendeten automatischen Normalisierung an:

  • "auto": Wenn eine Normalisierung erforderlich ist, erfolgt sie automatisch. Dies ist die Standardoption.
  • "no": Es erfolgt keine Normalisierung.
  • "yes": Es erfolgt eine Normalisierung.
  • "warn": Wenn eine Normalisierung erforderlich ist, wird eine Warnmeldung angezeigt, ohne dass die Normalisierung erfolgt.
    Bei der Normalisierung werden unterschiedliche Datenbereiche anhand einer Standardskala neu skaliert. Die Featureskalierung stellt sicher, dass die Abstände zwischen den Datenpunkten proportional sind und ermöglicht verschiedene Optimierungsmethoden wie den Gradientenabstieg, um wesentlich schneller zu konvergieren. Wenn eine Normalisierung erfolgt, wird die Normalisierungsfunktion MaxMin verwendet. Sie normalisiert Werte im Intervall [a, b], wobei gilt: -1 <= a <= 0 und 0 <= b <= 1 und b - a = 1. Diese Normalisierungsfunktion behält geringe Datendichte bei, indem 0 zu 0 zugeordnet wird.

mlTransforms

Gibt eine Liste von MicrosoftML-Transformationen an, die vor dem Training für die Daten erfolgen sollen, oder NULL, wenn keine Transformationen erfolgen sollen. Für unterstützte Transformationen siehe featurizeText, categorical und categoricalHash. Diese Transformationen werden nach allen angegebenen R-Transformationen ausgeführt. Der Standardwert ist NULL.

mlTransformVars

Gibt einen Zeichenvektor von Variablennamen an, die in mlTransforms verwendet werden sollen, oder NULL, wenn keine verwendet werden sollen. Standardwert: NULL.

rowSelection

Gibt die Zeilen (Beobachtungen) aus dem Dataset an, die vom Modell verwendet werden sollen, mit dem Namen einer logischen Variablen aus dem Dataset (in Anführungszeichen) oder mit einem logischen Ausdruck unter Verwendung von Variablen im Dataset. rowSelection = "old" verwendet z. B. nur Beobachtungen, bei denen TRUE der Wert der Variablen old ist. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) verwendet nur Beobachtungen, bei denen der Wert der Variablen age zwischen 20 und 65 liegt und der Wert von log der Variablen income größer als 10 ist. Die Zeilenauswahl erfolgt nach der Verarbeitung von Datentransformationen (siehe die Argumente transforms oder transformFunc). Wie bei allen Ausdrücken kann rowSelection außerhalb des Funktionsaufrufs mit der expression-Funktion definiert werden.

transforms

Ein Ausdruck der Form list(name = expression, ``...), der die erste Runde der Variablentransformationen darstellt. Wie bei allen Ausdrücken kann transforms (oder rowSelection) außerhalb des Funktionsaufrufs mit der expression-Funktion definiert werden.

transformObjects

Eine benannte Liste, die Objekte enthält, auf die mit transforms, transformsFunc und rowSelection verwiesen werden kann.

transformFunc

Die Variablentransformationsfunktionen. Weitere Informationen finden Sie unter „rxTransform“.

transformVars

Ein Zeichenvektor von Eingabedatasetvariablen, die für die Transformationsfunktion erforderlich sind. Weitere Informationen finden Sie unter „rxTransform“.

transformPackages

Ein Zeichenvektor, der zusätzliche R-Pakete (außerhalb der in rxGetOption("transformPackages") angegebenen) angibt, die für die Verwendung in Variablentransformationsfunktionen verfügbar gemacht und im Voraus geladen werden sollen. Zum Beispiel solche, die explizit in RevoScaleR-Funktionen über ihre Argumente transforms und transformFunc definiert sind oder solche, die implizit über ihre Argumente formula oder rowSelection definiert sind. Das Argument transformPackages kann auch NULL lauten, was angibt, dass keine Pakete außerhalb von rxGetOption("transformPackages") im Voraus geladen werden.

transformEnvir

Eine benutzerdefinierte Umgebung, die als übergeordnete Umgebung für alle intern entwickelten Umgebungen dient und für die Transformation von Variablendaten verwendet wird. Falls transformEnvir = NULL, wird stattdessen eine neue „hash“-Umgebung mit der übergeordneten baseenv() verwendet.

blocksPerRead

Gibt die Anzahl der Blöcke an, die für jeden Datenblock gelesen werden, der aus der Datenquelle gelesen wird.

reportProgress

Ein ganzzahliger Wert, der die Berichtsebene für den Status der Zeilenverarbeitung angibt:

  • 0: Es wird kein Status gemeldet.
  • 1: Die Anzahl der verarbeiteten Zeilen wird ausgegeben und aktualisiert.
  • 2: Verarbeitete Zeilen und Zeitsteuerungen werden gemeldet.
  • 3: Verarbeitete Zeilen und alle Zeitsteuerungen werden gemeldet.

verbose

Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt. Falls 0, erfolgt während der Berechnungen keine ausführliche Ausgabe. Ganzzahlige Werte von 1 bis 4 liefern zunehmend mehr Informationen.

computeContext

Legt den Kontext fest, in dem Berechnungen erfolgen, angegeben mit einer gültigen Angabe für RxComputeContext. Derzeit werden lokale und RxInSqlServer-Computekontexte unterstützt.

ensemble

Steuerungsparameter für die Bildung von Ensembles.

...

Zusätzliche Argumente, die direkt an die Microsoft-Compute-Engine übergeben werden sollen.

Details

Ziel der Anomalieerkennung ist, Ausreißer zu ermitteln, die nicht zu einer bestimmten Zielklasse gehören. Dieser SVM-Typ ist einklassig, da das Trainingsdataset nur Beispiele aus der Zielklasse enthält. Er leitet daraus ab, welche Eigenschaften für die Objekte der Zielklasse normal sind, und sagt anhand dieser Eigenschaften voraus, welche Beispiele sich von den normalen Beispielen unterscheiden. Dies ist für die Erkennung von Anomalien nützlich, da die Knappheit von Trainingsbeispielen das entscheidende Merkmal von Anomalien ist. In der Regel gibt es nur sehr wenige Beispiele für das Eindringen in ein Netzwerk, Betrug oder andere Arten anormalen Verhaltens.

Wert

rxOneClassSvm: Ein rxOneClassSvm-Objekt mit dem trainierten Modell.

OneClassSvm: Ein Learnerspezifikationsobjekt der Klasse maml für den OneClass Svm-Trainer.

Notizen

Dieser Algorithmus ist ein Singlethread-Algorithmus, der immer versucht, das gesamte Dataset in den Arbeitsspeicher zu laden.

Autor(en)

Microsoft Corporation Microsoft Technical Support

References

Anomaly detection

Azure Machine Learning Studio (classic): One-Class Support Vector Machine

Support of a High-Dimensional Distribution

Support Vector Algorithms

for Support Vector Machines

Siehe auch

rbfKernel, linearKernel, polynomialKernel, sigmoidKernelrxFastTrees,, rxFastForest, rxFastLinear, rxLogisticRegression, rxNeuralNet, featurizeText,categorical,categoricalHash,rxPredict.mlModel.

Beispiele


 # Estimate a One-Class SVM model
 trainRows <- c(1:30, 51:80, 101:130)
 testRows = !(1:150 %in% trainRows)
 trainIris <- iris[trainRows,]
 testIris <- iris[testRows,]

 svmModel <- rxOneClassSvm(
     formula = ~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     data = trainIris)

 # Add additional non-iris data to the test data set
 testIris$isIris <- 1
 notIris <- data.frame(
     Sepal.Length = c(2.5, 2.6),
     Sepal.Width = c(.75, .9),
     Petal.Length = c(2.5, 2.5),
     Petal.Width = c(.8, .7),
     Species = c("not iris", "not iris"),
     isIris = 0)
 testIris <- rbind(testIris, notIris)  

 scoreDF <- rxPredict(svmModel, 
      data = testIris, extraVarsToWrite = "isIris")

 # Look at the last few observations
 tail(scoreDF)
 # Look at average scores conditioned by 'isIris'
 rxCube(Score ~ F(isIris), data = scoreDF)