microsoftml.rx_oneclass_svm:異常偵測

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

機器學習一類支持向量機

詳細資訊

單類 SVM 是一種用於異常偵測的演算法。 異常偵測的目標是識別不屬於某個目標類別的異常值。 這種類型的 SVM 是單類別,因為訓練集僅包含目標類別的範例。 它推斷目標類別中物件的正常屬性,並從這些屬性預測哪些範例與正常範例不同。 這對異常偵測非常有用,因為訓練範例的稀缺是異常的定義特徵:通常網路入侵、詐騙或其他異常行為的案例非常少。

Arguments

公式

revoscalepy.rx_formula 中描述的公式。 互動術語 和 F() 目前在 microsoftml 中不支援。

資料

一個資料來源物件或指定 .xdf 檔案或資料框架物件的字串。

cache_size

儲存訓練資料的快取最大大小(MB)。 對於大型訓練組,請增加這個比例。 預設值是 100 MB。

核心

一個代表用於計算內積的核心的字串。 如需詳細資訊,請參閱ma_kernel()。 可用的選項如下:

  • rbf_kernel:徑向基底函數核。 其參數表示gammaexp(-gamma|x-y|^2。 若未指定,則預設除 1 以所使用特徵數量。 例如: rbf_kernel(gamma = .1) 。 這是預設值。

  • linear_kernel:線性核。

  • polynomial_kernel:多項式核,參數名稱 a為 , biasdeg 項為 (a*<x,y> + bias)^deg。 該 bias,預設為 0。 度 deg數 ,預設為 3。 若 a 未指定,則設定為除 1 以特徵數。

  • sigmoid_kernel:S形核,參數名稱gammacoef0為 ,項為 tanh(gamma*<x,y> + coef0)gamma預設為除 1 以特徵數。 參數 coef0 預設為 0。 例如: sigmoid_kernel(gamma = .1, coef0 = 0)

伊普西龍

優化器收斂的門檻。 若迭代間的改進低於閾值,演算法會停止並回傳當前模型。 該值必須大於或等於 numpy.finfo(double).eps。 預設值為 0.001。

離群值比例與支撐向量數量(以希臘字母 nu 表示)之間的權衡。 必須介於0到1之間,通常介於0.1到0.5之間。 預設值為 0.1。

shrink

True,則使用收縮啟發式 在這種情況下,部分樣本會在訓練過程中被「縮小」,這可能會加速訓練。 預設值是 True

正常化

指定所使用的自動正規化類型:

  • "Auto":若需要正規化,則會自動執行。 這是預設的選擇。

  • "No":不進行正規化。

  • "Yes":進行正規化。

  • "Warn":若需要正規化,會顯示警告訊息,但不會執行正規化。

正規化將不同資料範圍重新縮放到標準尺度。 特徵縮放確保資料點間距離成比例,並使梯度下降等各種優化方法能更快收斂。 若進行 MaxMin 正規化,則使用正規化器。 它在區間 [a, b] 內正規化,其中 -1 <= a <= 00 <= b <= 1b - a = 1。 此正規化器透過將零映射到零來保持稀疏性。

ml_transforms

指定一份在訓練前要對資料執行的 MicrosoftML 轉換清單,或是「若不執行轉換則 」。 參見 featurize_textcategoricalcategorical_hash和 ,以了解支援的轉換。 這些轉換會在指定的 Python 轉換後執行。 預設值是 None

ml_transform_vars

指定一個變數名稱的字元向量, ml_transforms 若不使用變數名稱,則指定為 None 。 預設值是 None

row_selection

不支援。 指定資料集中的列(觀察值),模型將使用資料集中的邏輯變數名稱(引號內)或使用資料集中變數的邏輯表達式。 例如:

  • row_selection = "old" 僅使用變數 old 值為 True的觀測值。

  • row_selection = (age > 20) & (age < 65) & (log(income) > 10)僅使用變數值age介於20至65之間且變數值logincome大於10的觀測值。

列選擇是在處理任何資料轉換後執行的(參見參數 transformstransform_function)。 與所有表達式一樣, row_selection 可以在函 expression 式呼叫之外使用函式定義。

變換

不支援。 代表第一輪變數轉換的表達式。 與所有表達式一樣, transforms (或 row_selection)可以在函式呼叫之外使用函 expression 式定義。

transform_objects

不支援。 一個命名的清單,包含可被 transformstransform_functionrow_selection和 所引用的物件。

transform_function

變數轉換函數。

transform_variables

一個用於轉換函數所需的輸入資料集變數的字元向量。

transform_packages

不支援。 一個字元向量,指定額外 Python 套件(除 在 中 RxOptions.get_option("transform_packages")指定的套件外)可供並預載,用於變數轉換函數。 例如,在 revoscalepy 函式中透過其 transformstransform_function 參數明確定義的函數,或是透過 their formularow_selection 參數隱含定義的函式。 transform_packages參數也可能是 None,表示外部沒有RxOptions.get_option("transform_packages")套件被預先載入。

transform_environment

不支援。 一個由使用者定義的環境,作為所有內部開發環境的父環境,並用於變量資料轉換。 若 transform_environment = None,則會使用新的「雜湊」環境,並使用父 revoscalepy.baseenv。

blocks_per_read

指定從資料來源讀取的每一塊資料要讀取的區塊數量。

report_progress

一個整數值,用來指定對資料列處理進度的報告層級:

  • 0:沒有進展報告。

  • 1:已處理的列數會被列印並更新。

  • 2:處理的行數及時間報告。

  • 3:列數已處理,所有時間點都會被報告。

詳細資訊

一個整數值,用來指定想要輸出的量。 若 0,則計算過程中不會印出冗長輸出。 整數值 來自 14 提供越來越多的資訊。

compute_context

設定計算執行的上下文,並以有效的 revoscalepy 指定。RxComputeContext。 目前是局部且 revoscalepy。支援 RxInSqlServer 的運算上下文。

合奏團

集合的控制參數。

退貨

一個 OneClassSvm 帶有訓練模型的物件。

備註

此演算法為單執行緒,且始終嘗試將整個資料集載入記憶體。

另請參閱

linear_kernelpolynomial_kernelrbf_kernelsigmoid_kernelrx_predict

參考資料

維基百科:異常偵測

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

估算 High-Dimensional 分布的支持度

新的支撐向量演算法

LIBSVM:支撐向量機的函式庫

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

輸出:

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