机器学习一类支持向量机
用法
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
中。 默认值bias
为0
. 度,deg
默认值为3
. 如果未a
指定,则将其设置为1
除以特征数。 例如,maKernelPoynomial(bias = 0, deg = `` 3)
。 -
sigmoidKernel()
:带参数名称和gamma
coef0
术语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 <= 0
和0 <= b <= 1
和b - 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 之间的观察值,而变量的值log
income
大于 10。 在处理任何数据转换后执行行选择(请参阅参数 transforms
或 transformFunc
)。 与所有表达式一样, rowSelection
可以使用表达式函数在函数调用外部定义。
transforms
表示第一轮变量转换的窗体 list(name = expression, ``...)
的表达式。 与所有表达式一样, transforms
可以使用表达式函数在函数调用外部定义(或 rowSelection
)。
transformObjects
一个命名列表,其中包含可由 <
transformFunc
变量转换函数。 有关详细信息,请参阅 rxTransform。
transformVars
转换函数所需的输入数据集变量的字符向量。 有关详细信息,请参阅 rxTransform。
transformPackages
一个字符向量,用于指定其他 R 包(在指定 rxGetOption("transformPackages")
包之外)可供使用并预加载,以便在变量转换函数中使用。 例如,在 RevoScaleR 函数中显式定义的函数通过参数transforms
和transformFunc
参数或通过参数formula
rowSelection
隐式定义这些函数。 该 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
参考文献
Azure Machine Learning Studio (classic): One-Class Support Vector Machine
Support of a High-Dimensional Distribution
另请参阅
rbfKernel、linearKernel、polynomialKernel、sigmoidKernelrxFastTrees、rxFastForest、rxFastLinear、rxLogisticRegression、rxNeuralNet、featurizeText、categoricalHash、rxPredict.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)