Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Usage
microsoftml.rx_oneclass_svm(formula: str,
data: [revoscalepy.datasource.RxDataSource.RxDataSource,
pandas.core.frame.DataFrame], cache_size: float = 100,
kernel: [<function linear_kernel at 0x0000007156EAC8C8>,
<function polynomial_kernel at 0x0000007156EAC950>,
<function rbf_kernel at 0x0000007156EAC7B8>,
<function sigmoid_kernel at 0x0000007156EACA60>] = {'Name': 'RbfKernel',
'Settings': {}}, epsilon: float = 0.001, nu: float = 0.1,
shrink: bool = True, normalize: ['No', 'Warn', 'Auto',
'Yes'] = 'Auto', ml_transforms: list = None,
ml_transform_vars: list = None, row_selection: str = None,
transforms: dict = None, transform_objects: dict = None,
transform_function: str = None,
transform_variables: list = None,
transform_packages: list = None,
transform_environment: dict = None, blocks_per_read: int = None,
report_progress: int = None, verbose: int = 1,
ensemble: microsoftml.modules.ensemble.EnsembleControl = None,
compute_context: revoscalepy.computecontext.RxComputeContext.RxComputeContext = None)
Description
Máquinas vetoriais de suporte de uma classe do Machine Learning One
Detalhes
A SVM de uma classe é um algoritmo para detecção de anomalias. O objetivo da detecção de anomalias é identificar exceções que não pertencem a alguma classe de destino. Esse tipo de SVM é de uma classe 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 dessas propriedades prevê quais exemplos são diferentes dos exemplos normais. Isso é útil para detecção de anomalias porque a escassez de exemplos de treinamento é o caractere definidor de anomalias: normalmente, há muito poucos exemplos de intrusão de rede, fraude ou outros tipos de comportamento anômalo.
Arguments
fórmula
A fórmula, conforme descrito em revoscalepy.rx_formula.
No momento, não há suporte para termos F() de interação no microsoftml.
dados
Um objeto de fonte de dados ou uma cadeia de caracteres especificando um arquivo .xdf ou um objeto de quadro de dados.
cache_size
O tamanho máximo em MB do cache que armazena os dados de treinamento. Aumente isso para conjuntos de treinamento grandes. O valor padrão é 100 MB.
kernel
Uma cadeia de caracteres que representa o kernel usado para computação de produtos internos. Para obter mais informações, consulte ma_kernel(). As seguintes opções estão disponíveis:
rbf_kernel: kernel de função de base radial. Seu parâmetro representagammano termoexp(-gamma|x-y|^2. Se não for especificado, o padrão será dividido pelo número de recursos usados1. Por exemplo,rbf_kernel(gamma = .1). Esse é o valor padrão.linear_kernel: kernel linear.polynomial_kernel: kernel polinomial com nomesabiasde parâmetro edegno termo(a*<x,y> + bias)^deg. Obiaspadrão0é . O grau,dego padrão é3. Seanão for especificado, ele será definido como1dividido pelo número de recursos.sigmoid_kernel: kernel Sigmoid com nomesgammade parâmetro ecoef0no termotanh(gamma*<x,y> + coef0).gamma, o padrão é1dividido pelo número de recursos. O parâmetrocoef0usa0como padrão . Por exemplo,sigmoid_kernel(gamma = .1, coef0 = 0).
Epsilon
O limite de convergência do otimizador. Se a melhoria entre iterações for menor que o limite, o algoritmo será interrompido e retornará o modelo atual. O valor deve ser maior ou igual a numpy.finfo(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 (representados 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, alguns exemplos serão "reduzidos" durante o procedimento de treinamento, o que pode acelerar o treinamento. O valor padrão é True.
Normalizar
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": nenhuma normalização é executada."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 descendente de gradiente, convergam muito mais rapidamente. Se a normalização for executada, um MaxMin normalizador será usado. Normaliza valores em um intervalo [a, b] onde -1 <= a <= 0 e 0 <= b <= 1b - a = 1. Esse normalizador preserva a moderação mapeando zero a zero.
ml_transforms
Especifica uma lista de transformações do MicrosoftML a serem executadas nos dados antes do treinamento ou Nenhuma se nenhuma transformação deve ser executada. Consulte featurize_text, categoricale categorical_hash, para transformações com suporte.
Essas transformações são executadas após quaisquer transformações do Python especificadas.
O valor padrão é None.
ml_transform_vars
Especifica um vetor de caracteres de nomes de variáveis a serem usados ou ml_transformsNenhum se nenhum for usado.
O valor padrão é None.
row_selection
SEM SUPORTE. 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:
row_selection = "old"usará apenas observações nas quais o valor da variáveloldéTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)usa apenas observações nas quais o valor daagevariável está entre 20 e 65 e o valor dalogincomevariável é maior que 10.
A seleção de linha é executada após o processamento de transformações de dados (consulte os argumentos transforms ou transform_function). Assim como acontece com todas as expressões, row_selection pode ser definido fora da chamada de função usando a expression função.
Transforma
SEM SUPORTE. Uma expressão do formulário que representa a primeira rodada de transformações variáveis. Assim como acontece com todas as expressões, transforms (ou row_selection) pode ser definido fora da chamada de função usando a expression função.
transform_objects
SEM SUPORTE. Uma lista nomeada que contém objetos que podem ser referenciados por transforms, transform_functione row_selection.
transform_function
A função de transformação variável.
transform_variables
Um vetor de caractere das variáveis de conjunto de dados de entrada necessárias para a função de transformação.
transform_packages
SEM SUPORTE. Um vetor de caracteres que especifica pacotes python adicionais (fora daqueles especificados em RxOptions.get_option("transform_packages")) a serem disponibilizados e pré-carregados para uso em funções de transformação variável.
Por exemplo, aqueles explicitamente definidos em funções revoscalepy por meio de seus transforms argumentos ou transform_function argumentos ou aqueles definidos implicitamente por meio de seus formula argumentos ou row_selection argumentos. O transform_packages argumento também pode ser Nenhum, indicando que nenhum pacote externo RxOptions.get_option("transform_packages") está pré-carregado.
transform_environment
SEM SUPORTE. Um ambiente definido pelo usuário para servir como pai para todos os ambientes desenvolvidos internamente e usados para transformação de dados variáveis.
Se transform_environment = None, um novo ambiente "hash" com parent revoscalepy.baseenv será usado em vez disso.
blocks_per_read
Especifica o número de blocos a serem lidos para cada parte dos dados lidos da fonte de dados.
report_progress
Um valor inteiro que especifica o nível de relatório sobre o progresso do processamento de linhas:
0: nenhum progresso é relatado.1: o número de linhas processadas é impresso e atualizado.2: linhas processadas e intervalos são relatados.3: linhas processadas e todos os intervalos são relatados.
detalhada
Um valor inteiro que especifica a quantidade de saída desejada.
Se 0, nenhuma saída detalhada será impressa durante os cálculos. Valores inteiros de 1 para 4 fornecer quantidades crescentes de informações.
compute_context
Define o contexto no qual os cálculos são executados, especificado com um revoscalepy válido. RxComputeContext. Atualmente local e revoscalepy. Há suporte para contextos de computação RxInSqlServer .
Conjunto
Controlar parâmetros para ensembling.
Devoluções
Um OneClassSvm objeto com o modelo treinado.
Observação
Esse algoritmo é de thread único e sempre tentará carregar todo o conjunto de dados na memória.
Consulte também
linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, rx_predict.
Referências
Wikipédia: detecção de anomalias
Microsoft Azure Machine Learning Studio (clássico): One-Class Compatível com o Vector Machine
Estimando o suporte de uma distribuição de High-Dimensional
Novos algoritmos de vetor de suporte
LIBSVM: uma biblioteca para computadores vetoriais de suporte
Example
'''
Anomaly Detection.
'''
import numpy
import pandas
from microsoftml import rx_oneclass_svm, rx_predict
from revoscalepy.etl.RxDataStep import rx_data_step
from microsoftml.datasets.datasets import get_dataset
iris = get_dataset("iris")
import sklearn
if sklearn.__version__ < "0.18":
from sklearn.cross_validation import train_test_split
else:
from sklearn.model_selection import train_test_split
irisdf = iris.as_df()
data_train, data_test = train_test_split(irisdf)
# Estimate a One-Class SVM model
model = rx_oneclass_svm(
formula= "~ Sepal_Length + Sepal_Width + Petal_Length + Petal_Width",
data=data_train)
# Add additional non-iris data to the test data set
data_test["isIris"] = 1.0
not_iris = pandas.DataFrame(data=dict(Sepal_Length=[2.5, 2.6],
Sepal_Width=[.75, .9], Petal_Length=[2.5, 2.5],
Petal_Width=[.8, .7], Species=["not iris", "not iris"],
isIris=[0., 0.]))
merged_test = pandas.concat([data_test, not_iris])
scoresdf = rx_predict(model, data=merged_test, extra_vars_to_write=["isIris"])
# Look at the last few observations
print(scoresdf.tail())
Saída:
Automatically adding a MinMax normalization transform, use 'norm=Warn' or 'norm=No' to turn this behavior off.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Beginning processing data.
Rows Read: 112, Read Time: 0, Transform Time: 0
Beginning processing data.
Using these libsvm parameters: svm_type=2, nu=0.1, cache_size=100, eps=0.001, shrinking=1, kernel_type=2, gamma=0.25, degree=0, coef0=0
Reconstructed gradient.
optimization finished, #iter = 15
obj = 52.905421, rho = 9.506052
nSV = 12, nBSV = 9
Not training a calibrator because it is not needed.
Elapsed time: 00:00:00.0555122
Elapsed time: 00:00:00.0212389
Beginning processing data.
Rows Read: 40, Read Time: 0, Transform Time: 0
Beginning processing data.
Elapsed time: 00:00:00.0349974
Finished writing 40 rows.
Writing completed.
isIris Score
35 1.0 -0.142141
36 1.0 -0.531449
37 1.0 -0.189874
38 0.0 0.635845
39 0.0 0.555602