Sdílet prostřednictvím


rxOneClassSvm: OneClass SVM

Machine Learning One Class Support Vector Machines

Použití

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

Argumenty

formula

Vzorec, jak je popsáno v rxFormula. Podmínky interakce a F() v MicrosoftML se v současné době nepodporují.

data

Objekt zdroje dat nebo řetězec znaku určující soubor .xdf nebo objekt datového rámce.

cacheSize

Maximální velikost v MB mezipaměti, která ukládá trénovací data. Zvyšte tuto hodnotu pro velké trénovací sady. Výchozí hodnota je 100 MB.

kernel

Znakový řetězec představující jádro používané pro výpočet vnitřních produktů. Další informace naleznete v tématu maKernel. K dispozici jsou následující možnosti:

  • rbfKernel(): Jádro radiální základní funkce. Jeho parametr představuje gamma v termínu exp(-gamma|x-y|^2. Pokud není zadaný, ve výchozím nastavení se 1 vydělí počtem použitých funkcí. Například: rbfKernel(gamma = .1). Toto je výchozí hodnota.
  • linearKernel(): Lineární jádro.
  • polynomialKernel(): Polynomické jádro s názvy aparametrů , biasa deg v termínu (a*<x,y> + bias)^deg. Výchozí biashodnota 0je . Stupeň, degvýchozí hodnota 3je . Pokud a není zadaný, je nastaven na 1 dělený počtem funkcí. Například: maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel(): Jádro Sigmoid s názvy gamma parametrů a coef0 v termínu tanh(gamma*<x,y> + coef0). gamma, ve výchozím nastavení se 1 dělí podle počtu funkcí. Parametr má výchozí hodnotu coef00. Například: sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

Prahová hodnota pro konvergenci optimalizátoru. Pokud je zlepšení mezi iteracemi menší než prahová hodnota, algoritmus se zastaví a vrátí aktuální model. Hodnota musí být větší nebo rovna .Machine$double.eps. Výchozí hodnota je 0,001.

nu

Kompromis mezi zlomkem odlehlé hodnoty a počtem podpůrných vektorů (reprezentovaný řeckým písmenem nu). Musí být mezi 0 a 1, obvykle mezi 0,1 a 0,5. Výchozí hodnota je 0,1.

shrink

Používá zmenšující heuristika, pokud TRUE. V tomto případě budou některé ukázky během trénovacího postupu "shrunk", což může urychlit trénování. Výchozí hodnota je TRUE.

normalize

Určuje typ použité automatické normalizace:

  • "auto": Pokud je potřeba normalizace, provede se automaticky. Toto je výchozí volba.
  • "no": Neprovádí se normalizace.
  • "yes": normalizace se provádí.
  • "warn": Pokud je potřeba normalizace, zobrazí se zpráva s upozorněním, ale normalizace se neprovede.
    Normalizace rescales disparate data ranges to a standard scale. Škálování funkcí zajišťuje, že vzdálenosti mezi datovými body jsou proporcionální a umožňují mnohem rychleji konvergovat různé metody optimalizace, jako je gradientní sestup. Při normalizaci MaxMin se použije normalizátor. Normalizuje hodnoty v intervalu [a, b] where -1 <= a <= 0a 0 <= b <= 1 .b - a = 1 Tento normalizátor zachovává sparsity tím, že namapuje nulu na nulu.

mlTransforms

Určuje seznam transformací MicrosoftML, které mají být provedeny s daty před trénováním nebo NULL pokud nejsou provedeny žádné transformace. Informace o podporovaných transformacích najdete v tématu featurizeText, kategorický a kategorickýHash. Tyto transformace se provádějí po všech zadaných transformacích jazyka R. Výchozí hodnota je NULL.

mlTransformVars

Určuje vektor znaku názvů proměnných, který se má použít, mlTransforms nebo NULL pokud se má použít žádný. Výchozí hodnota je NULL.

rowSelection

Určuje řádky (pozorování) ze sady dat, které má model používat s názvem logické proměnné ze sady dat (v uvozovkách) nebo logickým výrazem pomocí proměnných v sadě dat. Použije například pouze pozorování, rowSelection = "old" ve kterých je oldhodnota proměnné TRUE . rowSelection = (age > 20) & (age < 65) & (log(income) > 10) používá pouze pozorování, ve kterých je hodnota age proměnné mezi 20 a 65 a hodnotou logincome proměnné je větší než 10. Výběr řádku se provede po zpracování všech transformací dat (viz argumenty transforms nebo transformFunc). Stejně jako u všech výrazů rowSelection je možné definovat mimo volání funkce pomocí funkce výrazu.

transforms

Výraz formuláře list(name = expression, ``...) , který představuje první kolo transformací proměnných. Stejně jako u všech výrazů transforms lze definovat (nebo rowSelection) mimo volání funkce pomocí funkce výrazu.

transformObjects

Pojmenovaný seznam obsahující objekty, na které lze odkazovat pomocí transforms, transformsFunca rowSelection.

transformFunc

Proměnná transformační funkce. Podrobnosti najdete v souboru rxTransform.

transformVars

Znakový vektor vstupních proměnných množiny dat potřebných pro transformační funkci. Podrobnosti najdete v souboru rxTransform.

transformPackages

Znakový vektor určující další balíčky jazyka R (mimo balíčky uvedené v rxGetOption("transformPackages")) pro zpřístupnění a předběžné načtení pro použití v transformačních funkcích proměnných. Například ty, které jsou explicitně definované ve funkcích RevoScaleR prostřednictvím jejich transforms a transformFunc argumentů nebo těch, které jsou definovány implicitně prostřednictvím jejich formula nebo rowSelection argumentů. Argumentem transformPackages může být NULLtaké indikující, že nejsou předem načteny žádné balíčky mimo rxGetOption("transformPackages") .

transformEnvir

Uživatelem definované prostředí, které bude sloužit jako nadřazené všem prostředím vyvinutým interně a které se používají k transformaci proměnných dat. Pokud transformEnvir = NULLse místo toho použije nové prostředí hash s nadřazeným objektem baseenv() .

blocksPerRead

Určuje početblokůch

reportProgress

Celočíselná hodnota, která určuje úroveň generování sestav o průběhu zpracování řádků:

  • 0: Nebyl hlášen žádný průběh.
  • 1: Počet zpracovaných řádků se vytiskne a aktualizuje.
  • 2: Jsou hlášeny řádky zpracovávané a časování.
  • 3: Jsou hlášeny řádky zpracovávané a všechna časování.

verbose

Celočíselná hodnota, která určuje požadovanou velikost výstupu. Pokud 0se během výpočtů nevytiskne žádný podrobný výstup. Celočíselné hodnoty, od 1 které se 4 poskytují rostoucí množství informací.

computeContext

Nastaví kontext, ve kterém se výpočty spouštějí, zadané pomocí platného RxComputeContext. V současné době se podporují místní výpočetní kontexty a výpočetní kontexty RxInSqlServer.

ensemble

Kontrolní parametry pro přemíscení

...

Další argumenty, které se mají předat přímo do výpočetního modulu Microsoftu.

Podrobnosti

detekce je identifikovat odlehlé hodnoty, které nepatří do některé cílové třídy. Tento typ SVM je jedna třída, protože trénovací sada obsahuje pouze příklady z cílové třídy. Odvodí, jaké vlastnosti jsou normální pro objekty v cílové třídě a z těchto vlastností předpovídá, které příklady jsou na rozdíl od normálních příkladů. To je užitečné pro detekci anomálií, protože nedostatek trénovacích příkladů je definující charakter anomálií: obvykle existuje velmi málo příkladů narušení sítě, podvodu nebo jiných typů neobvyklého chování.

Hodnota

rxOneClassSvm: Objekt rxOneClassSvm s natrénovaným modelem.

OneClassSvm: Objekt specifikace učení třídy maml pro trenéra OneClass Svm.

Poznámky

Tento algoritmus je jednovláknový a vždy se pokusí načíst celou datovou sadu do paměti.

Autori

Microsoft Corporation Microsoft Technical Support

Odkazy

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

Viz také

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

Příklady


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