Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Usage
microsoftml.rx_oneclass_svm(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], cache_size: float = 100,
kernel: [<function linear_kernel at 0x0000007156EAC8C8>,
<function polynomial_kernel at 0x0000007156EAC950>,
<function rbf_kernel at 0x0000007156EAC7B8>,
<function sigmoid_kernel at 0x0000007156EACA60>] = {'Name': 'RbfKernel',
'Settings': {}}, epsilon: float = 0.001, nu: float = 0.1,
shrink: bool = True, normalize: ['No', 'Warn', 'Auto',
'Yes'] = 'Auto', ml_transforms: list = None,
ml_transform_vars: list = None, row_selection: str = None,
transforms: dict = None, transform_objects: dict = None,
transform_function: str = None,
transform_variables: list = None,
transform_packages: list = None,
transform_environment: dict = None, blocks_per_read: int = None,
report_progress: int = None, verbose: int = 1,
ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)
Description
Machine Learning One Class Support Vector Machines
Einzelheiten
SVM einer Klasse ist ein Algorithmus zur Anomalieerkennung. Ziel der Anomalieerkennung ist es, Ausreißer zu identifizieren, die nicht zu einer Zielklasse gehören. Diese Art von SVM ist eine Klasse, da der Schulungssatz nur Beispiele aus der Zielklasse enthält. Sie leitet ab, welche Eigenschaften für die Objekte in der Zielklasse normal sind, und anhand dieser Eigenschaften wird vorhergesagt, welche Beispiele im Gegensatz zu den normalen Beispielen vorliegen. Dies ist nützlich für die Anomalieerkennung, da die Knappheit von Schulungsbeispielen der definierende Charakter von Anomalien ist: In der Regel gibt es nur sehr wenige Beispiele für Netzwerkangriffe, Betrug oder andere Arten von anomalien verhalten.
Arguments
Formel
Die Formel, wie in revoscalepy.rx_formula beschrieben.
Interaktionsausdrücke und F() werden derzeit in Microsoftml nicht unterstützt.
Daten
Ein Datenquellenobjekt oder eine Zeichenfolge, die eine XDF-Datei oder ein Datenframeobjekt angibt.
cache_size
Die maximale Größe in MB des Caches, in dem die Schulungsdaten gespeichert werden. Erhöhen Sie dies für große Schulungssätze. Der Standardwert ist 100 MB.
Kern
Eine Zeichenfolge, die den Kernel darstellt, der für das Berechnen innerer Produkte verwendet wird. Weitere Informationen finden Sie unter ma_kernel(). Die folgenden Optionen sind verfügbar:
rbf_kernel: Radialer Basisfunktionskern. Der Parameter stellt im Ausdruckexp(-gamma|x-y|^2dargamma. Wenn sie nicht angegeben ist, wird1sie standardmäßig durch die Anzahl der verwendeten Features dividiert. Beispiel:rbf_kernel(gamma = .1). Dies ist der Standardwert.linear_kernel: Linearer Kernel.polynomial_kernel: Polynomischer Kernel mit Parameternamena,biasunddegim Ausdruck(a*<x,y> + bias)^deg. Thebias, defaults to0. Der Grad ,degist standardmäßig auf3. Wennanicht angegeben, wird sie so festgelegt, dass1sie durch die Anzahl der Features geteilt wird.sigmoid_kernel: Sigmoid kernel with parameter namesgammaandcoef0in the termtanh(gamma*<x,y> + coef0).gamma, wird1standardmäßig durch die Anzahl der Features dividiert. Der Parametercoef0ist standardmäßig auf0. Beispiel:sigmoid_kernel(gamma = .1, coef0 = 0).
Epsilon
Der Schwellenwert für die Optimiererkonvergenz. Wenn die Verbesserung zwischen Iterationen kleiner als der Schwellenwert ist, stoppt der Algorithmus und gibt das aktuelle Modell zurück. Der Wert muss größer oder gleich numpy.finfo(double).epssein. Der Standardwert ist 0,001.
Nu
Der Kompromiss zwischen dem Bruchteil der Ausreißer und der Anzahl der Unterstützungsvektoren (dargestellt durch den griechischen Buchstaben nu). Muss zwischen 0 und 1 sein, in der Regel zwischen 0,1 und 0,5. Der Standardwert ist 0,1.
shrink
Verwendet die verkleinerte Heuristik, wenn True. In diesem Fall werden einige Beispiele während des Trainingsverfahrens "zerkleinert" sein, was das Training beschleunigen kann. Der Standardwert ist True.
Normalisieren
Gibt den Typ der verwendeten automatischen Normalisierung an:
"Auto": Wenn die Normalisierung erforderlich ist, wird sie automatisch ausgeführt. Dies ist die Standardauswahl."No": Es wird keine Normalisierung durchgeführt."Yes": Normalisierung wird durchgeführt."Warn": Wenn die Normalisierung erforderlich ist, wird eine Warnmeldung angezeigt, die Normalisierung wird jedoch nicht ausgeführt.
Durch die Normalisierung werden unterschiedliche Datenbereiche auf eine Standardskala skaliert. Die Featureskalierung stellt die Abstände zwischen Datenpunkten proportional dar und ermöglicht verschiedene Optimierungsmethoden wie Farbverlaufsabstieg viel schneller zu konvergen. Wenn die Normalisierung durchgeführt wird, wird ein MaxMin Normalisierer verwendet. Sie normalisiert Werte in einem Intervall [a, b] wobei -1 <= a <= 0 und 0 <= b <= 1 .b - a = 1 Dieser Normalisierer behält Sparsamkeit bei, indem null zu Null zugeordnet wird.
ml_transforms
Gibt eine Liste der MicrosoftML-Transformationen an, die vor dem Training oder none für die Daten ausgeführt werden sollen, wenn keine Transformationen ausgeführt werden sollen. Siehe featurize_text, categoricalund categorical_hash, für Transformationen, die unterstützt werden.
Diese Transformationen werden nach allen angegebenen Python-Transformationen ausgeführt.
Der Standardwert ist None.
ml_transform_vars
Gibt einen Zeichenvektor von Variablennamen an, die verwendet ml_transforms werden sollen, oder "None ", wenn keine verwendet werden soll.
Der Standardwert ist None.
row_selection
NICHT UNTERSTÜTZT. Gibt die Zeilen (Beobachtungen) aus dem Dataset an, die vom Modell mit dem Namen einer logischen Variablen aus dem Dataset (in Anführungszeichen) oder mit einem logischen Ausdruck mithilfe von Variablen im Dataset verwendet werden sollen. Beispiel:
row_selection = "old"verwendet nur Beobachtungen, in denen der Wert der VariablenoldlautetTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)verwendet nur Beobachtungen, in denen der Wert derageVariablen zwischen 20 und 65 liegt und der Wert derlogincomeVariablen größer als 10 ist.
Die Zeilenauswahl erfolgt nach der Verarbeitung von Datentransformationen (siehe die Argumente transforms oder transform_function). Wie bei allen Ausdrücken kann außerhalb des Funktionsaufrufs row_selection mithilfe der expression Funktion definiert werden.
Verwandelt
NICHT UNTERSTÜTZT. Ein Ausdruck des Formulars, das die erste Runde von Variablentransformationen darstellt. Wie bei allen Ausdrücken kann (oder row_selection) außerhalb des Funktionsaufrufs transforms mithilfe der expression Funktion definiert werden.
transform_objects
NICHT UNTERSTÜTZT. Eine benannte Liste, die Objekte enthält, auf die von transforms, und transform_function.row_selection
transform_function
Die Variable Transformationsfunktion.
transform_variables
Ein Zeichenvektor von Eingabedatensatzvariablen, die für die Transformationsfunktion erforderlich sind.
transform_packages
NICHT UNTERSTÜTZT. Ein Zeichenvektor, der zusätzliche Python-Pakete angibt (außerhalb der in ) RxOptions.get_option("transform_packages")zur Verfügung gestellt und für die Verwendung in Variablentransformationsfunktionen vorab geladen werden soll.
Beispielsweise werden diejenigen, die explizit in Revoscalepy-Funktionen über ihre transforms und transform_function Argumente oder implizit über ihre formula Argumente row_selection definiert wurden, definiert. Das transform_packages Argument kann auch "None" sein, das angibt, dass keine Pakete vorgeladen RxOptions.get_option("transform_packages") werden.
transform_environment
NICHT UNTERSTÜTZT. Eine benutzerdefinierte Umgebung, die als übergeordnetes Element für alle Umgebungen dient, die intern entwickelt und für die Variable Datentransformation verwendet werden.
Wenn transform_environment = Nonestattdessen eine neue "Hash"-Umgebung mit übergeordnetem revoscalepy.baseenv verwendet wird.
blocks_per_read
Gibt die Anzahl der zu lesenden Blöcke für jeden Datenabschnitt an, der aus der Datenquelle gelesen werden soll.
report_progress
Ein ganzzahliger Wert, der die Berichtsebene für den Fortschritt der Zeilenverarbeitung angibt:
0: Es wird kein Fortschritt gemeldet.1: Die Anzahl der verarbeiteten Zeilen wird gedruckt und aktualisiert.2: Verarbeitete Zeilen und Anzeigedauern werden gemeldet.3: Verarbeitete Zeilen und alle Anzeigedauern werden gemeldet.
verbose
Ein ganzzahliger Wert, der die gewünschte Ausgabemenge angibt.
Wird 0bei Berechnungen keine ausführliche Ausgabe gedruckt. Ganzzahlige Werte von 1 bis hin zu 4 steigenden Informationsmengen.
compute_context
Legt den Kontext fest, in dem Berechnungen ausgeführt werden, die mit einem gültigen Revoscalepy angegeben werden. RxComputeContext. Derzeit lokal und revoscalepy. RxInSqlServer-Computekontexte werden unterstützt.
Ensemble
Steuerungsparameter für die Ensembling.
Rückkehr
Ein OneClassSvm Objekt mit dem trainierten Modell.
Hinweis
Dieser Algorithmus ist singlethreaded und versucht immer, das gesamte Dataset in den Arbeitsspeicher zu laden.
Siehe auch
linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, . rx_predict
References
Microsoft Azure Machine Learning Studio (klassisch): One-Class Unterstützen des Vektorcomputers
Schätzen der Unterstützung einer High-Dimensional Verteilung
Neue Unterstützungsvektoralgorithmen
LIBSVM: Eine Bibliothek zur Unterstützung von Vektorcomputern
Example
'''
Anomaly Detection.
'''
import numpy
import pandas
from microsoftml import rx_oneclass_svm, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
iris = get_dataset("iris")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
irisdf = iris.as_df()
data_train, data_test = train_test_split(irisdf)
# Estimate a One-Class SVM model
model = rx_oneclass_svm(
formula= "~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width",
data=data_train)
# Add additional non-iris data to the test data set
data_test["isIris"] = 1.0
not_iris = pandas.DataFrame(data=dict(Sepal_Length=[2.5, 2.6],
Sepal_Width=[.75, .9], Petal_Length=[2.5, 2.5],
Petal_Width=[.8, .7], Species=["not iris", "not iris"],
isIris=[0., 0.]))
merged_test = pandas.concat([data_test, not_iris])
scoresdf = rx_predict(model, data=merged_test, extra_vars_to_write=["isIris"])
# Look at the last few observations
print(scoresdf.tail())
Ausgabe:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Using these libsvm parameters: svm_type=2, nu=0.1, cache_size=100, eps=0.001, shrinking=1, kernel_type=2, gamma=0.25, degree=0, coef0=0
Reconstructed gradient.
optimization finished, #iter = 15
obj = 52.905421, rho = 9.506052
nSV = 12, nBSV = 9
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0555122
Elapsed time: 00:00:00.0212389
Beginning processing data.
Rows Read: 40, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0349974
Finished writing 40 rows.
Writing completed.
isIris Score
35 1.0 -0.142141
36 1.0 -0.531449
37 1.0 -0.189874
38 0.0 0.635845
39 0.0 0.555602