rxOneClassSvm:OneClass SVM

机器学习单类支持向量机

用法

  rxOneClassSvm(formula = NULL, data, cacheSize = 100, kernel = rbfKernel(),
    epsilon = 0.001, nu = 0.1, shrink = TRUE, normalize = "auto",
    mlTransforms = NULL, mlTransformVars = NULL, rowSelection = NULL,
    transforms = NULL, transformObjects = NULL, transformFunc = NULL,
    transformVars = NULL, transformPackages = NULL, transformEnvir = NULL,
    blocksPerRead = rxGetOption("blocksPerRead"),
    reportProgress = rxGetOption("reportProgress"), verbose = 1,
    computeContext = rxGetOption("computeContext"),
    ensemble = ensembleControl(), ...)

参数

formula

rxFormula 中描述的公式。 MicrosoftML 目前不支持交互项和 F()

data

指定 .xdf 文件或数据帧对象的数据源对象或字符串。

cacheSize

存储训练数据的缓存的最大大小 (MB)。 对于大型训练集,可以增加此大小。 默认值为 100 MB。

kernel

表示用于计算内部产品的内核的字符串。 有关详细信息,请参阅 maKernel。 可用选项如下:

  • rbfKernel():径向基础函数内核。 它的参数表示项 exp(-gamma|x-y|^2 中的 gamma。 如果没有指定,则默认为 1 除以使用的特征数。 例如 rbfKernel(gamma = .1)。 这是默认值。
  • linearKernel():线性内核。
  • polynomialKernel():多项式内核,在项 (a*<x,y> + bias)^deg 中,参数名称为 abiasdegbias 默认为 0。 度 deg 默认为 3。 如果没有指定 a,则设置为 1 除以特征数。 例如,maKernelPoynomial(bias = 0, deg = `` 3)
  • sigmoidKernel():Sigmoid 内核,在项 tanh(gamma*<x,y> + coef0) 中,参数名称为 gammacoef0gamma 默认为 1 除以特征数。 参数 coef0 的默认值为 0。 例如 sigmoidKernel(gamma = .1, coef0 = 0)

epsilon

优化器收敛的阈值。 如果迭代间的改进小于阈值,则算法将停止并返回当前模型。 该值必须大于或等于 .Machine$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 <= 1 并且 b - a = 1。 此规范化程序通过将 0 映射到 0 来保持稀疏度。

mlTransforms

指定在训练前要对数据执行的 MicrosoftML 转换的列表;如果不需要执行任何转换,则指定为 NULL。 有关支持的转换,请参阅 featurizeTextcategoricalcategoricalHash。 这些转换在任何指定的 R 转换之后执行。 默认值是 NULL

mlTransformVars

指定要在 mlTransforms 中使用的变量名称的字符向量;如果不使用任何变量名称,则指定为 NULL。 默认值是 NULL

rowSelection

使用数据集中的逻辑变量名称(带引号)或通过使用数据集中的变量的逻辑表达式指定模型要使用的数据集中的行(观察值)。 例如,rowSelection = "old" 将仅使用变量 old 的值为 TRUE 的观察值。 rowSelection = (age > 20) & (age < 65) & (log(income) > 10) 仅使用 age 变量值介于 20 和 65 之间且 income 变量的 log 值大于 10 的观察值。 在处理任何数据转换之后执行行选择(请参阅参数 transformstransformFunc)。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 rowSelection

transforms

表示第一轮变量转换的窗体 list(name = expression, ``...) 的表达式。 与所有表达式一样,可以使用表达式函数在函数调用之外定义 transforms(或 rowSelection)。

transformObjects

一个命名列表,其中包含可由 transformstransformsFuncrowSelection 引用的对象。

transformFunc

变量转换函数。 有关详细信息,请参阅 rxTransform。

transformVars

转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。

transformPackages

一个字符向量,用于指定将提供和预加载以在变量转换函数中使用的附加 R 包(在 rxGetOption("transformPackages") 中指定的包之外)。 例如,在 RevoScaleR 函数中通过 transformstransformFunc 参数显式定义的那些包,或者通过 formularowSelection 参数隐式定义的包。 transformPackages 参数也可能为 NULL,表示未预加载 rxGetOption("transformPackages") 以外的包。

transformEnvir

用户定义环境,充当内部开发并用于变量数据转换的所有环境的父级。 如果为 transformEnvir = NULL,则改用具有父级 baseenv() 的新“哈希”环境。

blocksPerRead

为从数据源读取的每个数据块指定要读取的块数。

reportProgress

一个整数值,指定行处理进度的报告级别:

  • 0:不报告进度。
  • 1:打印并更新已处理的行数。
  • 2:报告已处理的行数和计时。
  • 3:报告已处理的行数和所有计时。

verbose

一个整数值,指定需要的输出量。 如果为 0,则计算期间不会打印详细输出。 从 14 的整数值表示提供的信息量逐步增加。

computeContext

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

ensemble

控制用于集成的参数。

...

要直接传递到 Microsoft 计算引擎的其他参数。

详细信息

检测是为了识别不属于某个目标类的离群值。 这种类型的 SVM 是单类的,因为训练集仅包含来自目标类的示例。 它推断目标类中对象的正常属性,并且从这些属性中预测哪些示例与普通示例不同。 这对于异常情况检测很有用,因为缺少训练示例是异常情况的决定性特征:通常很少有网络入侵、欺诈或其他类型的异常行为的示例。

rxOneClassSvm:具有已训练模型的 rxOneClassSvm 对象。

OneClassSvm:OneClass Svm 训练程序的类 maml 的学习器规范对象。

备注

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

作者

Microsoft Corporation Microsoft Technical Support

参考

Anomaly detection

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

Support of a High-Dimensional Distribution

Support Vector Algorithms

for Support Vector Machines

另请参阅

rbfKernellinearKernelpolynomialKernelsigmoidKernelrxFastTreesrxFastForestrxFastLinearrxLogisticRegressionrxNeuralNetfeaturizeTextcategoricalcategoricalHashrxPredict.mlModel

示例


 # Estimate a One-Class SVM model
 trainRows <- c(1:30, 51:80, 101:130)
 testRows = !(1:150 %in% trainRows)
 trainIris <- iris[trainRows,]
 testIris <- iris[testRows,]

 svmModel <- rxOneClassSvm(
     formula = ~Sepal.Length + Sepal.Width + Petal.Length + Petal.Width,
     data = trainIris)

 # Add additional non-iris data to the test data set
 testIris$isIris <- 1
 notIris <- data.frame(
     Sepal.Length = c(2.5, 2.6),
     Sepal.Width = c(.75, .9),
     Petal.Length = c(2.5, 2.5),
     Petal.Width = c(.8, .7),
     Species = c("not iris", "not iris"),
     isIris = 0)
 testIris <- rbind(testIris, notIris)  

 scoreDF <- rxPredict(svmModel, 
      data = testIris, extraVarsToWrite = "isIris")

 # Look at the last few observations
 tail(scoreDF)
 # Look at average scores conditioned by 'isIris'
 rxCube(Score ~ F(isIris), data = scoreDF)