Dela via


microsoftml.rx_oneclass_svm: Avvikelseidentifiering

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

Detaljer

Enklassig SVM är en algoritm för avvikelseidentifiering. Målet med avvikelseidentifiering är att identifiera extremvärden som inte tillhör någon målklass. Den här typen av SVM är en klass eftersom träningsuppsättningen endast innehåller exempel från målklassen. Den härleder vilka egenskaper som är normala för objekten i målklassen och från dessa egenskaper förutsäger vilka exempel som är till skillnad från de normala exemplen. Detta är användbart för avvikelseidentifiering eftersom bristen på träningsexempel är det definierande tecknet för avvikelser: vanligtvis finns det mycket få exempel på nätverksintrång, bedrägeri eller andra typer av avvikande beteende.

Arguments

formel

Formeln som beskrivs i revoscalepy.rx_formula. Interaktionsvillkor och F() stöds för närvarande inte i microsoftml.

data

Ett datakällobjekt eller en teckensträng som anger en .xdf-fil eller ett dataramobjekt.

cache_size

Maximal storlek i MB för cacheminnet som lagrar träningsdata. Öka detta för stora träningsuppsättningar. Standardvärdet är 100 MB.

kärna

En teckensträng som representerar den kernel som används för att beräkna inre produkter. Mer information finns i ma_kernel(). Följande alternativ är tillgängliga:

  • rbf_kernel: Funktionskärnan radiell bas. Parametern representerargamma i termen exp(-gamma|x-y|^2. Om det inte anges divideras 1 det som standard med antalet funktioner som används. Till exempel rbf_kernel(gamma = .1). Det här är standardvärdet.

  • linear_kernel: Linjär kernel.

  • polynomial_kernel: Polynom kernel med parameternamnen a, biasoch deg i termen (a*<x,y> + bias)^deg. Standardvärdet biasär 0. Grad, deg, är standardvärdet 3. Om a inte anges är det inställt på 1 dividerat med antalet funktioner.

  • sigmoid_kernel: Sigmoid-kernel med parameternamn gamma och coef0 i termen tanh(gamma*<x,y> + coef0). gamma, som standard divideras 1 med antalet funktioner. Parametern coef0 är 0som standard . Till exempel sigmoid_kernel(gamma = .1, coef0 = 0).

Epsilon

Tröskelvärdet för optimerarkonvergens. Om förbättringen mellan iterationer är mindre än tröskelvärdet stoppas algoritmen och returnerar den aktuella modellen. Värdet måste vara större än eller lika med numpy.finfo(double).eps. Standardvärdet är 0,001.

nu

Kompromissen mellan bråkdelen av avvikande värden och antalet stödvektorer (representeras av den grekiska bokstaven nu). Måste vara mellan 0 och 1, vanligtvis mellan 0,1 och 0,5. Standardvärdet är 0.1.

shrink

Använder den krympande heuristiska om True. I det här fallet kommer vissa prover att "krympas" under träningsproceduren, vilket kan påskynda träningen. Standardvärdet är True.

Normalisera

Anger vilken typ av automatisk normalisering som används:

  • "Auto": Om normalisering behövs utförs den automatiskt. Det här är standardalternativet.

  • "No": ingen normalisering utförs.

  • "Yes": normalisering utförs.

  • "Warn": Om normalisering behövs visas ett varningsmeddelande, men normaliseringen utförs inte.

Normaliseringen skalar om olika dataintervall till en standardskala. Funktionsskalning försäkrar att avstånden mellan datapunkter är proportionella och gör det möjligt för olika optimeringsmetoder som gradient descent att konvergera mycket snabbare. Om normalisering utförs används en MaxMin normaliserare. Det normaliserar värden i ett intervall [a, b] var -1 <= a <= 0 och 0 <= b <= 1 och b - a = 1. Den här normaliseraren bevarar gleshet genom att mappa noll till noll.

ml_transforms

Anger en lista över MicrosoftML-transformeringar som ska utföras på data före träning eller Ingen om inga transformeringar ska utföras. Se featurize_text, categoricaloch categorical_hash, för transformeringar som stöds. Dessa transformeringar utförs efter alla angivna Python-transformeringar. Standardvärdet är Ingen.

ml_transform_vars

Anger en teckenvektor med variabelnamn som ska användas i ml_transforms eller Ingen om ingen ska användas. Standardvärdet är Ingen.

row_selection

STÖDS INTE. Anger raderna (observationer) från datauppsättningen som ska användas av modellen med namnet på en logisk variabel från datauppsättningen (inom citattecken) eller med ett logiskt uttryck med variabler i datauppsättningen. Till exempel:

  • row_selection = "old" använder endast observationer där värdet för variabeln old är True.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) använder endast observationer där variabelns age värde är mellan 20 och 65 och värdet för variabeln logincome är större än 10.

