microsoftml.rx_oneclass_svm: Deteksi Anomali
Penggunaan
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)
Deskripsi
Mesin Vektor Dukungan Machine Learning One Class
Detail
SVM satu kelas adalah algoritma untuk deteksi anomali. Tujuan deteksi anomali adalah untuk mengidentifikasi outlier yang bukan milik beberapa kelas target. Jenis SVM ini adalah satu kelas karena set pelatihan hanya berisi contoh dari kelas target. Ini menyimpulkan properti apa yang normal untuk objek di kelas target dan dari properti ini memprediksi contoh mana yang tidak seperti contoh normal. Ini berguna untuk deteksi anomali karena kelangkaan contoh pelatihan adalah karakter anomali yang menentukan: biasanya ada sangat sedikit contoh gangguan jaringan, penipuan, atau jenis perilaku anomali lainnya.
Argumen
Formula
Rumus seperti yang dijelaskan dalam revoscalepy.rx_formula.
Istilah interaksi dan F()
saat ini tidak didukung di microsoftml.
data
Objek sumber data atau string karakter yang menentukan file .xdf atau objek bingkai data.
cache_size
Ukuran maksimal dalam MB cache yang menyimpan data pelatihan. Tingkatkan ini untuk set pelatihan besar. Nilai defaultnya adalah 100 MB.
kernel
String karakter yang mewakili kernel yang digunakan untuk menghitung produk dalam. Untuk informasi selengkapnya, lihat ma_kernel()
. Pilihan berikut tersedia:
rbf_kernel
: Kernel fungsi dasar radial. Parameternya mewakiligamma
dalam istilahexp(-gamma|x-y|^2
. Jika tidak ditentukan, defaultnya1
dibagi dengan jumlah fitur yang digunakan. Contohnya,rbf_kernel(gamma = .1)
. Ini adalah nilai default.linear_kernel
: Kernel linier.polynomial_kernel
: Kernel polinomial dengan namaa
parameter , ,bias
dandeg
dalam istilah(a*<x,y> + bias)^deg
.bias
, default ke0
. Derajat,deg
, default ke3
. Jikaa
tidak ditentukan, itu diatur untuk1
dibagi dengan jumlah fitur.sigmoid_kernel
: Kernel Sigmoid dengan namagamma
parameter dancoef0
dalam istilahtanh(gamma*<x,y> + coef0)
.gamma
, default untuk1
dibagi dengan jumlah fitur. Parametercoef0
default ke0
. Contohnya,sigmoid_kernel(gamma = .1, coef0 = 0)
.
Epsilon
Ambang batas untuk konvergensi pengoptimal. Jika perbaikan antara perulangan kurang dari ambang batas, algoritma akan berhenti dan mengembalikan model saat ini. Nilai harus lebih besar dari atau sama dengan numpy.finfo(double).eps
. Nilai defaultnya adalah 0,001.
Nu
Trade-off antara pecahan outlier dan jumlah vektor dukungan (diwakili oleh huruf Yunani nu). Harus antara 0 dan 1, biasanya antara 0,1 dan 0,5. Nilai defaultnya adalah 0,1.
Mengecilkan
Menggunakan heuristik penyusutan jika True
. Dalam hal ini, beberapa sampel akan "menyusut" selama prosedur pelatihan, yang dapat mempercepat pelatihan. Nilai defaultnya adalah True
.
Menormalkan
Menentukan jenis normalisasi otomatis yang digunakan:
"Auto"
: jika normalisasi diperlukan, itu dilakukan secara otomatis. Ini adalah pilihan default."No"
: tidak ada normalisasi yang dilakukan."Yes"
: normalisasi dilakukan."Warn"
: jika normalisasi diperlukan, pesan peringatan ditampilkan, tetapi normalisasi tidak dilakukan.
Normalisasi menskalakan ulang rentang data yang berbeda dengan skala standar. Penskalaan fitur memastikan jarak antara titik data proporsional dan memungkinkan berbagai metode pengoptimalan seperti penurunan gradien untuk berkonversi jauh lebih cepat. Jika normalisasi dilakukan, MaxMin
normalizer akan digunakan. Ini menormalkan nilai dalam interval [a, b] di mana -1 <= a <= 0
dan b - a = 1
0 <= b <= 1
. Normalizer ini mempertahankan sparsitas dengan memetakan nol ke nol.
ml_transforms
Menentukan daftar transformasi MicrosoftML yang akan dilakukan pada data sebelum pelatihan atau Tidak Ada jika tidak ada transformasi yang harus dilakukan. Lihat featurize_text
, , categorical
dan categorical_hash
, untuk transformasi yang didukung.
Transformasi ini dilakukan setelah transformasi Python yang ditentukan.
Nilai defaultnya adalah Tidak Ada.
ml_transform_vars
Menentukan vektor karakter nama variabel yang akan digunakan di ml_transforms
atau Tidak Ada jika tidak ada yang akan digunakan.
Nilai defaultnya adalah Tidak Ada.
row_selection
TIDAK DIDUKUNG. Menentukan baris (pengamatan) dari himpunan data yang akan digunakan oleh model dengan nama variabel logis dari himpunan data (dalam tanda kutip) atau dengan ekspresi logis menggunakan variabel dalam himpunan data. Contohnya:
row_selection = "old"
hanya akan menggunakan pengamatan di mana nilai variabelold
adalahTrue
.row_selection = (age > 20) & (age < 65) & (log(income) > 10)
hanya menggunakan pengamatan di mana nilaiage
variabel adalah antara 20 dan 65 dan nilailog
income
variabel lebih besar dari 10.
Pemilihan baris dilakukan setelah memproses transformasi data apa pun (lihat argumen transforms
atau transform_function
). Seperti semua ekspresi, row_selection
dapat didefinisikan di luar panggilan fungsi menggunakan expression
fungsi .
transformasi
TIDAK DIDUKUNG. Ekspresi formulir yang mewakili putaran pertama transformasi variabel. Seperti semua ekspresi, transforms
(atau row_selection
) dapat didefinisikan di luar panggilan fungsi menggunakan expression
fungsi .
transform_objects
TIDAK DIDUKUNG. Daftar bernama yang berisi objek yang dapat dirujuk oleh transforms
, transform_function
, dan row_selection
.
transform_function
Fungsi transformasi variabel.
transform_variables
Vektor karakter variabel himpunan data input yang diperlukan untuk fungsi transformasi.
transform_packages
TIDAK DIDUKUNG. Vektor karakter yang menentukan paket Python tambahan (di luar yang ditentukan dalam RxOptions.get_option("transform_packages")
) untuk tersedia dan dimuat sebelumnya untuk digunakan dalam fungsi transformasi variabel.
Misalnya, mereka yang secara eksplisit didefinisikan dalam fungsi pencabutan skala melalui argumen dan transform_function
mereka transforms
atau yang didefinisikan secara implisit melalui argumen atau row_selection
merekaformula
. Argumen transform_packages
mungkin juga Tidak Ada, menunjukkan bahwa tidak ada paket di luar RxOptions.get_option("transform_packages")
yang dimuat sebelumnya.
transform_environment
TIDAK DIDUKUNG. Lingkungan yang ditentukan pengguna untuk berfungsi sebagai induk untuk semua lingkungan yang dikembangkan secara internal dan digunakan untuk transformasi data variabel.
Jika transform_environment = None
, lingkungan "hash" baru dengan revoscalepy.baseenv induk digunakan sebagai gantinya.
blocks_per_read
Menentukan jumlah blok yang akan dibaca untuk setiap potongan data yang dibaca dari sumber data.
report_progress
Nilai bilangan bulat yang menentukan tingkat pelaporan pada kemajuan pemrosesan baris:
0
: tidak ada kemajuan yang dilaporkan.1
: jumlah baris yang diproses dicetak dan diperbarui.2
: baris yang diproses dan waktu dilaporkan.3
: baris yang diproses dan semua waktu dilaporkan.
verbose
Nilai bilangan bulat yang menentukan jumlah output yang diinginkan.
Jika 0
, tidak ada output verbose yang dicetak selama perhitungan. Nilai bilangan bulat dari 1
untuk 4
memberikan peningkatan jumlah informasi.
compute_context
Mengatur konteks di mana komputasi dijalankan, ditentukan dengan pencabutan yang valid. RxComputeContext. Saat ini lokal dan revoscalepy. Konteks komputasi RxInSqlServer didukung.
Ansambel
Parameter kontrol untuk ansambel.
Mengembalikan
Objek OneClassSvm
dengan model terlatih.
Catatan
Algoritma ini berutas tunggal dan akan selalu mencoba memuat seluruh himpunan data ke dalam memori.
Lihat juga
linear_kernel
, polynomial_kernel
, rbf_kernel
, sigmoid_kernel
, rx_predict
.
Referensi
Microsoft Azure Machine Learning Studio (klasik): Komputer Vektor Dukungan One-Class
Memperkirakan Dukungan Distribusi High-Dimensional
Algoritma Vektor Dukungan Baru
LIBSVM: Pustaka untuk Mesin Vektor Dukungan
Contoh
'''
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())
Output:
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