Sdílet prostřednictvím


microsoftml.rx_oneclass_svm: Detekce anomálií

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

Podrobnosti

SvM jedné třídy je algoritmus pro detekci anomálií. Cílem detekce anomálií je identifikovat odlehlé hodnoty, které nepatří do určité 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í.

Arguments

vzorec

Vzorec, jak je popsáno v revoscalepy.rx_formula. Výrazy 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.

cache_size

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.

jádro

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

  • rbf_kernel: Jádro radiální základní funkce. Jeho parametr představujegamma 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: rbf_kernel(gamma = .1). Toto je výchozí hodnota.

  • linear_kernel: Lineární jádro.

  • polynomial_kernel: 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í.

  • sigmoid_kernel: 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: sigmoid_kernel(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 numpy.finfo(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.

Normalizovat

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 <= 0 a 0 <= b <= 1 .b - a = 1 Tento normalizátor zachovává sparsity tím, že namapuje nulu na nulu.

ml_transforms

Určuje seznam transformací MicrosoftML, které se mají provést s daty před trénováním nebo Žádná , pokud se neprovedou žádné transformace. Viz featurize_text, categoricala categorical_hash, pro transformace, které jsou podporovány. Tyto transformace se provádějí po všech zadaných transformacích Pythonu. Výchozí hodnota je None.

ml_transform_vars

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

row_selection

NEPODPORUJE SE. 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. Například:

  • row_selection = "old"použije pouze pozorování, ve kterých je Truehodnota proměnné old .

  • row_selection = (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 transform_function). Stejně jako u všech výrazů row_selection je možné definovat mimo volání funkce pomocí expression funkce.

transformuje

NEPODPORUJE SE. Výraz formuláře, který představuje první kolo transformací proměnných. Stejně jako u všech výrazů transforms je možné definovat (nebo row_selection) mimo volání funkce pomocí expression funkce.

transform_objects

NEPODPORUJE SE. Pojmenovaný seznam obsahující objekty, na které lze odkazovat pomocí transforms, transform_functiona row_selection.

transform_function

Proměnná transformační funkce.

transform_variables

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

transform_packages

NEPODPORUJE SE. Vektor znaku určující další balíčky Pythonu (mimo balíčky zadané v RxOptions.get_option("transform_packages")) k dispozici a předem načtený pro použití v transformačních funkcích proměnných. Například explicitně definované v funkcích revoscalepy prostřednictvím jejich transforms a transform_function argumentů nebo těch, které jsou definovány implicitně prostřednictvím jejich formula nebo row_selection argumentů. Argumentem transform_packages může být také Žádný, což znamená, že nejsou předem načteny žádné balíčky mimo RxOptions.get_option("transform_packages") .

transform_environment

NEPODPORUJE SE. 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 transform_environment = Nonese místo toho použije nové prostředí hash s nadřazeným revoscalepy.baseenv.

blocks_per_read

Určuje početblokůch

report_progress

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í.

podrobný

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í.

compute_context

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

Soubor

Kontrolní parametry pro přemíscení

Návraty

Objekt OneClassSvm s natrénovaným modelem.

Poznámka:

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

Viz také

linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, rx_predict.

Odkazy

Wikipedie: Detekce anomálií

Microsoft Azure Machine Learning Studio (classic): One-Class Support Vector Machine

Odhad podpory distribuce High-Dimensional

Nové algoritmy podpůrných vektorů

LIBSVM: Knihovna pro podpůrné vektory

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

Výstup:

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