Megosztás:


microsoftml.rx_oneclass_svm: Anomáliadetektálás

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 Egy osztály támogatása vektorgépek

Részletek

Az egyosztályos SVM egy anomáliadetektálási algoritmus. Az anomáliadetektálás célja olyan kiugró értékek azonosítása, amelyek nem tartoznak valamilyen célosztályhoz. Az SVM ilyen típusa egyosztályos, mert a betanítási csoport csak a célosztályból származó példákat tartalmaz. Ebből arra következtet, hogy a célosztály objektumai milyen tulajdonságokat használnak, és ezekből a tulajdonságokból előrejelzi, hogy mely példák különböznek a normál példáktól. Ez azért hasznos az anomáliadetektáláshoz, mert a betanítási példák szűkössége az anomáliák meghatározó karaktere: általában nagyon kevés példa van hálózati behatolásra, csalásra vagy egyéb rendellenes viselkedésre.

Arguments

képlet

A képlet az revoscalepy.rx_formula. A microsoftml jelenleg nem támogatja az interakciós feltételeketF().

adat

. xdf-fájlt vagy adatkeret-objektumot meghatározó adatforrás-objektum vagy karaktersztring.

cache_size

A betanítási adatokat tároló gyorsítótár maximális mérete MB-ban. Növelje ezt a nagy betanítási csoportok esetében. Az alapértelmezett érték 100 MB.

kernel

A belső termékek számításához használt kernelt jelképező karaktersztring. További információért lásd ma_kernel(). A következő lehetőségek érhetők el:

  • rbf_kernel: Radiális alapfüggvény kernel. Paramétere a kifejezésben exp(-gamma|x-y|^2szerepelgamma. Ha nincs megadva, az alapértelmezés szerint 1 a használt funkciók számával van osztva. Például: rbf_kernel(gamma = .1). Ez az alapértelmezett érték.

  • linear_kernel: Lineáris kernel.

  • polynomial_kernel: Polinom kernel paraméternevekkel a, biasés deg a kifejezésben (a*<x,y> + bias)^deg. Az biasalapértelmezett érték a következő.0 A fok, degaz alapértelmezett érték a következő.3 Ha a nincs megadva, akkor a 1 funkció a funkciók számával van osztva.

  • sigmoid_kernel: Sigmoid kernel paraméternevekkel gamma és coef0 a kifejezésben tanh(gamma*<x,y> + coef0). gammaalapértelmezés szerint 1 osztva a funkciók számával. A paraméter coef0 alapértelmezés szerint a következő.0 Például: sigmoid_kernel(gamma = .1, coef0 = 0).

Epsilon

Az optimalizáló konvergenciájának küszöbértéke. Ha az iterációk közötti javulás kisebb, mint a küszöbérték, az algoritmus leáll, és visszaadja az aktuális modellt. Az értéknek nagyobbnak vagy egyenlőnek numpy.finfo(double).epskell lennie. Az alapértelmezett érték 0,001.

Nu

A kiugró értékek törtrésze és a támogató vektorok száma közötti kompromisszum (amelyet a görög nu betű jelöl). 0 és 1 között kell lennie, általában 0,1 és 0,5 között. Az alapértelmezett érték 0,1.

shrink

A zsugorító heurisztikus ha True. Ebben az esetben egyes minták "zsugorulnak" a betanítási eljárás során, ami felgyorsíthatja a betanítást. Az alapértelmezett érték a True.

Normalizálni

A használt automatikus normalizálás típusát adja meg:

  • "Auto": ha normalizálásra van szükség, a rendszer automatikusan végrehajtja. Ez az alapértelmezett választás.

  • "No": nem történik normalizálás.

  • "Yes": normalizálás történik.

  • "Warn": ha normalizálásra van szükség, figyelmeztető üzenet jelenik meg, de a normalizálás nem történik meg.

A normalizálás az adattartományokat standard méretezésre skálázza át. A funkciók skálázása biztosítja az adatpontok közötti távolságok arányosak, és lehetővé teszi a különböző optimalizálási módszereket, például a színátmenetes süllyedést, hogy sokkal gyorsabban konvergáljanak. Normalizálás esetén a rendszer normalizálót MaxMin használ. Normalizálja az értékeket egy intervallumban [a, b] ahol -1 <= a <= 0 és 0 <= b <= 1 .b - a = 1 Ez a normalizáló a nulláról nullára való leképezéssel megőrzi a ritkaságot.

ml_transforms

Megadja azon MicrosoftML-átalakítások listáját, amelyeket betanítás előtt el kell végezni az adatokon, vagy Nincs , ha nem kell átalakításokat végrehajtani. categoricalA featurize_texttámogatott átalakításokat lásd, és categorical_hashtekintse meg. Ezek az átalakítások a megadott Python-átalakítások után lesznek végrehajtva. Az alapértelmezett érték: Nincs.

ml_transform_vars

A változónevek ml_transforms karaktervektorát adja meg , ha nincs . Az alapértelmezett érték: Nincs.

row_selection

NEM TÁMOGATOTT. Az adathalmaz azon sorait (megfigyeléseit) adja meg, amelyeket a modell az adathalmazból származó logikai változó nevével (idézőjelekben) vagy az adathalmaz változóit használó logikai kifejezéssel használ. Például:

  • row_selection = "old"csak olyan megfigyeléseket használ, amelyekben a változó old értéke .True

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) csak olyan megfigyeléseket használ, amelyekben a age változó értéke 20 és 65 között van, és a logincome változó értéke nagyobb, mint 10.

