Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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
Machine Learning One Class Support Vector Machines
Dettagli
SVM a una classe è un algoritmo per il rilevamento anomalie. L'obiettivo del rilevamento anomalie è 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.
Arguments
formula
Formula come descritto in revoscalepy.rx_formula.
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.
cache_size
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.
chicco
Stringa di caratteri che rappresenta il kernel usato per il calcolo dei prodotti interni. Per altre informazioni, vedere ma_kernel(). Sono disponibili le opzioni seguenti:
rbf_kernel: kernel della funzione base radiale. Il relativo parametro rappresentagammail termineexp(-gamma|x-y|^2. Se non specificato, per impostazione predefinita viene1diviso per il numero di funzionalità usate. Ad esempio:rbf_kernel(gamma = .1). Questo è il valore predefinito.linear_kernel: kernel lineare.polynomial_kernel: kernel polinomiale con nomi diaparametro ,biasedegnel termine(a*<x,y> + bias)^deg. Ilbiasvalore predefinito è0. Il grado,deg, per impostazione predefinita è3. Seanon viene specificato, viene impostato su1diviso per il numero di funzionalità.sigmoid_kernel: kernel Sigmoid con nomi digammaparametro ecoef0nel terminetanh(gamma*<x,y> + coef0).gamma, per impostazione predefinita viene1diviso per il numero di funzionalità. Per impostazione predefinita, il parametrocoef0è0. Ad esempio:sigmoid_kernel(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 numpy.finfo(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.
Normalizzare
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 <= 0 e b - a = 10 <= b <= 1 . Questo normalizzatore mantiene la spazità eseguendo il mapping di zero a zero.
ml_transforms
Specifica un elenco di trasformazioni MicrosoftML da eseguire sui dati prima del training o Nessuna se non devono essere eseguite trasformazioni. Per le trasformazioni supportate, vedere featurize_text, categoricale categorical_hash.
Queste trasformazioni vengono eseguite dopo le trasformazioni Python specificate.
Il valore predefinito è None.
ml_transform_vars
Specifica un vettore di caratteri di nomi di variabile da utilizzare in ml_transforms o Nessuno se non è necessario usare nessuno.
Il valore predefinito è None.
row_selection
NON SUPPORTATO. 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. Per esempio:
row_selection = "old"userà solo osservazioni in cui il valore della variabileoldèTrue.row_selection = (age > 20) & (age < 65) & (log(income) > 10)usa solo osservazioni in cui il valore dellaagevariabile è compreso tra 20 e 65 e il valore dellalogincomevariabile è maggiore di 10.
La selezione delle righe viene eseguita dopo l'elaborazione di tutte le trasformazioni dei dati (vedere gli transforms argomenti o transform_function). Come per tutte le espressioni, row_selection può essere definito all'esterno della chiamata di funzione usando la expression funzione .
Trasforma
NON SUPPORTATO. Espressione del form che rappresenta il primo round delle trasformazioni delle variabili. Come per tutte le espressioni, transforms (o row_selection) può essere definito all'esterno della chiamata di funzione usando la expression funzione .
transform_objects
NON SUPPORTATO. Elenco denominato che contiene oggetti a cui è possibile fare riferimento da transforms, transform_functione row_selection.
transform_function
Funzione di trasformazione della variabile.
transform_variables
Vettore di caratteri delle variabili del set di dati di input necessario per la funzione di trasformazione.
transform_packages
NON SUPPORTATO. Vettore di caratteri che specifica pacchetti Python aggiuntivi (al di fuori di quelli specificati in RxOptions.get_option("transform_packages")) da rendere disponibili e precaricati per l'uso nelle funzioni di trasformazione delle variabili.
Ad esempio, quelli definiti in modo esplicito nelle funzioni revoscalepy tramite i relativi transforms argomenti e transform_function o quelli definiti in modo implicito tramite i rispettivi formula argomenti o row_selection . L'argomento transform_packages può anche essere Nessuno, a indicare che non vengono precaricati pacchetti esterni RxOptions.get_option("transform_packages") .
transform_environment
NON SUPPORTATO. Ambiente definito dall'utente da usare come padre per tutti gli ambienti sviluppati internamente e usati per la trasformazione dei dati delle variabili.
Se transform_environment = None, viene invece usato un nuovo ambiente "hash" con revoscalepy.baseenv padre.
blocks_per_read
Specifica il numero di blocchi da leggere per ogni blocco di dati letto dall'origine dati.
report_progress
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.
compute_context
Imposta il contesto in cui vengono eseguiti i calcoli, specificati con una revoscalepy valida. RxComputeContext. Attualmente locale e revoscalepy. Sono supportati i contesti di calcolo RxInSqlServer.
Ensemble
Parametri di controllo per l'incenso.
Restituzioni
Oggetto OneClassSvm con il modello sottoposto a training.
Annotazioni
Questo algoritmo è a thread singolo e tenterà sempre di caricare l'intero set di dati in memoria.
Vedere anche
linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, . rx_predict
References
Wikipedia: Rilevamento anomalie
Stima del supporto di una distribuzione High-Dimensional
Nuovi algoritmi di vettore di supporto
LIBSVM: libreria per le macchine vettoriali di supporto
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())
Risultato:
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