Dela via


rxOneClassSvm: OneClass SVM

Machine Learning One Class Support Vector Machines

Användning

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

Argumentpunkter

formula

Formeln som beskrivs i rxFormula. 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.

cacheSize

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

kernel

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

  • rbfKernel(): Funktionskärnan radiell bas. Parametern representerar gamma i termen exp(-gamma|x-y|^2. Om det inte anges divideras 1 det som standard med antalet funktioner som används. Till exempel rbfKernel(gamma = .1). Det här är standardvärdet.
  • linearKernel(): Linjär kernel.
  • polynomialKernel(): 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. Till exempel maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel(): 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 sigmoidKernel(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 .Machine$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.

normalize

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 <= 0och 0 <= b <= 1 och b - a = 1. Den här normaliseraren bevarar gleshet genom att mappa noll till noll.

mlTransforms

Anger en lista över MicrosoftML-transformeringar som ska utföras på data före träningen eller NULL om inga transformeringar ska utföras. Se featurizeText, kategorisk och kategoriskHash för transformeringar som stöds. Dessa transformeringar utförs efter angivna R-transformeringar. Standardvärdet är NULL.

mlTransformVars

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

rowSelection

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 rowSelection = "old" använder endast observationer där värdet för variabeln old är TRUE. rowSelection = (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 transformFunc). Som med alla uttryck kan definieras utanför funktionsanropet rowSelection med hjälp av uttrycksfunktionen.

transforms

Ett uttryck för formuläret list(name = expression, ``...) som representerar den första omgången av variabeltransformeringar. Precis som med alla uttryck kan (eller transforms) definieras utanför funktionsanropet rowSelection med hjälp av uttrycksfunktionen.

transformObjects

En namngiven lista som innehåller objekt som kan refereras till av transforms, transformsFuncoch rowSelection.

transformFunc

Funktionen för variabeltransformeringen. Mer information finns i rxTransform.

transformVars

En teckenvektor för indatauppsättningsvariabler som behövs för transformeringsfunktionen. Mer information finns i rxTransform.

transformPackages

En teckenvektor som anger ytterligare R-paket (utanför de som anges i rxGetOption("transformPackages")) som ska göras tillgängliga och förinlästa för användning i variabeltransformeringsfunktioner. Till exempel de som uttryckligen definieras i RevoScaleR-funktioner via deras transforms argument och transformFunc argument eller de som definieras implicit via deras formula eller rowSelection argument. Argumentet transformPackages kan också vara NULL, som anger att inga paket utanför rxGetOption("transformPackages") är förinstallerade.

transformEnvir

En användardefinierad miljö som fungerar som överordnad till alla miljöer som utvecklats internt och används för variabel datatransformering. Om transformEnvir = NULLanvänds en ny "hash"-miljö med överordnad baseenv() i stället.

blocksPerRead

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

reportProgress

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.

computeContext

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

ensemble

Kontrollparametrar för montering.

...

Ytterligare argument som ska skickas direkt till Microsoft Compute Engine.

Detaljer

identifiering är att identifiera avvikande vä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.

Värde

rxOneClassSvm: Ett rxOneClassSvm objekt med den tränade modellen.

OneClassSvm: Ett elevspecifikationsobjekt för klassen maml för OneClass Svm-tränaren.

Noteringar

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

Författare

Microsoft Corporation Microsoft Technical Support

Referenser

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

Se även

rbfKernel, linearKernel, polynomialKernel, sigmoidKernelrxFastTrees, rxFastForest, rxFastLinear, rxLogisticRegression, rxNeuralNet, featurizeText, kategorisk, kategoriskHash, rxPredict.mlModel.

Exempel


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