Aracılığıyla paylaş


microsoftml.rx_oneclass_svm: Anomali Algılama

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 Sınıf Destek Vektör Makineleri

Ayrıntılar

Tek sınıf SVM, anomali algılamaya yönelik bir algoritmadır. Anomali algılamanın amacı, bazı hedef sınıflara ait olmayan aykırı değerleri belirlemektir. Eğitim kümesi yalnızca hedef sınıftan örnekler içerdiğinden bu tür SVM tek sınıftır. Hedef sınıftaki nesneler için hangi özelliklerin normal olduğunu çıkarsar ve bu özelliklerden hangi örneklerin normal örneklerden farklı olduğunu tahmin eder. Eğitim örneklerinin kıtlığı anomalilerin tanımlama karakteri olduğundan bu, anomali algılama için yararlıdır: genellikle ağ izinsiz giriş, sahtekarlık veya diğer anormal davranış türlerine çok az örnek vardır.

Arguments

formül

revoscalepy.rx_formula'de açıklandığı gibi formül. Etkileşim terimleri ve F() şu anda microsoftml'de desteklenmiyor.

veriler

Bir veri kaynağı nesnesi veya .xdf dosyası veya veri çerçevesi nesnesi belirten bir karakter dizesi.

cache_size

Eğitim verilerini depolayan önbelleğin MB cinsinden en büyük boyutu. Büyük eğitim kümeleri için bunu artırın. Varsayılan değer 100 MB'tır.

çekirdek

İç ürünlerin hesaplanması için kullanılan çekirdeği temsil eden karakter dizesi. Daha fazla bilgi için bkz. ma_kernel(). Aşağıdaki seçenekler kullanılabilir:

  • rbf_kernel: Radyal temel işlev çekirdeği. parametresi terimini exp(-gamma|x-y|^2temsil edergamma. Belirtilmezse, varsayılan olarak 1 kullanılan özellik sayısına bölünür. Örneğin, rbf_kernel(gamma = .1). Bu varsayılan değerdir.

  • linear_kernel: Doğrusal çekirdek.

  • polynomial_kernel: parametre adları a, biasve deg terimiyle (a*<x,y> + bias)^degpolinom çekirdeği. , biasvarsayılan olarak olarak gösterilir 0. derecesi, degvarsayılan olarak olarak 3gösterilir. Belirtilmezse a , özellik sayısına bölünecek şekilde 1 ayarlanır.

  • sigmoid_kernel: Parametre adlarıyla gamma ve coef0 terimiyle tanh(gamma*<x,y> + coef0)Sigmoid çekirdeği. gamma, varsayılan olarak 1 özellik sayısına bölünür. parametresi coef0 varsayılan olarak değeridir 0. Örneğin, sigmoid_kernel(gamma = .1, coef0 = 0).

Epsilon

İyileştirici yakınsama eşiği. Yinelemeler arasındaki iyileştirme eşikten küçükse algoritma durur ve geçerli modeli döndürür. Değerin değerinden büyük veya buna eşit numpy.finfo(double).epsolması gerekir. Varsayılan değer 0,001'dir.

Nu

Aykırı değerlerin kesirleri ile destek vektörlerinin sayısı arasındaki denge (Yunanca harf nu ile temsil edilir). 0 ile 1 arasında, genellikle 0,1 ile 0,5 arasında olmalıdır. Varsayılan değer 0,1'dir.

shrink

ise Truedaraltma buluşsalını kullanır. Bu durumda, eğitim yordamı sırasında bazı örnekler "küçültülür" ve bu da eğitimi hızlandırabilir. Varsayılan değer şudur: True.

Normalleştirmek

Kullanılan otomatik normalleştirme türünü belirtir:

  • "Auto": normalleştirme gerekiyorsa otomatik olarak gerçekleştirilir. Bu varsayılan seçenektir.

  • "No": normalleştirme yapılmaz.

  • "Yes": normalleştirme gerçekleştirilir.

  • "Warn": normalleştirme gerekiyorsa, bir uyarı iletisi görüntülenir, ancak normalleştirme gerçekleştirilmez.

Normalleştirme, farklı veri aralıklarını standart bir ölçeğe yeniden ölçeklendirir. Özellik ölçeklendirme, veri noktaları arasındaki mesafelerin orantılı olmasını sağlar ve gradyan azalma gibi çeşitli iyileştirme yöntemlerinin çok daha hızlı yakınsamasını sağlar. Normalleştirme yapılırsa bir MaxMin normalleştirici kullanılır. [a, b] nerede -1 <= a <= 0 ve 0 <= b <= 1b - a = 1aralığındaki değerleri normalleştirir. Bu normalleştirici sıfırdan sıfıra eşleyerek sparsity'yi korur.

ml_transforms

Eğitimden önce veriler üzerinde gerçekleştirilecek MicrosoftML dönüşümlerinin listesini veya hiçbir dönüşüm gerçekleştirilecekse Hiçbiri'ni belirtir. Desteklenen dönüştürmeler için bkz featurize_text. , categoricalve categorical_hash. Bu dönüştürmeler, belirtilen Python dönüşümlerinden sonra gerçekleştirilir. Varsayılan değer olarak Hiçbiri kullanılır.

ml_transform_vars

Kullanılacak değişken adlarının karakter vektörlerini veya hiçbiri kullanılmadıysa ml_transformsHiçbiri'ni belirtir. Varsayılan değer olarak Hiçbiri kullanılır.

row_selection

DESTEKLENMEDİ. Model tarafından veri kümesindeki bir mantıksal değişkenin adıyla (tırnak içinde) veya veri kümesindeki değişkenleri kullanan bir mantıksal ifadeyle kullanılacak satırları (gözlemleri) belirtir. Örneğin:

  • row_selection = "old" yalnızca değişkeninin oldTruedeğerinin olduğu gözlemleri kullanır.

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10) yalnızca değişkenin değerinin age 20 ile 65 arasında olduğu ve değişkenin değerinin logincome 10'dan büyük olduğu gözlemleri kullanır.

