IFOREST

训练并返回隔离森林 (iForest) 模型。训练模型后,可以使用 APPLY_IFOREST 函数预测输入关系中的异常值。

有关 iForest 算法工作原理的详细信息,请参阅隔离森林

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

IFOREST( 'model‑name', 'input‑relation', 'input‑columns' [ USING PARAMETERS param=value[,...] ] )

参数

model-name
标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
input‑relation
包含 IFOREST 的输入数据的表或视图。
input‑columns
输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列类型必须为 CHAR、VARCHAR、BOOL、INT 或 FLOAT。

CHAR、VARCHAR 和 BOOL 类型的列视为分类特征;所有其他类型的列则视为数字特征。

参数

exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。

默认值: 空字符串 ('')

ntree
[1, 1000] 范围内的整数,指定森林中树的数量。

默认值: 100

sampling_size
(0.0, 1.0] 范围内的浮点数,指定随机挑选的部分输入数据集,不做替换,用于对每个树进行训练。

默认值: 0.632

col_sample_by_tree
(0.0, 1.0] 范围内的浮点数,指定为训练每个树而随机挑选的部分列。

默认值: 1.0

max_depth
[1, 100] 范围内的整数,指定生长每个树的最大深度。

默认值: 10

nbins
[2, 1000] 范围内的整数,指定用于离散连续特征的 bin 数量。

默认值: 32

模型属性

details
有关函数预测变量列的详细信息,包括:
  • predictor:预测变量的名称与训练模型时指定的顺序相同。

  • type:预测变量的类型的顺序与其名称在 predictor 中的顺序相同。

tree_count
模型中的树的数量。
rejected_row_count
input-relation 中因包含无效值而被跳过的行数。
accepted_row_count
input-relation 中的总行数减去 rejected_row_count
call_string
调用函数时指定的所有输入实参的值。

特权

非超级用户:

  • 对创建模型的架构的 CREATE 权限

  • 对输入关系的 SELECT 权限

示例

在以下示例中,函数的输入数据包含 INT、VARCHAR 和 FLOAT 类型的列:

=> SELECT IFOREST('baseball_anomalies','baseball','team, hr, hits, avg, salary' USING PARAMETERS ntree=75, sampling_size=0.7,
max_depth=15);
IFOREST
----------
Finished
(1 row)

您可以通过调用 GET_MODEL_SUMMARY 并检查详细信息部分来验证是否正确读取所有输入列:

=> SELECT GET_MODEL_SUMMARY(USING PARAMETERS model_name='baseball_anomalies');
GET_MODEL_SUMMARY
-------------------------------------------------------------------------------------------------------------------------------------

===========
call_string
===========
SELECT iforest('public.baseball_anomalies', 'baseball', 'team, hr, hits, avg, salary' USING PARAMETERS exclude_columns='', ntree=75,
sampling_size=0.7, col_sample_by_tree=1, max_depth=15, nbins=32);

=======
details
=======
predictor|      type
---------+----------------
  team   |char or varchar
   hr    |      int
  hits   |      int
   avg   |float or numeric
 salary  |float or numeric


===============
Additional Info
===============
       Name       |Value
------------------+-----
    tree_count    | 75
rejected_row_count|  0
accepted_row_count|1000

(1 row)

另请参阅