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()