Satır seçimi, veri dönüştürmeleri işlendikten sonra gerçekleştirilir (veya bağımsız değişkenlerine transformstransform_functionbakın). Tüm ifadelerde olduğu gibi, row_selection işlevi kullanılarak expression işlev çağrısı dışında tanımlanabilir.

Dönüştüren

DESTEKLENMEDİ. Değişken dönüşümlerinin ilk turunu temsil eden formun ifadesi. Tüm ifadelerde olduğu gibi , transforms (veya row_selection) işlevi kullanılarak expression işlev çağrısı dışında tanımlanabilir.

transform_objects

DESTEKLENMEDİ. , transform_functionve row_selectiontarafından transformsbaşvurulabilen nesneler içeren adlandırılmış liste.

transform_function

Değişken dönüştürme işlevi.

transform_variables

Dönüştürme işlevi için gereken giriş veri kümesi değişkenlerinin karakter vektörleri.

transform_packages

DESTEKLENMEDİ. Değişken dönüştürme işlevlerinde kullanılmak üzere kullanıma sunulacak ve önceden yüklenecek ek Python paketlerini (içinde RxOptions.get_option("transform_packages")belirtilenlerin dışında) belirten bir karakter vektör. Örneğin, ve bağımsız değişkenleri aracılığıyla transformstransform_functionrevoscalepy işlevlerinde açıkça tanımlananlar veya veya bağımsız değişkenleri aracılığıyla formularow_selection örtük olarak tanımlananlar. Bağımsız transform_packages değişken, dışında RxOptions.get_option("transform_packages") hiçbir paketin önceden yüklenmediğini gösteren Hiçbiri de olabilir.

transform_environment

DESTEKLENMEDİ. Dahili olarak geliştirilen ve değişken veri dönüşümü için kullanılan tüm ortamların üst öğesi olarak görev yapmak için kullanıcı tanımlı bir ortam. ise transform_environment = None, bunun yerine üst revoscalepy.baseenv içeren yeni bir "karma" ortam kullanılır.

blocks_per_read

Veri kaynağından okunan her veri öbekleri için okunacak blok sayısını belirtir.

report_progress

Satır işleme ilerleme durumuyla ilgili raporlama düzeyini belirten bir tamsayı değeri:

  • 0: herhangi bir ilerleme bildirilmemiştir.

  • 1: işlenen satır sayısı yazdırılır ve güncelleştirilir.

  • 2: işlenen satırlar ve zamanlamalar bildirilir.

  • 3: işlenen satırlar ve tüm zamanlamalar bildirilir.

verbose

İstenen çıkış miktarını belirten bir tamsayı değeri. ise 0, hesaplamalar sırasında ayrıntılı çıktı yazdırılmaz. Artan miktarda bilgi sağlamak için 4 olan 1 tamsayı değerleri.

compute_context

Geçerli bir revoscalepy ile belirtilen hesaplamaların yürütülme bağlamını ayarlar. RxComputeContext. Şu anda yerel ve revoscalepy. RxInSqlServer işlem bağlamları desteklenir.

Topluluğu

Benzerliği için denetim parametreleri.

İade

OneClassSvm Eğitilmiş modele sahip bir nesne.

Uyarı

Bu algoritma tek iş parçacıklıdır ve her zaman veri kümesinin tamamını belleğe yüklemeyi dener.

Ayrıca bakınız

linear_kernel, polynomial_kernel, rbf_kernel, , sigmoid_kernel. rx_predict

References

Vikipedi: Anomali algılama

Microsoft Azure Machine Learning Studio (klasik): One-Class Destek Vektör Makinesi

High-Dimensional Dağıtımının Desteğini Tahmin Etme

Yeni Destek Vektör Algoritmaları

LIBSVM: Destek Vektör Makineleri kitaplığı

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

Çıktı:

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