IForest异常检测

IForest异常检测使用sub-sampling算法,降低了算法的计算复杂度,可以识别数据中的异常点,在异常检测领域有显著的应用效果。本文为您介绍IForest异常检测的参数配置。

组件配置

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

方式一:可视化方式

Designer工作流页面配置组件参数。

页签

参数名称

描述

字段设置

特征列名数组

如果您已经配置了向量列名tensor,则该参数不允许配置。

用于训练的特征列名。

说明

特征列名数组tensor向量列名是三个互斥参数,您只能使用其中一个参数来描述算法的输入特征。

分组列名数组

分组列名。

tensor

如果您已经配置了向量列名特征列名数组,则该参数不允许配置。

tensor列名。

说明

特征列名数组tensor向量列名是三个互斥参数,您只能使用其中一个参数来描述算法的输入特征。

向量列名

如果您已经配置了tensor特征列名数组,则该参数不允许配置。

向量列对应的列名。

说明

特征列名数组tensor向量列名是三个互斥参数,您只能使用其中一个参数来描述算法的输入特征。

参数设置

预测结果列名

预测结果列的列名。

每组最大异常点数目

每组最大的异常点数目。

最大异常点比例

算法检测异常点的最大比例。

每组最大样本数目

每组最大的样本数目。

模型中树的棵数

模型中树的棵树,默认为100。

异常评分阈值

当评分大于该阈值时,判定为异常点。

预测详细信息列名

预测详细信息列的列名。

每棵树的样本采样行数

每棵树的样本采样行数,正整数。范围[2,100000],默认为256。

组件多线程线程个数

组件多线程的线程个数,默认为1。

执行调优

节点个数

节点个数,与参数单个节点内存大小配对使用,正整数。范围[1, 9999]。

单个节点内存大小,单位M

单个节点内存大小,单位MB,正整数。范围[1024, 64*1024]。

方式二:Python代码方式

使用PyAlink脚本组件,配置该组件参数。您可以使用PyAlink脚本组件进行Python代码调用,详情请参见PyAlink脚本

参数名称

是否必选

描述

默认值

predictionCol

预测结果列的列名。

featureCols

特征列名数组。

全选

groupCols

分组列名,支持多列。

maxOutlierNumPerGroup

每组最大的异常点数目。

maxOutlierRatio

算法检测异常点的最大比例。

maxSampleNumPerGroup

每组最大的样本数目。

numTrees

模型中树的棵数。

100

outlierThreshold

当评分大于该阈值时,判定为异常点。

predictionDetailCol

预测详细信息列的列名。

tensorCol

tensor列。

vectorCol

向量列对应的列名。

subsamplingSize

每棵树的样本采样行数,正整数。范围[2,100000]。

256

numThreads

组件多线程的线程个数。

1

Python代码方式的使用示例如下。

from pyalink.alink import *
import pandas as pd
df = pd.DataFrame([
[0.73, 0],
[0.24, 0],
[0.63, 0],
[0.55, 0],
[0.73, 0],
[0.41, 0]
])

dataOp = BatchOperator.fromDataframe(df, schemaStr='val double, label int')

outlierOp = IForestOutlierBatchOp()\
    .setFeatureCols(["val"])\
    .setOutlierThreshold(3.0)\
    .setPredictionCol("pred")\
    .setPredictionDetailCol("pred_detail")

outlierOp.print()