Radmarkeringen utförs efter bearbetning av datatransformeringar (se argumenten transforms eller transform_function). Som med alla uttryck kan definieras utanför funktionsanropet row_selection med hjälp av expression funktionen.

Förvandlar

STÖDS INTE. Ett uttryck för formuläret som representerar den första omgången av variabeltransformeringar. Precis som med alla uttryck kan (eller row_selection) definieras utanför funktionsanropet transforms med hjälp expression av funktionen.

transform_objects

STÖDS INTE. En namngiven lista som innehåller objekt som kan refereras till av transforms, transform_functionoch row_selection.

transform_function

Funktionen för variabeltransformeringen.

transform_variables

En teckenvektor för indatauppsättningsvariabler som behövs för transformeringsfunktionen.

transform_packages

STÖDS INTE. En teckenvektor som anger ytterligare Python-paket (utanför de som anges i RxOptions.get_option("transform_packages")) som ska göras tillgängliga och förinlästa för användning i variabeltransformeringsfunktioner. Till exempel de som uttryckligen definieras i revoscalepy-funktioner via deras transforms argument och transform_function argument eller de som definieras implicit via deras formula eller row_selection argument. Argumentet transform_packages kan också vara Ingen, vilket indikerar att inga paket utanför RxOptions.get_option("transform_packages") är förinstallerade.

transform_environment

STÖDS INTE. En användardefinierad miljö som fungerar som överordnad till alla miljöer som utvecklats internt och används för variabel datatransformering. Om transform_environment = Noneanvänds en ny "hash"-miljö med överordnad revoscalepy.baseenv i stället.

blocks_per_read

Anger antalet block som ska läsas för varje segment av data som läss från datakällan.

report_progress

Ett heltalsvärde som anger rapporteringsnivån för radbearbetningsförloppet:

  • 0: Inga förlopp rapporteras.

  • 1: Antalet bearbetade rader skrivs ut och uppdateras.

  • 2: Rader som bearbetas och tidsinställningar rapporteras.

  • 3: bearbetade rader och alla tidsinställningar rapporteras.

verbose

Ett heltalsvärde som anger önskad mängd utdata. Om 0skrivs inga utförliga utdata ut under beräkningar. Heltalsvärden från 1 för att 4 ge ökande mängder information.

compute_context

Anger kontexten där beräkningar körs, som anges med en giltig revoscalepy. RxComputeContext. För närvarande lokal och revoscalepy. RxInSqlServer-beräkningskontexter stöds.

Ensemble

Kontrollparametrar för montering.

Retur

Ett OneClassSvm objekt med den tränade modellen.

Anmärkning

Den här algoritmen är enkeltrådad och försöker alltid läsa in hela datamängden i minnet.

Se även

linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, . rx_predict

Referenser

Wikipedia: Avvikelseidentifiering

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

Beräkna stödet för en High-Dimensional-distribution

Nya stödvektoralgoritmer

LIBSVM: Ett bibliotek för stödvektordatorer

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())

Utdata:

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