Condividi tramite


rxOneClassSvm: OneClass SVM

Machine Learning One Class Support Vector Machines

Uso

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

Argomenti

formula

Formula come descritto in rxFormula. Termini di interazione e F() non sono attualmente supportati in MicrosoftML.

data

Oggetto origine dati o stringa di caratteri che specifica un file con estensione xdf o un oggetto frame di dati.

cacheSize

Dimensione massima in MB della cache in cui sono archiviati i dati di training. Aumenta questo valore per set di training di grandi dimensioni. Il valore predefinito è 100 MB.

kernel

Stringa di caratteri che rappresenta il kernel usato per il calcolo dei prodotti interni. Per altre informazioni, vedere maKernel. Sono disponibili le opzioni seguenti:

  • rbfKernel(): kernel della funzione base radiale. Il relativo parametro rappresenta gamma il termine exp(-gamma|x-y|^2. Se non specificato, per impostazione predefinita viene 1 diviso per il numero di funzionalità usate. Ad esempio: rbfKernel(gamma = .1). Questo è il valore predefinito.
  • linearKernel(): kernel lineare.
  • polynomialKernel(): kernel polinomiale con nomi di aparametro , biase deg nel termine (a*<x,y> + bias)^deg. Il biasvalore predefinito è 0. Il grado, deg, per impostazione predefinita è 3. Se a non viene specificato, viene impostato su 1 diviso per il numero di funzionalità. Ad esempio: maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel(): kernel Sigmoid con nomi di gamma parametro e coef0 nel termine tanh(gamma*<x,y> + coef0). gamma, per impostazione predefinita viene 1 diviso per il numero di funzionalità. Per impostazione predefinita, il parametro coef0 è 0. Ad esempio: sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

Soglia per la convergenza dell'utilità di ottimizzazione. Se il miglioramento tra iterazioni è inferiore alla soglia, l'algoritmo si arresta e restituisce il modello corrente. Il valore deve essere maggiore o uguale a .Machine$double.eps. Il valore predefinito è 0,001.

nu

Il compromesso tra la frazione di outlier e il numero di vettori di supporto (rappresentati dalla lettera greca nu). Deve essere compreso tra 0 e 1, in genere compreso tra 0,1 e 0,5. Il valore predefinito è 0,1.

shrink

Usa l'euristica compattante se TRUE. In questo caso, alcuni campioni verranno "compattati" durante la procedura di training, che potrebbe velocizzare il training. Il valore predefinito è TRUE.

normalize

Specifica il tipo di normalizzazione automatica utilizzata:

  • "auto": se è necessaria la normalizzazione, viene eseguita automaticamente. Questa è la scelta predefinita.
  • "no": non viene eseguita alcuna normalizzazione.
  • "yes": viene eseguita la normalizzazione.
  • "warn": se è necessaria la normalizzazione, viene visualizzato un messaggio di avviso, ma la normalizzazione non viene eseguita.
    La normalizzazione ridimensiona intervalli di dati diversi a una scala standard. La scalabilità delle funzionalità garantisce che le distanze tra i punti dati siano proporzionali e consentano a vari metodi di ottimizzazione, ad esempio la discesa del gradiente, di convergere molto più velocemente. Se viene eseguita la normalizzazione, viene usato un MaxMin normalizzatore. Normalizza i valori in un intervallo [a, b] dove -1 <= a <= 0e 0 <= b <= 1b - a = 1 . Questo normalizzatore mantiene la spazità eseguendo il mapping di zero a zero.

mlTransforms

Specifica un elenco di trasformazioni MicrosoftML da eseguire sui dati prima del training o NULL se non devono essere eseguite trasformazioni. Per le trasformazioni supportate, vedere featurizeText, categorical e categoricalHash. Queste trasformazioni vengono eseguite dopo le trasformazioni R specificate. Il valore predefinito è NULL.

mlTransformVars

Specifica un vettore di caratteri di nomi di variabile da utilizzare in mlTransforms o NULL se non è necessario usare nessuno. Il valore predefinito è NULL.

rowSelection

Specifica le righe (osservazioni) del set di dati che devono essere usate dal modello con il nome di una variabile logica del set di dati (tra virgolette) o con un'espressione logica usando variabili nel set di dati. Ad esempio, rowSelection = "old" userà solo le osservazioni in cui il valore della variabile old è TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) usa solo osservazioni in cui il valore della age variabile è compreso tra 20 e 65 e il valore della logincome variabile è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di tutte le trasformazioni dei dati (vedere gli transforms argomenti o transformFunc). Come per tutte le espressioni, rowSelection può essere definito all'esterno della chiamata di funzione usando la funzione di espressione.

transforms

Espressione del form list(name = expression, ``...) che rappresenta il primo round delle trasformazioni delle variabili. Come per tutte le espressioni, transforms (o rowSelection) può essere definito all'esterno della chiamata di funzione usando la funzione di espressione.

transformObjects

Elenco denominato che contiene oggetti a cui è possibile fare riferimento da transforms, transformsFunce rowSelection.

transformFunc

Funzione di trasformazione della variabile. Per informazioni dettagliate, vedere rxTransform.

transformVars

Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione. Per informazioni dettagliate, vedere rxTransform.

transformPackages

Vettore di caratteri che specifica pacchetti R aggiuntivi (al di fuori di quelli specificati in rxGetOption("transformPackages")) da rendere disponibili e precaricati per l'uso nelle funzioni di trasformazione delle variabili. Ad esempio, quelli definiti in modo esplicito nelle funzioni RevoScaleR tramite i relativi transforms argomenti e transformFunc o quelli definiti in modo implicito tramite i relativi formula argomenti o rowSelection . L'argomento transformPackages può anche essere NULL, a indicare che non vengono precaricati pacchetti esterni rxGetOption("transformPackages") .

transformEnvir

Ambiente definito dall'utente da usare come padre per tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili. Se transformEnvir = NULL, viene invece usato un nuovo ambiente "hash" con padre baseenv() .

blocksPerRead

Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.

reportProgress

Valore intero che specifica il livello di creazione di report sullo stato di elaborazione delle righe:

  • 0: non viene segnalato alcun avanzamento.
  • 1: il numero di righe elaborate viene stampato e aggiornato.
  • 2: vengono segnalate le righe elaborate e le tempistiche.
  • 3: vengono segnalate le righe elaborate e tutte le tempistiche.

verbose

Valore intero che specifica la quantità di output desiderata. Se 0, non viene stampato alcun output dettagliato durante i calcoli. Valori interi da 1 per 4 fornire quantità crescenti di informazioni.

computeContext

Imposta il contesto in cui vengono eseguiti i calcoli, specificati con un RxComputeContext valido. Attualmente sono supportati contesti di calcolo locali e RxInSqlServer.

ensemble

Parametri di controllo per l'incenso.

...

Argomenti aggiuntivi da passare direttamente al motore di calcolo Microsoft.

Dettagli

il rilevamento consiste nell'identificare gli outlier che non appartengono a una classe di destinazione. Questo tipo di SVM è una classe perché il set di training contiene solo esempi della classe di destinazione. Deduce quali proprietà sono normali per gli oggetti nella classe di destinazione e da queste proprietà stima quali esempi sono diversi dagli esempi normali. Ciò è utile per il rilevamento anomalie perché la scarsità di esempi di training è il carattere di definizione delle anomalie: in genere sono presenti pochissimi esempi di intrusioni di rete, frodi o altri tipi di comportamento anomalo.

Valore

rxOneClassSvm rxOneClassSvm: oggetto con il modello sottoposto a training.

OneClassSvm: oggetto di specifica learner della classe maml per il formatore OneClass Svm.

Note

Questo algoritmo è a thread singolo e tenterà sempre di caricare l'intero set di dati in memoria.

Autore/i

Microsoft Corporation Microsoft Technical Support

Riferimenti

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

Vedere anche

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

Esempi


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