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的多项式内核, bias并在 deg 术语 (a*<x,y> + bias)^deg中。 默认值 bias0. 度, deg默认值为 3. 如果未 a 指定,则将其设置为 1 除以特征数。 例如,maKernelPoynomial(bias = 0, deg = `` 3)
  • sigmoidKernel():带参数名称和gammacoef0术语tanh(gamma*<x,y> + coef0)的 Sigmoid 内核。 gamma,默认 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 <= 1b - a = 1。 此规范化器通过将零映射到零来保留稀疏性。

mlTransforms

指定要在训练之前对数据执行的 MicrosoftML 转换的列表,或者 NULL 不执行任何转换。 有关支持的转换,请参阅 featurizeText分类分类Hash。 这些转换在任何指定的 R 转换之后执行。 默认值是 NULL

mlTransformVars

指定要用于 mlTransforms 变量名称的字符向量,或者 NULL 如果未使用任何名称,则为 。 默认值是 NULL

rowSelection

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

transforms

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

transformObjects

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

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计算期间不打印详细输出。 整数值, 1 用于 4 提供不断增加的信息量。

computeContext

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

ensemble

用于集成的控制参数。

...

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

详细信息

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

价值

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

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

注释

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

作者(s)

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

另请参阅

rbfKernellinearKernelpolynomialKernelsigmoidKernelrxFastTrees、rxFastForestrxFastLinearrxLogisticRegressionrxNeuralNetfeaturizeTextcategoricalHashrxPredict.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)