A sorkijelölés az adatátalakítások feldolgozása után történik (lásd az argumentumokat transforms vagy transform_functiona ). Az összes kifejezéshez hasonlóan a row_selection függvényhíváson kívül is definiálható a expression függvény használatával.

Átalakítja

NEM TÁMOGATOTT. Az űrlap kifejezése, amely a változóátalakítások első fordulóját jelöli. Az összes kifejezéshez transforms hasonlóan (vagy row_selection) a függvényhíváson kívül is definiálható a expression függvény használatával.

transform_objects

NEM TÁMOGATOTT. Névvel ellátott lista, amely olyan objektumokat tartalmaz, amelyekre hivatkozni transformslehet.row_selectiontransform_function

transform_function

A változó transzformációs függvénye.

transform_variables

A bemeneti adathalmaz változóinak karaktervektora, amely az átalakítási függvényhez szükséges.

transform_packages

NEM TÁMOGATOTT. Egy karaktervektor, amely további Python-csomagokat határoz meg (a megadottakon RxOptions.get_option("transform_packages")kívül), amelyeket elérhetővé kell tenni és előre be kell tölteni a változóátalakítási függvényekben való használatra. A revoscalepy függvényekben explicit módon definiált függvények például azok és transform_function argumentumaik vagy argumentumaik transformsformularow_selection által implicit módon definiált függvények. Az transform_packages argumentum lehet Nincs is, ami azt jelzi, hogy nincsenek előre betöltött csomagok RxOptions.get_option("transform_packages") .

transform_environment

NEM TÁMOGATOTT. Felhasználó által definiált környezet, amely szülőként szolgál minden belső fejlesztésű és változó adatátalakításhoz használt környezethez. Ha transform_environment = Nonea rendszer ehelyett egy új "kivonat" környezetet használ a szülő revoscalepy.baseenv használatával.

blocks_per_read

Megadja az adatforrásból beolvasott adattömbök olvasási blokkjainak számát.

report_progress

Egész számérték, amely a sorfeldolgozási folyamat jelentési szintjét határozza meg:

  • 0: nem jelent előrehaladást.

  • 1: a feldolgozott sorok száma ki lesz nyomtatva és frissítve.

  • 2: a feldolgozott sorok és az időzítések jelentése.

  • 3: feldolgozott sorok és az összes időzítés jelentése.

bővebb

Egy egész szám, amely meghatározza a kívánt kimenet mennyiségét. Ha 0, a számítások során a rendszer nem nyomtat részletes kimenetet. Egész számértékek a 1 növekvő mennyiségű információ biztosításához 4 .

compute_context

Beállítja a számítások végrehajtásának környezetét egy érvényes revoscalepy-val megadva. RxComputeContext. Jelenleg helyi és revoscalepy. Az RxInSqlServer számítási környezetek támogatottak.

Együttes

Vezérlési paraméterek a ensemblinghez.

Visszatérítések

A OneClassSvm betanított modellel rendelkező objektum.

Megjegyzés:

Ez az algoritmus egyszálas, és mindig megpróbálja betölteni a teljes adathalmazt a memóriába.

Lásd még

linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernelrx_predict.

Hivatkozások

Wikipédia: Anomáliadetektálás

Microsoft Azure Machine Learning Studio (klasszikus): One-Class vektorgép támogatása

High-Dimensional-disztribúció támogatásának becslése

Új támogatási vektor algoritmusok

LIBSVM: Könyvtár a vektorgépek támogatásához

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

Kimenet:

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