One-Class SVM与传统SVM不同,是一种非监督的学习算法。您可以使用One-Class SVM异常检测通过学习边界对异常点进行预测。本文为您介绍One-Class SVM异常检测的参数配置。

使用限制

支持运行的计算资源为MaxCompute。

组件配置

您可以通过以下任意一种方式,配置One-Class SVM异常检测参数。

方式一:可视化方式

在PAI-Designer工作流页面配置组件参数。
页签 参数说明 描述
字段设置 特征列名数组 特征列名的数组。
分组列名数组 分组列名的数组。
tensor列 tensor列。
向量列名 向量列对应的列名。
参数设置 预测结果列名 预测结果列的列名。
Kernel函数的相关参数coef0 核函数的相关参数,默认为0.0。
说明 当核函数类型为POLY和SIGMOID时,该参数才会生效。
多项式阶数 多项式的阶数。
收敛阈值 迭代方法的终止判断阈值,默认为1.0E-6。
Kernel函数的相关参数gamma 核函数的相关参数,默认为-1.0。
说明 当核函数类型为RBF、POLY和SIGMOID时,该参数才会生效。如果未设置该参数,默认取值为1/特征维度。
核函数类型 核函数的类型,取值如下:
  • RBF
  • POLY
  • SIGMOID
  • LINEAR
每组最大异常点数目 每组的最大异常点数目。
最大异常点比例 算法检测异常点的最大比例。
每组最大样本数目 每组最大的样本数目。
异常点比例上界参数nu 与支持向量的数目正向相关。取值范围为(0,1),默认为0.01。
异常评分阈值 当评分大于该阈值时,判定为异常点。
预测详细信息列名 预测详细信息列的名称。
组件多线程线程个数 组件多线程的线程个数。
执行调优 节点个数 节点个数,与参数单个节点内存大小配对使用,正整数。范围[1, 9999]。
单个节点内存大小,单位M 单个节点内存大小,单位MB,正整数。范围[1024, 64*1024]。

方式二:Python代码方式

使用Python脚本V2组件,配置该组件参数。您可以使用Python脚本V2组件进行Python代码调用,详情请参见Python脚本V2
参数名称 是否必选 描述 默认值
predictionCol 预测结果列的列名。
degree 多项式的阶数。 2
epsilon 迭代方法的终止判断阈值。 1.0E-6
featureCols 特征列名数组。 全选
groupCols 分组列名数组。
maxOutlierNumPerGroup 每组的最大异常点数目。
maxOutlierRatio 算法检测异常点的最大比例。
maxSampleNumPerGroup 每组最大的样本数目。
outlierThreshold 当评分大于该阈值时,判定为异常点。
predictionDetailCol 预测详细信息列的名称。
tensorCol tensor列。
vectorCol 向量列对应的列名。
kernelType 核函数的类型,取值如下:
  • RBF
  • POLY
  • SIGMOID
  • LINEAR
RBF
coef0 核函数的相关参数。
说明 当核函数类型为POLY和SIGMOID时,该参数才会生效。
0.0
gamma 核函数的相关参数。
说明 当核函数类型为RBF、POLY和SIGMOID时,该参数才会生效。如果未设置该参数,默认取值为1/特征维度。
-1.0
nu 与支持向量的数目正向相关。取值范围为(0,1)。 0.01
numThreads 组件多线程的线程个数。 1
Python代码方式的使用示例如下。
df = pd.DataFrame([
[0.730967787376657,0.24053641567148587,0.6374174253501083,0.5504370051176339],
[0.7308781907032909,0.41008081149220166,0.20771484130971707,0.3327170559595112],
[0.7311469360199058,0.9014476240300544,0.49682259343089075,0.9858769332362016],
[0.731057369148862,0.07099203475193139,0.06712000939049956,0.768156984078079],
[0.7306094602878371,0.9187140138555101,0.9186071189908658,0.6795571637816596],
[0.730519863614471,0.08825840967622589,0.4889045498516358,0.461837214623537],
[0.7307886238322471,0.5796252073129174,0.7780122870716483,0.11499709190022733],
[0.7306990420600421,0.7491696031336331,0.34830970303125697,0.8972771427421047]])

# load data
data = BatchOperator.fromDataframe(df, schemaStr="x1 double, x2 double, x3 double, x4 double")

OcsvmOutlierBatchOp() \
            .setFeatureCols(["x1", "x2", "x3", "x4"]) \
            .setGamma(0.5) \
            .setNu(0.1) \
            .setKernelType("RBF") \
            .setPredictionCol("pred").linkFrom(data).print()