Condividi tramite


rxOneClassSvm: OneClass SVM

Metodo SVM (macchine a vettori di supporto) a una classe di Machine Learning

Utilizzo

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

Arguments

formula

Formula descritta in rxFormula. I 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 vengono archiviati i dati di training. Aumentare 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 di prodotti interni. Per altre informazioni, vedere maKernel. Sono disponibili le opzioni seguenti:

  • rbfKernel(): kernel della funzione di base radiale. Il parametro rappresenta gamma nel termine exp(-gamma|x-y|^2. Se non specificato, il valore predefinito è 1 diviso per il numero di funzionalità usate. Ad esempio, rbfKernel(gamma = .1). Si tratta del valore predefinito.
  • linearKernel(): kernel lineare.
  • polynomialKernel(): kernel polinomiale con nomi di parametro a, bias e deg nel termine (a*<x,y> + bias)^deg. Il valore predefinito di bias è 0. Il valore predefinito del grado, deg, è 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 sigmoideo con nomi di parametro gamma e coef0 nel termine tanh(gamma*<x,y> + coef0). Il valore predefinito di gamma è 1 diviso per il numero di funzionalità. Il valore predefinito del parametro coef0 è 0. Ad esempio, sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

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

nu

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

shrink

Usa l'euristica di compattazione se TRUE. In caso, alcuni esempi verranno compattati durante la procedura di training in modo da poter velocizzare il training. Il valore predefinito è TRUE.

normalize

Specifica il tipo di normalizzazione automatica usata:

  • "auto": se la normalizzazione è necessaria, viene eseguita automaticamente. Questa è l'opzione predefinita.
  • "no": non viene eseguita alcuna normalizzazione.
  • "yes": la normalizzazione viene eseguita.
  • "warn": se la normalizzazione è necessaria, viene visualizzato un avviso ma la normalizzazione non viene eseguita.
    La normalizzazione ridimensiona diversi intervalli di dati in base a una scala standard. Il ridimensionamento delle funzioni assicura che le distanze tra i punti dati siano proporzionali e consente di accelerare significativamente la convergenza di diversi metodi di ottimizzazione, tra cui la discesa di gradiente. Se la normalizzazione viene eseguita, viene usato un normalizzatore MaxMin. I valori vengono normalizzati in un intervallo [a, b], dove -1 <= a <= 0 e 0 <= b <= 1 e b - a = 1. Questo normalizzatore mantiene la sparsità eseguendo il mapping di zero a zero.

mlTransforms

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

mlTransformVars

Specifica un vettore di caratteri di nomi di variabili da usare in mlTransforms o NULL se non è necessario usarne alcuno. Il valore predefinito è NULL.

rowSelection

Specifica le righe (osservazioni) dal set di dati che devono essere usate dal modello con il nome di una variabile logica dal set di dati (tra virgolette) o con un'espressione logica tramite variabili nel set di dati. Ad esempio, rowSelection = "old" userà solo 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 variabile age è compreso tra 20 e 65 e il valore di log della variabile income è maggiore di 10. La selezione delle righe viene eseguita dopo l'elaborazione di eventuali trasformazioni dei dati. Vedere gli argomenti transforms o transformFunc. Analogamente a tutte le espressioni, è possibile definire rowSelection all'esterno della chiamata alla funzione usando la funzione di espressione.

transforms

Espressione con formato list(name = expression, ``...) che rappresenta il primo ciclo di trasformazioni delle variabili. Analogamente a tutte le espressioni, è possibile definire transforms o rowSelection all'esterno della chiamata alla funzione usando la funzione di espressione.

transformObjects

Elenco denominato che contiene oggetti a cui transforms, transformsFunce rowSelection possono fare riferimento.

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 altri pacchetti R, oltre a 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 argomenti transforms e transformFunc o quelli definiti in modo implicito tramite i relativi argomenti formula o rowSelection. L'argomento transformPackages può anche essere NULL, che indica che non vengono precaricati pacchetti esterni a rxGetOption("transformPackages").

transformEnvir

Ambiente definito dall'utente da usare come elemento padre di 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 a 4 per fornire quantità crescenti di informazioni.

computeContext

Imposta il contesto in cui vengono eseguiti i calcoli, specificato con un RxComputeContext valido. Sono attualmente supportati contesti di calcolo locali e RxInSqlServer.

ensemble

Parametri di controllo per l'ensembling.

...

Argomenti aggiuntivi da passare direttamente al motore di calcolo Microsoft.

Dettagli

il rilevamento consiste nell'identificare gli outlier che non appartengono ad alcuna classe di destinazione. Questo tipo di SVM è una classe unica perché il set di training contiene solo esempi della classe di destinazione. Deduce le proprietà normali per gli oggetti nella classe di destinazione e in base a queste proprietà predice quali esempi sono diversi rispetto agli esempi normali. Si tratta di una funzione utile per il rilevamento di anomalie, in quanto la scarsità di esempi di training è il carattere che contraddistingue le anomalie: in genere, sono presenti pochi esempi di intrusioni di rete, frodi o altri tipi di comportamento anomalo.

Valore

rxOneClassSvm: oggetto rxOneClassSvm con il modello sottoposto a training.

OneClassSvm: oggetto di specifica dello strumento di apprendimento con classe maml per il programma di training SVM a una classe.

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

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