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:径向基函数内核。 其参数在术语exp(-gamma|x-y|^2中表示gamma。 如果未指定,则默认 1 除以使用的功能数。 例如,rbf_kernel(gamma = .1)。 这是默认值。

  • linear_kernel:线性内核。

  • polynomial_kernel:具有参数名称 a的多项式内核, bias并在 deg 术语 (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)

小量

优化器收敛的阈值。 如果迭代之间的改进小于阈值,算法将停止并返回当前模型。 该值必须大于或等于 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 转换的列表;如果未执行任何转换,则为 None 。 有关支持的转换,请参阅 >>。 这些转换在任何指定的 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 可以使用函数在函数调用expression外部定义(或row_selection)。

transform_objects

不支持。 一个命名列表,其中包含可由 <a0/> 和引用的对象。

transform_function

变量转换函数。

transform_variables

转换函数所需的输入数据集变量的字符向量。

transform_packages

不支持。 一个字符向量,用于指定其他 Python 包(在指定 RxOptions.get_option("transform_packages")包之外)可供使用并预加载,以便在变量转换函数中使用。 例如,在 revoscalepy 函数中显式定义的函数通过参数transformstransform_function参数或通过参数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计算期间不打印详细输出。 整数值, 1 用于 4 提供不断增加的信息量。

compute_context

设置使用有效的 revoscalepy 指定的计算执行的上下文。RxComputeContext。 当前为本地和 revoscalepy。支持 RxInSqlServer 计算上下文。

集成

用于集成的控制参数。

退货

具有 OneClassSvm 已训练模型的对象。

注释

此算法是单线程算法,将始终尝试将整个数据集加载到内存中。

另请参阅

linear_kernel、、polynomial_kernelrbf_kernelsigmoid_kernel. rx_predict

References

维基百科:异常情况检测

Microsoft Azure 机器学习工作室(经典):One-Class 支持向量机

估算 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