microsoftml.rx_oneclass_svm:異常偵測

使用量

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)

描述

Machine Learning 一類支援向量機器

詳細資料

單一類別 SVM 是異常偵測的演算法。 異常偵測的目標是識別不屬於某些目標類別的極端值。 這種類型的 SVM 是一個類別,因為定型集只包含來自目標類別的範例。 它會推斷目標類別中物件的正常屬性,而這些屬性會預測哪些範例與一般範例不同。 這適用于異常偵測,因為定型範例的困難性是異常的定義字元:通常只有少數網路入侵、詐騙或其他類型的異常行為範例。

引數

公式

如revoscalepy.rx_formula中所述的公式。 microsoftml目前不支援互動條款和 F()

資料

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

cache_size

儲存定型資料的快取大小上限,以 MB 為單位。 針對大型訓練集增加此值。 預設值為 100 MB。

核心 (kernel)

字元字串,表示用於計算內部產品的核心。 如需詳細資訊,請參閱ma_kernel()。 可用的選項如下:

  • rbf_kernel:星形基礎函式核心。 其參數在 gamma 詞彙 exp(-gamma|x-y|^2 中表示。 如果未指定,預設會 1 除以使用的功能數目。 例如: rbf_kernel(gamma = .1) 。 這是預設值。

  • linear_kernel:線性核心。

  • polynomial_kernel:參數名稱 a 為 、 biasdeg 的多項式核心,在 詞彙 (a*<x,y> + bias)^deg 中為 。 預設 bias0 。 度 deg ,預設為 3 。 如果未 a 指定 ,則會將其設定為 1 除以特徵數目。

  • sigmoid_kernel:具有參數名稱和 gammacoef0 詞彙 tanh(gamma*<x,y> + coef0) 中的 Sigmoid 核心。 gamma預設會 1 除以特徵數目。 參數 coef0 預設為 0 。 例如: sigmoid_kernel(gamma = .1, coef0 = 0)

epsilon

優化工具聚合的臨界值。 換句話說,如果反覆運算之間的改進少於臨界值,此演算法會停止,並傳回目前的模型。 值必須大於或等於 numpy.finfo(double).eps 。 預設值為 0.001。

nu

極端值分數與希臘字母 nu) 所代表的支援向量數目 (取捨。 必須介於 0 到 1 之間,通常介於 0.1 和 0.5 之間。 預設值為 0.1。

shrink

如果 True ,則使用壓縮啟發學習法。 在此情況下,某些範例會在定型程式期間「壓縮」,這可能會加速定型。 預設值是 True

normalize

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

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

  • "No":不會執行正規化。

  • "Yes":會執行正規化。

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

正規化會將不同的資料範圍重新調整為標準小數位數。 功能縮放可確保資料點之間的距離成正比,並啟用各種優化方法,例如漸層下降以更快聚合。 如果執行正規化, MaxMin 則會使用正規化程式。 它會以間隔 [a, b] 將值正規化,其中 -1 <= a <= 00 <= b <= 1b - a = 1 。 此正規化程式會藉由將零對應至零來保留疏疏性。

ml_transforms

指定要在定型之前對資料執行的 MicrosoftML 轉換清單,如果未執行任何轉換,則為 None 。 如需支援的轉換,請參閱 featurize_textcategoricalcategorical_hash 。 這些轉換會在任何指定的 Python 轉換之後執行。 預設值為 None

ml_transform_vars

指定要用於 ml_transforms 變數名稱的字元向量;如果未使用任何名稱,則為 None 。 預設值為 None

row_selection

不支援。 指定資料列 (觀察) 從資料集) ,此資料集會以) 引號 ( (,或是使用資料集中的變數,搭配邏輯運算式使用資料集中的變數。 例如:

  • row_selection = "old" 只會使用變數 oldTrue 值為 的觀察。

  • 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

不支援。 具名清單,其中包含 、 transform_functionrow_selection 可以參考 transforms 的物件。

transform_function

變數轉換函式。

transform_variables

轉換函式所需的輸入資料集變數字元向量。

transform_packages

不支援。 字元向量,指定其他 Python 套件 () 中指定的 RxOptions.get_option("transform_packages") 套件之外,可供使用,並預先載入以供變數轉換函式使用。 例如,透過 和 transformstransform_function 引數在revoscalepy函式中明確定義的函式,或透過 其 formularow_selection 引數隱含定義的函式。 自 transform_packages 變數也可能是 None,表示未預先載入外部 RxOptions.get_option("transform_packages") 的套件。

transform_environment

不支援。 使用者定義的環境,做為內部開發且用於變數資料轉換之所有環境的父系。 如果 transform_environment = None 為 ,則會改用具有父 revoscalepy.baseenv 的新 「hash」 環境。

blocks_per_read

指定要針對從資料來源讀取之每個資料區塊讀取的區塊數目。

report_progress

整數值,指定資料列處理進度的報告層級:

  • 0:不會報告任何進度。

  • 1:列印和更新已處理的資料列數目。

  • 2:已處理的資料列和時間會回報。

  • 3:已處理的資料列和所有計時都會回報。

verbose

指定所要輸出數量的整數值。 如果 0 為 ,則計算期間不會列印任何詳細資訊輸出。 從 14 中提供增加資訊量的整數值。

compute_coNtext

設定執行計算的內容,以有效的 revoscalepy 指定。RxComputeCoNtext。 目前本機和 revoscalepy。支援 RxInSqlServer 計算內容。

集成

控制系結的參數。

傳回

具有 OneClassSvm 定型模型的 物件。

注意

此演算法是單一執行緒的,而且一律會嘗試將整個資料集載入記憶體中。

另請參閱

linear_kernel, polynomial_kernel, rbf_kernel, sigmoid_kernel, rx_predict.

參考資料

Wikipedia:異常偵測

Microsoft Azure 機器學習 Studio (傳統) :One-Class支援向量機器

估計高維度分佈的支援

新的支援向量演算法

LIBSVM:支援向量機器的程式庫

範例

'''
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