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)