Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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
Bijzonderheden
SVM van één klasse is een algoritme voor anomaliedetectie. Het doel van anomaliedetectie is het identificeren van uitbijters die niet tot een bepaalde doelklasse behoren. Dit type SVM is één klasse omdat de trainingsset alleen voorbeelden van de doelklasse bevat. Hiermee wordt afgeleid welke eigenschappen normaal zijn voor de objecten in de doelklasse en uit deze eigenschappen wordt voorspeld welke voorbeelden in tegenstelling tot de normale voorbeelden zijn. Dit is handig voor anomaliedetectie omdat de tekorten van trainingsvoorbeelden het definiërende karakter van afwijkingen zijn: meestal zijn er zeer weinig voorbeelden van netwerkinbraak, fraude of andere soorten afwijkend gedrag.
Arguments
formule
De formule zoals beschreven in revoscalepy.rx_formula.
Interactietermen en F() worden momenteel niet ondersteund in microsoftml.
gegevens
Een gegevensbronobject of een tekenreeks die een .xdf-bestand of een gegevensframeobject opgeeft.
cache_size
De maximale grootte in MB van de cache waarin de trainingsgegevens worden opgeslagen. Verhoog dit voor grote trainingssets. De standaardwaarde is 100 MB.
kern
Een tekenreeks die de kernel vertegenwoordigt die wordt gebruikt voor het berekenen van interne producten. Zie ma_kernel() voor meer informatie. De volgende opties zijn beschikbaar:
rbf_kernel: Radiale basisfunctie kernel. De parameter vertegenwoordigtgammain de termexp(-gamma|x-y|^2. Als dit niet is opgegeven, wordt deze standaard1gedeeld door het aantal gebruikte functies. Bijvoorbeeld:rbf_kernel(gamma = .1). Dit is de standaardwaarde.linear_kernel: Lineaire kernel.polynomial_kernel: Polynomiale kernel met parameternamena,biasendegin de term(a*<x,y> + bias)^deg. Debiasstandaardwaarde is0. De graad,degstandaard ingesteld op3. Alsadit niet is opgegeven, wordt deze ingesteld op1gedeeld door het aantal functies.sigmoid_kernel: Sigmoid kernel met parameternamengammaencoef0in de termtanh(gamma*<x,y> + coef0).gamma, wordt1standaard gedeeld door het aantal functies. De parametercoef0wordt standaard ingesteld op0. Bijvoorbeeld:sigmoid_kernel(gamma = .1, coef0 = 0).
Epsilon
De drempelwaarde voor de convergentie van de optimizer. Als de verbetering tussen iteraties kleiner is dan de drempelwaarde, stopt het algoritme en retourneert het huidige model. De waarde moet groter dan of gelijk aan numpy.finfo(double).epszijn. De standaardwaarde is 0,001.
nu
De afweging tussen de fractie van uitbijters en het aantal steunvectoren (vertegenwoordigd door de Griekse letter nu). Moet tussen 0 en 1 zijn, meestal tussen 0,1 en 0,5. De standaardwaarde is 0,1.
shrink
Maakt gebruik van de verkleinende heuristiek als True. In dit geval zullen sommige steekproeven tijdens de trainingsprocedure worden "verkleind", waardoor de training kan worden versneld. De standaardwaarde is True.
Normalize
Hiermee geeft u het type automatische normalisatie gebruikt:
"Auto": als normalisatie nodig is, wordt deze automatisch uitgevoerd. Dit is de standaardoptie."No": er wordt geen normalisatie uitgevoerd."Yes": normalisatie wordt uitgevoerd."Warn": als normalisatie nodig is, wordt er een waarschuwingsbericht weergegeven, maar wordt er geen normalisatie uitgevoerd.
Normalisatie schaalt verschillende gegevensbereiken opnieuw op een standaardschaal. Door het schalen van functies worden de afstanden tussen gegevenspunten proportioneel en kunnen verschillende optimalisatiemethoden, zoals gradiëntafname, veel sneller worden geconvergeerd. Als normalisatie wordt uitgevoerd, wordt een MaxMin normalizer gebruikt. Het normaliseert waarden in een interval [a, b] waar -1 <= a <= 0 en 0 <= b <= 1 .b - a = 1 Deze normalizer behoudt spaarzaamheid door nul aan nul toe te brengen.
ml_transforms
Hiermee geeft u een lijst op met MicrosoftML-transformaties die moeten worden uitgevoerd op de gegevens vóór de training of Geen als er geen transformaties moeten worden uitgevoerd. Zie featurize_text, categoricalen categorical_hash, voor transformaties die worden ondersteund.
Deze transformaties worden uitgevoerd na opgegeven Python-transformaties.
De standaardwaarde is None.
ml_transform_vars
Hiermee geeft u een tekenvector op van namen van variabelen die moeten worden gebruikt in ml_transforms of Geen als er geen moet worden gebruikt.
De standaardwaarde is None.
row_selection
NIET ONDERSTEUND. Hiermee geeft u de rijen (waarnemingen) op uit de gegevensset die door het model moeten worden gebruikt met de naam van een logische variabele uit de gegevensset (tussen aanhalingstekens) of met een logische expressie met behulp van variabelen in de gegevensset. Voorbeeld:
row_selection = "old"gebruikt alleen waarnemingen waarin de waarde van de variabeleoldisTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)gebruikt alleen waarnemingen waarbij de waarde van deagevariabele tussen 20 en 65 ligt en de waarde van delogincomevariabele groter is dan 10.
De rijselectie wordt uitgevoerd na het verwerken van gegevenstransformaties (zie de argumenten transforms of transform_function). Net als bij alle expressies row_selection kunt u buiten de functieoproep definiëren met behulp van de expression functie.
Transformeert
NIET ONDERSTEUND. Een expressie van het formulier dat de eerste ronde van variabeletransformaties vertegenwoordigt. Net als bij alle expressies transforms kan (of row_selection) buiten de functie-aanroep worden gedefinieerd met behulp van de expression functie.
transform_objects
NIET ONDERSTEUND. Een benoemde lijst met objecten waarnaar kan worden verwezen door transforms, transform_functionen row_selection.
transform_function
De functie voor variabeletransformatie.
transform_variables
Een tekenvector van variabelen voor invoergegevenssets die nodig zijn voor de transformatiefunctie.
transform_packages
NIET ONDERSTEUND. Een tekenvector die extra Python-pakketten opgeeft (buiten de pakketten die zijn opgegeven in RxOptions.get_option("transform_packages")) die beschikbaar moeten worden gemaakt en vooraf moeten worden geladen voor gebruik in functies voor variabele transformatie.
Bijvoorbeeld degenen die expliciet zijn gedefinieerd in revoscalepy-functies via hun transforms en transform_function argumenten of die impliciet zijn gedefinieerd via hun formula of row_selection argumenten. Het transform_packages argument kan ook Geen zijn, wat aangeeft dat er geen pakketten buiten RxOptions.get_option("transform_packages") zijn geladen.
transform_environment
NIET ONDERSTEUND. Een door de gebruiker gedefinieerde omgeving die als bovenliggend element fungeert voor alle omgevingen die intern zijn ontwikkeld en worden gebruikt voor variabele gegevenstransformatie.
Als transform_environment = Nonein plaats daarvan een nieuwe hash-omgeving met bovenliggende revoscalepy.baseenv wordt gebruikt.
blocks_per_read
Hiermee geeft u het aantal blokken op dat moet worden gelezen voor elk segment gegevens dat uit de gegevensbron wordt gelezen.
report_progress
Een geheel getal dat het rapportageniveau voor de voortgang van de rijverwerking aangeeft:
0: er wordt geen voortgang gerapporteerd.1: het aantal verwerkte rijen wordt afgedrukt en bijgewerkt.2: rijen verwerkt en tijdsinstellingen worden gerapporteerd.3: rijen verwerkt en alle tijdsinstellingen worden gerapporteerd.
verbose
Een geheel getal dat de gewenste hoeveelheid uitvoer aangeeft.
Als 0er tijdens berekeningen geen uitgebreide uitvoer wordt afgedrukt. Gehele getallen van waaruit 14 grotere hoeveelheden informatie moeten worden opgegeven.
compute_context
Hiermee stelt u de context in waarin berekeningen worden uitgevoerd, opgegeven met een geldige revoscalepy. RxComputeContext. Momenteel lokaal en opnieuw schalen. RxInSqlServer-rekencontexten worden ondersteund.
Ensemble
Besturingsparameters voor het opgeven van overeenkomsten.
Retouren
Een OneClassSvm object met het getrainde model.
Opmerking
Dit algoritme is één threaded en probeert altijd de volledige gegevensset in het geheugen te laden.
Zie ook
linear_kernel, , polynomial_kernelrbf_kernel, , sigmoid_kernel, . rx_predict
References
Microsoft Azure Machine Learning Studio (klassiek): One-Class Support Vector Machine
De ondersteuning van een High-Dimensional-distributie schatten
Nieuwe Support Vector-algoritmen
BIBLIOTHEKENVM: Een bibliotheek voor Support Vector Machines
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())
Uitvoer:
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