Partilhar via


rxOneClassSvm: OneClass SVM

Máquinas de Vetor de Suporte One Class do Machine Learning

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

Argumentos

formula

A fórmula como descrita em rxFormula. No momento, não há suporte para termos de interação nem para F() no MicrosoftML.

data

Um objeto de fonte de dados ou uma cadeia de caracteres que especifica um arquivo .xdf ou um objeto de dataframe.

cacheSize

O tamanho máximo em MB do cache que armazena os dados de treinamento. Aumente para grandes conjuntos de treinamento. O valor padrão é 100 MB.

kernel

Uma cadeia de caracteres que representa o kernel usado para computação de produtos internos. Para saber mais, confira maKernel. As seguintes opções estão disponíveis:

  • rbfKernel(): kernel de função de base radial. Seu parâmetro representa gamma no termo exp(-gamma|x-y|^2. Se não for especificado, o padrão será 1 dividido pelo número de recursos usados. Por exemplo, rbfKernel(gamma = .1). Esse é o valor padrão.
  • linearKernel(): kernel linear.
  • polynomialKernel(): kernel polinomial com nomes de parâmetros a, bias e deg no termo (a*<x,y> + bias)^deg. O bias, assume 0 como padrão. O grau, deg, assume 3 como padrão. Se a não for especificado, será definido para 1 dividido pelo número de recursos. Por exemplo, maKernelPoynomial(bias = 0, deg = `` 3).
  • sigmoidKernel(): kernel sigmoide com nomes de parâmetros gamma e coef0 no termo tanh(gamma*<x,y> + coef0). gamma, assume 1 como padrão dividido pelo número de recursos. O parâmetro coef0 assume 0 como padrão. Por exemplo, sigmoidKernel(gamma = .1, coef0 = 0).

epsilon

O limite de convergência do otimizador. Se a melhoria entre as iterações for menor que o limite, o algoritmo para e retorna o modelo atual. O valor precisa ser maior ou igual a .Machine$double.eps. O valor padrão é 0,001.

nu

A troca entre a fração de exceções e o número de vetores de suporte (representado pela letra grega nu). Deve estar entre 0 e 1, normalmente entre 0,1 e 0,5. O valor padrão é 0,1.

shrink

Usa a heurística de redução se TRUE. Nesse caso, algumas amostras serão “reduzidas” durante o procedimento de treinamento, o que pode acelerar o treinamento. O valor padrão é TRUE.

normalize

Especifica o tipo de normalização automática usado:

  • "auto": se a normalização for necessária, ela será executada automaticamente. Essa é a opção padrão.
  • "no": não é executada nenhuma normalização.
  • "yes": a normalização é executada.
  • "warn": se a normalização for necessária, uma mensagem de aviso será exibida, mas a normalização não será executada.
    A normalização redimensiona intervalos de dados diferentes para uma escala padrão. O dimensionamento de recursos garante que as distâncias entre os pontos de dados sejam proporcionais e permite que vários métodos de otimização, como o descendente de gradiente, sejam convergidos com uma rapidez muito maior. Quando a normalização é executada, um normalizador MaxMin é usado. Ele normaliza os valores em um intervalo [a, b] em que -1 <= a <= 0 e 0 <= b <= 1 e b - a = 1. Esse normalizador preserva a dispersão mapeando zero para zero.

mlTransforms

Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou NULL para que nenhuma transformação seja executada. Confira featurizeText, categorical e categoricalHash, para ver as transformações com suporte. Essas transformações são executadas após as transformações R especificadas. O valor padrão é NULL.

mlTransformVars

Especifica um vetor de caracteres de nomes de variáveis a serem usados em mlTransforms ou NULL quando não é usado nenhum nome. O valor padrão é NULL.

rowSelection

Especifica as linhas (observações) do conjunto de dados que devem ser usadas pelo modelo com o nome de uma variável lógica do conjunto de dados (entre aspas) ou com uma expressão lógica usando variáveis no conjunto de dados. Por exemplo, rowSelection = "old" usará apenas observações nas quais o valor da variável old seja TRUE. rowSelection = (age > 20) & (age < 65) & (log(income) > 10) apenas usa observações nas quais o valor da variável age está entre 20 e 65 e o valor de log da variável income é maior que 10. A seleção de linha é executada após o processamento de todas as transformações de dados (confira os argumentos transforms ou transformFunc). Assim como acontece com todas as expressões, é possível definir rowSelection fora da chamada de função usando a função de expressão.

transforms

Uma expressão do formato list(name = expression, ``...) que representa a primeira rodada de transformações de variável. Assim como acontece com todas as expressões, é possível definir transforms (ou rowSelection) fora da chamada de função usando a função de expressão.

transformObjects

Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transformsFunc e rowSelection.

transformFunc

A função de transformação de variável. Confira rxTransform para obter detalhes.

transformVars

Um vetor de caracteres de variáveis do conjunto de dados de entrada necessário para a função de transformação. Confira rxTransform para obter detalhes.

transformPackages

Um vetor de caracteres que especifica pacotes R adicionais (fora aqueles especificados em rxGetOption("transformPackages")) a serem disponibilizados e pré-carregados para uso em funções de transformação de variável. Por exemplo, os definidos explicitamente nas funções RevoScaleR por meio dos respectivos argumentos transforms e transformFunc ou os definidos implicitamente por meio dos respectivos argumentos formula ou rowSelection. O argumento transformPackages também pode ser NULL, indicando que nenhum pacote fora de rxGetOption("transformPackages") é pré-carregado.

transformEnvir

Um ambiente definido pelo usuário para funcionar como um pai de todos os ambientes desenvolvidos internamente e usados para transformação de dados de variável. Se transformEnvir = NULL, um novo ambiente de “hash” com baseenv() pai é usado.

blocksPerRead

Especifica o número de blocos a serem lidos em cada parte dos dados lidos da fonte de dados.

reportProgress

Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linha:

  • 0: não é relatado nenhum progresso.
  • 1: o número de linhas processadas é impresso e atualizado.
  • 2: as linhas processadas e os tempos são relatados.
  • 3: as linhas processadas e todos os tempos são relatados.

verbose

Um valor inteiro que especifica a quantidade de saída desejada. Se definido como 0, não será impressa nenhuma saída detalhada durante os cálculos. Valores inteiros de 1 a 4 fornecem quantidades crescentes de informações.

computeContext

Define o contexto no qual as computações são executadas, especificado com um RxComputeContext válido. No momento, há suporte para os contextos de computação local e RxInSqlServer.

ensemble

Parâmetros de controle para conjuntos.

...

Argumentos adicionais a serem passados diretamente para o Microsoft Compute Engine.

Detalhes

A detecção é identificar exceções que não pertençam a alguma classe de destino. Esse tipo de SVM é one-class porque o conjunto de treinamento contém apenas exemplos da classe de destino. Ele infere quais propriedades são normais para os objetos na classe de destino, e essas propriedades preveem quais exemplos são diferentes dos exemplos normais. Isso é útil para a detecção de anomalias porque a escassez de exemplos de treinamento é o caractere determinante das anomalias: normalmente há poucos exemplos de invasão de rede, fraude ou outros tipos de comportamento anormais.

Valor

rxOneClassSvm: um objeto rxOneClassSvm com o modelo treinado.

OneClassSvm: um objeto de especificação de aluno da classe maml para o treinador OneClass Svm.

Observações

Este algoritmo é de thread única e sempre tentará carregar todo o conjuntos de dados na memória.

Autor(es)

Microsoft Corporation Microsoft Technical Support

Referências

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

Confira também

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

Exemplos


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