这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
机器学习函数
利用机器学习函数可以处理数据分析过程不同阶段的数据集:
一些 Vertica 机器学习函数作为 Vertica UDx 函数实施,另一些函数则作为元函数实施:
所有机器学习函数都会自动将 NUMERIC 实参转换为 FLOAT。
重要
使用机器学习函数之前,请注意,当前会话上打开的任何事务都可能已提交。
1 - 数据准备
Vertica 支持机器学习函数,可在对数据进行分析之前根据需要准备数据。
1.1 - BALANCE
根据 response_column 返回输入数据的平均分布视图。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
BALANCE ( 'output‑view', 'input‑relation', 'response‑column', 'balance‑method'
[ USING PARAMETERS sampling_ratio=ratio ] )
参数
- output‑view
- Vertica 保存来自输入关系的平衡数据的视图的名称。
注意
注意: 此函数生成的视图采用随机函数。每当在查询中使用时,内容可能都有所不同。为确保视图操作可预测,请将其存储到常规表中。
- input‑relation
- 包含函数用于创建更平衡的数据集的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示 VARCHAR 或 INTEGER 类型的因变量输入列的名称。
- balance‑method
- 指定从少数类和多数类中选择数据的方法,为以下之一。
-
hybrid_sampling
:对不同类执行过采样和欠采样,因此平等展现每个类。
-
over_sampling
:对所有类过采样,多数类除外,适用于多数类的基数。
-
under_sampling
:对所有类欠采样,少数类除外,适用于少数类的基数。
-
weighted_sampling
:under_sampling
的别名。
参数
ratio
- 多数类与少数类之间的理想比例。与 balance 方法
hybrid_sampling
配合使用时,此值无效。
默认值: 1.0
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
=> CREATE TABLE backyard_bugs (id identity, bug_type int, finder varchar(20));
CREATE TABLE
=> COPY backyard_bugs FROM STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> 1|Ants
>> 1|Beetles
>> 3|Ladybugs
>> 3|Ants
>> 3|Beetles
>> 3|Caterpillars
>> 2|Ladybugs
>> 3|Ants
>> 3|Beetles
>> 1|Ladybugs
>> 3|Ladybugs
>> \.
=> SELECT bug_type, COUNT(bug_type) FROM backyard_bugs GROUP BY bug_type;
bug_type | COUNT
----------+-------
2 | 1
1 | 3
3 | 7
(3 rows)
=> SELECT BALANCE('backyard_bugs_balanced', 'backyard_bugs', 'bug_type', 'under_sampling');
BALANCE
--------------------------
Finished in 1 iteration
(1 row)
=> SELECT bug_type, COUNT(bug_type) FROM backyard_bugs_balanced GROUP BY bug_type;
----------+-------
2 | 1
1 | 2
3 | 1
(3 rows)
另请参阅
1.2 - CORR_MATRIX
采用数字列的输入关系,计算其每对输入列之间的皮尔逊相关系数。函数作为多阶段转换函数实施。
语法
CORR_MATRIX ( input-columns ) OVER()
参数
-
input-columns
- 输入表中的列的逗号分隔列表。输入列可为任何数字类型或 BOOL,但将在内部转换为 FLOAT。输入列数必须大于 1 但不得大于 1600。
返回
CORR_MATRIX 以三元组格式返回关联矩阵。也就是说,每个成对关联通过三个返回的列标识:第一个变量的名称、第二个变量的名称和每对输入列的关联值。函数还会返回两个额外的列: number_of_ignored_input_rows
和 number_of_processed_input_rows
。第四/五列的值表示输入中忽略/用于计算相应关联值的行数。任何包含 NULL、Inf 或 NaN 的输入对都将被忽略。
关联矩阵对称,所有对角元素的值均为 1;因此,只能返回对角线以上元素的值 — 即上三角。尽管如此,函数返回整个矩阵以简化任何后续操作。因此,输出行数为:
(#input‑columns)^2
前两个输出列为 VARCHAR(128) 类型,第三个输出列为 FLOAT 类型,最后两个输出列为 INT 类型。
注意
-
OVER 子句的内容必须为空。
-
当输入表为空时,函数不会返回任何行。
-
当 X_i 和 Y_i 中的任何一个为 NULL、Inf 或 NaN 时,该对将不纳入 CORR(X, Y) 计算。也就是说,任何包含 NULL、Inf 或 NaN 的输入对都将被忽略。
-
对于 (X,X) 对,无论 X 的内容如何:CORR(X,X) = 1、number_of_ignored_input_rows = 0 且 number_of_processed_input_rows = #input_rows。
-
当 (NSUMX2 == SUMXSUMX) 或 (NSUMY2 == SUMYSUMY) 时,则 CORR(X, Y) 的值将为 NULL。理论上,可能发生在具有常数值的列的情况;然而,由于舍入误差,可能无法始终观察到。
-
在特殊情况下,即 (X_i,Y_i) 的所有对值均包含 NULL、inf 或 NaN 且 X != Y:CORR(X,Y)=NULL。
示例
下面的示例使用 iris 数据集。*
1.3 - DETECT_OUTLIERS
根据异常值阈值返回数据集中的异常值。输出为包含异常值的表。 DETECT_OUTLIERS
使用检测方法 robust_szcore
使每个输入列实现标准化。然后,函数将包含大于默认或指定阈值的标准化值的所有行标识为异常值。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
DETECT_OUTLIERS ( 'output‑table', 'input‑relation','input‑columns', 'detection‑method'
[ USING PARAMETERS
[outlier_threshold = threshold]
[, exclude_columns = 'excluded‑columns']
[, partition_columns = 'partition‑columns'] ] )
参数
- output‑table
- Vertica 保存所选
input_columns
的异常值行的表的名称。所有列均存在于此表中。
- input‑relation
- 包含异常数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的类型必须为 数字。
- detection‑method
- 要使用的异常值检测方法,设置为
robust_zscore
。
参数
outlier_threshold
- 用于将该行标识为异常值的行中的最小标准化值。
默认值: 3.0
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
partition_columns
- 定义分区的输入表或视图中的列名的逗号分隔列表。
DETECT_OUTLIERS
分别检测每个分区中的异常值。
默认值: 空列表
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
对输出表的 CREATE 权限
示例
以下示例显示了 DETECT_OUTLIERS
的用法:
=> CREATE TABLE baseball_roster (id identity, last_name varchar(30), hr int, avg float);
CREATE TABLE
=> COPY baseball_roster FROM STDIN;
Enter data to be copied followed by a newline.
End with a backslash and a period on a line by itself.
>> Polo|7|.233
>> Gloss|45|.170
>> Gus|12|.345
>> Gee|1|.125
>> Laus|3|.095
>> Hilltop|16|.222
>> Wicker|78|.333
>> Scooter|0|.121
>> Hank|999999|.8888
>> Popup|35|.378
>> \.
=> SELECT * FROM baseball_roster;
id | last_name | hr | avg
----+-----------+--------+--------
3 | Gus | 12 | 0.345
4 | Gee | 1 | 0.125
6 | Hilltop | 16 | 0.222
10 | Popup | 35 | 0.378
1 | Polo | 7 | 0.233
7 | Wicker | 78 | 0.333
9 | Hank | 999999 | 0.8888
2 | Gloss | 45 | 0.17
5 | Laus | 3 | 0.095
8 | Scooter | 0 | 0.121
(10 rows)
=> SELECT DETECT_OUTLIERS('baseball_outliers', 'baseball_roster', 'id, hr, avg', 'robust_zscore' USING PARAMETERS
outlier_threshold=3.0);
DETECT_OUTLIERS
--------------------------
Detected 2 outliers
(1 row)
=> SELECT * FROM baseball_outliers;
id | last_name | hr | avg
----+-----------+------------+-------------
7 | Wicker | 78 | 0.333
9 | Hank | 999999 | 0.8888
(2 rows)
1.4 - 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
- 有关函数预测变量列的详细信息,包括:
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)
另请参阅
1.5 - IMPUTE
根据每列中变量的观察值,使用平均值或众数估算数据集中的缺失值。此函数支持数字和分类数据类型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
IMPUTE( 'output‑view', 'input‑relation', 'input‑columns', 'method'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns'] [, partition_columns = 'partition‑columns'] ] )
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
参数
- output‑view
- 显示输入表的视图的名称,其中包含估算值而不是缺失值。在此视图中,不含缺失值的行保持不变,而含缺失值的行则根据指定方法进行修改。
- input‑relation
- 包含缺失值插补数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 将替换缺失值的输入列的逗号分隔列表,或使用星号 (*) 指定所有列。所有列的类型必须为数字或布尔值。
- method
- 计算缺失值替换的方法,为以下之一:
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
partition_columns
- 定义分区的输入关系中的列名的逗号分隔列表。
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
在 small_input_impute
表上执行 IMPUTE
,指定平均值方法:
=> SELECT impute('output_view','small_input_impute', 'pid, x1,x2,x3,x4','mean'
USING PARAMETERS exclude_columns='pid');
impute
--------------------------
Finished in 1 iteration
(1 row)
执行IMPUTE
,指定模式方法:
=> SELECT impute('output_view3','small_input_impute', 'pid, x5,x6','mode' USING PARAMETERS exclude_columns='pid');
impute
--------------------------
Finished in 1 iteration
(1 row)
另请参阅
估算缺失值
1.6 - NORMALIZE
对输入关系运行标准化算法。输出是具有标准化数据的视图。
注意
注意: 此函数与 NORMALIZE_FIT 不同,后者用于创建和存储模型,而不是创建视图定义。这可能会导致两个函数的性能特征不同。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
NORMALIZE ( 'output‑view', 'input‑relation', 'input‑columns', 'normalization‑method'
[ USING PARAMETERS exclude_columns = 'excluded‑columns' ] )
参数
- output‑view
- 显示输入关系的视图的名称,其中标准化数据替换了指定的输入列。 .
- input‑relation
- 包含需要标准化的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 数字输入列的逗号分隔列表,其中包含要标准化的值,或用于选择所有列的星号 (*)。
- normalization‑method
- 要使用的标准化方法,为以下之一:
-
minmax
-
zscore
-
robust_zscore
如果表中出现无穷大值,该方法将自动忽略这些值。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
特权
非超级用户:
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
这些示例显示了如何在 mtcars 表的 wt
和 hp
列上使用 NORMALIZE 函数。
执行 NORMALIZE 函数,并指定 minmax
方法:
=> SELECT NORMALIZE('mtcars_norm', 'mtcars',
'wt, hp', 'minmax');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
执行 NORMALIZE 函数,并指定 zscore
方法:
=> SELECT NORMALIZE('mtcars_normz','mtcars',
'wt, hp', 'zscore');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
执行 NORMALIZE 函数,并指定 robust_zscore
方法:
=> SELECT NORMALIZE('mtcars_normz', 'mtcars',
'wt, hp', 'robust_zscore');
NORMALIZE
--------------------------
Finished in 1 iteration
(1 row)
另请参阅
标准化数据
1.7 - NORMALIZE_FIT
注意
此函数不同于
NORMALIZE,后者直接输出具有标准化结果的视图,而不是将标准化参数存储到模型中以供以后操作使用。
NORMALIZE_FIT
计算输入关系中每个指定列的标准化参数。生成的模型将存储标准化参数。例如,对于 MinMax
标准化,每列的最小值和最大值都存储在模型中。生成的模型用作函数 APPLY_NORMALIZE 和 REVERSE_NORMALIZE 的输入。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
NORMALIZE_FIT ( 'model‑name', 'input‑relation', 'input‑columns', 'normalization‑method'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns'] [, output_view = 'output‑view'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含需要标准化的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
- normalization‑method
- 要使用的标准化方法,为以下之一:
-
minmax
-
zscore
-
robust_zscore
如果指定 robust_zscore
,则 NORMALIZE_FIT
使用函数 APPROXIMATE_MEDIAN [聚合]。
所有标准化方法都将忽略输入关系中的无穷大、负无穷大或 NULL 值。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
output_view
- 包含输入关系中所有列的视图的名称,其中指定输入列已标准化。
模型属性
data
- 标准化方法设置为
minmax
:
-
colNames
:模型列名称
-
mins
:每列的最小值
-
maxes
:每列的最大值
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
以下示例使用表 mtcars
中的 wt
和 hp
列创建具有 NORMALIZE_FIT
的模型,然后在对 APPLY_NORMALIZE 和 REVERSE_NORMALIZE 的连续调用中使用此模型。
=> SELECT NORMALIZE_FIT('mtcars_normfit', 'mtcars', 'wt,hp', 'minmax');
NORMALIZE_FIT
---------------
Success
(1 row)
以下对 APPLY_NORMALIZE
的调用指定表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型中,而 cyl
不在标准化模型中:
=> CREATE TABLE mtcars_normalized AS SELECT APPLY_NORMALIZE (hp, cyl USING PARAMETERS model_name = 'mtcars_normfit') FROM mtcars;
CREATE TABLE
=> SELECT * FROM mtcars_normalized;
hp | cyl
--------------------+-----
0.434628975265018 | 8
0.681978798586572 | 8
0.434628975265018 | 6
1 | 8
0.540636042402827 | 8
0 | 4
0.681978798586572 | 8
0.0459363957597173 | 4
0.434628975265018 | 8
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.204946996466431 | 6
0.201413427561837 | 4
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.215547703180212 | 4
0.0353356890459364 | 4
0.187279151943463 | 6
0.452296819787986 | 8
0.628975265017668 | 8
0.346289752650177 | 8
0.137809187279152 | 4
0.749116607773852 | 8
0.144876325088339 | 4
0.151943462897526 | 4
0.452296819787986 | 8
0.452296819787986 | 8
0.575971731448763 | 8
0.159010600706714 | 4
0.346289752650177 | 8
(32 rows)
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----+-----
175 | 8
245 | 8
175 | 6
335 | 8
205 | 8
52 | 4
245 | 8
65 | 4
175 | 8
110 | 6
123 | 6
66 | 4
110 | 6
109 | 4
110 | 6
123 | 6
66 | 4
113 | 4
62 | 4
105 | 6
180 | 8
230 | 8
150 | 8
91 | 4
264 | 8
93 | 4
95 | 4
180 | 8
180 | 8
215 | 8
97 | 4
150 | 8
(32 rows)
以下对 REVERSE_NORMALIZE
的调用还指定了表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型 mtcars_normfit
中,而 cyl
不在标准化模型中。
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----------------+-----
205.000005722046 | 8
150.000000357628 | 8
150.000000357628 | 8
93.0000016987324 | 4
174.99999666214 | 8
94.9999992102385 | 4
214.999997496605 | 8
97.0000009387732 | 4
245.000006556511 | 8
174.99999666214 | 6
335 | 8
245.000006556511 | 8
62.0000002086163 | 4
174.99999666214 | 8
230.000002026558 | 8
52 | 4
263.999997675419 | 8
109.999999523163 | 6
123.000002324581 | 6
64.9999996386468 | 4
66.0000005029142 | 4
112.999997898936 | 4
109.999999523163 | 6
180.000000983477 | 8
180.000000983477 | 8
108.999998658895 | 4
109.999999523163 | 6
104.999999418855 | 6
123.000002324581 | 6
180.000000983477 | 8
66.0000005029142 | 4
90.9999999701977 | 4
(32 rows)
另请参阅
标准化数据
1.8 - ONE_HOT_ENCODER_FIT
为要编码的每个功能生成每个类别级别的排序列表,并存储模型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
ONE_HOT_ENCODER_FIT ( 'model‑name', 'input‑relation','input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, output_view = 'output‑view']
[, extra_levels = 'category‑levels'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含用于独热编码的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列必须为 INTEGER、BOOLEAN、VARCHAR 或日期。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
output_view
- 存储输入关系和独热编码的视图的名称。按照列在输入关系中出现的顺序返回列,独热编码列附加在原始列之后。
extra_levels
- 每个类别中不属于输入关系的附加级别。此参数应作为符合 JSON 标准的字符串传递,将类别名称作为键,将每个类别中的附加级别列表作为值。
模型属性
call_string
- 在调用函数时指定的所有输入实参的值。
-
varchar_categories integer_categories boolean_categories date_categories
- 以下参数的设置:
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
-
输出视图架构的 CREATE 权限
示例
=> SELECT ONE_HOT_ENCODER_FIT ('one_hot_encoder_model','mtcars','*'
USING PARAMETERS exclude_columns='mpg,disp,drat,wt,qsec,vs,am');
ONE_HOT_ENCODER_FIT
--------------------
Success
(1 row)
另请参阅
1.9 - PCA
通过输入表/视图计算主组件。结果保存在 PCA 模型中。在内部,PCA 使用基于输入日期构建的协方差矩阵的 SVD 来查找组件。该分解的奇异值也保存在 PCA 模型中,作为其一部分。可以在不同的运行中同时翻转一个主组件的所有元素符号。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
PCA ( 'model‑name', 'input‑relation', 'input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, num_components = num‑components]
[, scale = is‑scaled]
[, method = 'method'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 PCA 输入数据的表或视图。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 所有输入列都必须为数字数据类型。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
num_components
- 要保留在模型中的组件的数量。如果未提供此值,则保留所有组件。组件的最大数量是内部调用 SVD 返回的非零奇异值的数量。该数字小于或等于 SVD(列数,行数)。
scale
- 一个布尔值,指定是否在准备步骤中标准化列:
-
True
:使用相关系数矩阵,而非协方差矩阵。
-
False
(默认值)
method
- 用于计算 PCA 的方法,可以设置为
LAPACK
。
模型属性
columns
- 用于创建 PCA 模型的输入关系中的列信息:
singular_values
- 找到的奇异值信息。这些值按降序排列:
principal_components
- 上述奇异值对应的主组件:
-
index:各组件中元素的索引
-
PC1
-
PC2
-
...
counters
- 在训练模型期间收集的信息,以名称-值对形式存储:
-
counter_name
-
Accepted_row_count:数据中有效行的数量
-
denied_row_count:数据中无效行(具有 NULL、INF 或 NaN)的数量
-
iteration_count:迭代次数,对于当前的 PCA 操作,始终为 1
-
counter_value
call_string
- 创建模型的函数调用。
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
示例
=> SELECT PCA ('pcamodel', 'world','country,HDI,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,
em1978,em1979,em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,
em1993,em1994,em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,
em2008,em2009,em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,
gdp1981,gdp1982,gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,
gdp1994,gdp1995,gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,
gdp2007,gdp2008,gdp2009,gdp2010' USING PARAMETERS exclude_columns='HDI,country');
PCA
---------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 96 Rejected Rows: 0
(1 row)
=> CREATE TABLE worldPCA AS SELECT
APPLY_PCA (HDI,country,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,em1978,em1979,
em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,em1993,em1994,
em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,em2008,em2009,
em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,gdp1981,gdp1982,
gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,gdp1994,gdp1995,
gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,gdp2007,gdp2008,
gdp2009,gdp2010 USING PARAMETERS model_name='pcamodel', exclude_columns='HDI, country', key_columns='HDI,
country',cutoff=.3)OVER () FROM world;
CREATE TABLE
=> SELECT * FROM worldPCA;
HDI | country | col1
------+---------------------+-------------------
0.886 | Belgium | 79002.2946705704
0.699 | Belize | -25631.6670012556
0.427 | Benin | -40373.4104598122
0.805 | Chile | -16805.7940082156
0.687 | China | -37279.2893141103
0.744 | Costa Rica | -19505.5631231635
0.4 | Cote d'Ivoire | -38058.2060339272
0.776 | Cuba | -23724.5779612041
0.895 | Denmark | 117325.594028813
0.644 | Egypt | -34609.9941604549
...
(96 rows)
=> SELECT APPLY_INVERSE_PCA (HDI, country, col1
USING PARAMETERS model_name = 'pcamodel', exclude_columns='HDI,country',
key_columns = 'HDI, country') OVER () FROM worldPCA;
HDI | country | em1970 | em1971 | em1972 | em1973 |
em1974 | em1975 | em1976| em1977 | em1978 | em1979
| em1980 | em1981 | em1982 | em1983 | em1984 |em1985
| em1986 | em1987 | em1988 | em1989 | em1990 | em1991
| em1992 | em1993| em1994 | em1995 | em1996 | em1997
| em1998 | em1999 | em2000 | em2001 |em2002 |
em2003 | em2004 | em2005 | em2006 | em2007 | em2008
| em2009 | em2010 | gdp1970 | gdp1971 | gdp1972 | gdp1973
| gdp1974 | gdp1975 | gdp1976 | gdp1977 |gdp1978 | gdp1979
| gdp1980 | gdp1981 | gdp1982 | gdp1983 | gdp1984 | gdp1985
| gdp1986| gdp1987 | gdp1988 | gdp1989 | gdp1990 | gdp1991
| gdp1992 | gdp1993 | gdp1994 | gdp1995 | gdp1996 |
gdp1997 | gdp1998 | gdp1999 | gdp2000 | gdp2001 | gdp2002
| gdp2003 |gdp2004 | gdp2005 | gdp2006 | gdp2007 | gdp2008
| gdp2009 | gdp2010
-------+---------------------+-------------------+-------------------+------------------+------------------
+------------------+-------------------+------------------+------------------+-------------------+---------
----------+-------------------+------------------+-------------------+-------------------+-----------------
--+------------------+-------------------+-------------------+-------------------+------------------+-------
-----------+------------------+-------------------+-------------------+------------------+------------------
-+-------------------+------------------+-------------------+-------------------+-------------------+-------
------------+--------------------+------------------+-------------------+------------------+----------------
---+-------------------+-------------------+------------------+-------------------+------------------+------
------------+------------------+------------------+------------------+------------------+------------------+
------------------+------------------+------------------+------------------+------------------+-------------
-----+------------------+------------------+------------------+------------------+------------------+-------
-----------+------------------+------------------+------------------+------------------+------------------+-
-----------------+------------------+------------------+------------------+------------------+--------------
----+------------------+------------------+------------------+------------------+------------------+--------
----------+------------------+------------------+------------------+------------------+------------------
0.886 | Belgium | 18585.6613572407 | -16145.6374560074 | 26938.956253415 | 8094.30475779595 |
12073.5461203817 | -11069.0567600181 | 19133.8584911727| 5500.312894949 | -4227.94863799987 | 6265.77925410752
| -10884.749295608 | 30929.4669575201 | -7831.49439429977 | 3235.81760508742 | -22765.9285442662 | 27200
.6767714485 | -10554.9550160917 | 1169.4144482273 | -16783.7961289161 | 27932.2660829329 | 17227.9083196848
| 13956.0524012749 | -40175.6286481088 | -10889.4785920499 | 22703.6576872859 | -14635.5832197402 |
2857.12270512168 | 20473.5044214494 | -52199.4895696423 | -11038.7346460738 | 18466.7298633088 | -17410.4225137703 |
-3475.63826305462 | 29305.6753822341 | 1242.5724942049 | 17491.0096310849 | -12609.9984515902 | -17909.3603476248
| 6276.58431412381 | 21851.9475485178 | -2614.33738160397 | 3777.74134131349 | 4522.08854282736 | 4251.90446379366
| 4512.15101396876 | 4265.49424538129 | 5190.06845330997 | 4543.80444817989 | 5639.81122679089 | 4420.44705213467
| 5658.8820279283 | 5172.69025294376 | 5019.63640408663 | 5938.84979495903 | 4976.57073629812 | 4710.49525137591
| 6523.65700286465 | 5067.82520773578 | 6789.13070219317 | 5525.94643553563 | 6894.68336419297 | 5961.58442474331
| 5661.21093840818 | 7721.56088518218 | 5959.7301109143 | 6453.43604137202 | 6739.39384033096 | 7517.97645468455
| 6907.49136910647 | 7049.03921764209 | 7726.49091035527 | 8552.65909911844 | 7963.94487647115 | 7187.45827585515
| 7994.02955410523 | 9532.89844418041 | 7962.25713582666 | 7846.68238907624 | 10230.9878908643 | 8642.76044946519
| 8886.79860331866 | 8718.3731386891
...
(96 rows)
另请参阅
1.10 - SUMMARIZE_CATCOL
分三列返回分类数据输入的统计摘要:
-
CATEGORY:分类级别,与汇总列具有相同的 SQL 数据类型
-
COUNT:类别级别的数量,类型为 INTEGER
-
PERCENT:表示类别百分比,类型为 FLOAT
语法
SUMMARIZE_CATCOL (target‑column
[ USING PARAMETERS TOPK = topk‑value [, WITH_TOTALCOUNT = show‑total] ] )
OVER()
参数
- target‑column
- 要汇总的输入列的名称,为以下数据类型之一:
-
BOOLEAN
-
FLOAT
-
INTEGER
-
DATE
-
CHAR/VARCHAR
参数
TOPK
- 整数,指定要在输出中包含的最频繁行的数量。
WITH_TOTALCOUNT
- 一个布尔值,指定表是否一个标题行,其中显示目标列中所示的总行数,且百分比等于 100。
默认值: true
示例
此示例显示了 salary_data
表中 current_salary
列的分类摘要。查询输出中显示列类别、计数和百分比。第一列列出分类级别,其与输入列具有相同的 SQL 数据类型,第二列列出该值的计数,第三列列出百分比。
=> SELECT SUMMARIZE_CATCOL (current_salary USING PARAMETERS TOPK = 5) OVER() FROM salary_data;
CATEGORY | COUNT | PERCENT
---------+-------+---------
| 1000 | 100
39004 | 2 | 0.2
35321 | 1 | 0.1
36313 | 1 | 0.1
36538 | 1 | 0.1
36562 | 1 | 0.1
(6 rows)
1.11 - SUMMARIZE_NUMCOL
返回 Vertica 表中列的统计摘要:
-
Count
-
平均值
-
标准偏差
-
最小值/最大值
-
近似百分位
-
中间值
除了计数为 INTEGER 类型,所有汇总值均为 FLOAT 数据类型。
语法
SUMMARIZE_NUMCOL (input‑columns [ USING PARAMETERS exclude_columns = 'excluded‑columns'] ) OVER()
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 所有列都必须为数字数据类型。如果选择所有列,
SUMMARIZE_NUMCOL
将标准化模型中的所有列
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
示例
显示 employee
表中 age
和 salary
列的统计摘要:
=> SELECT SUMMARIZE_NUMCOL(* USING PARAMETERS exclude_columns='id,name,gender,title') OVER() FROM employee;
COLUMN | COUNT | MEAN | STDDEV | MIN | PERC25 | MEDIAN | PERC75 | MAX
---------------+-------+------------+------------------+---------+---------+---------+-----------+--------
age | 5 | 63.4 | 19.3209730603818 | 44 | 45 | 67 | 71 | 90
salary | 5 | 3456.76 | 1756.78754300285 | 1234.56 | 2345.67 | 3456.78 | 4567.89 | 5678.9
(2 rows)
1.12 - SVD
计算输入关系的 SVD 分解的奇异值(S 矩阵的对角线)和右奇异向量(V 矩阵)。结果将保存为 SVD 模型。可以在不同的运行中同时翻转 SVD 中奇异向量的所有元素符号。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
SVD ( 'model‑name', 'input‑relation', 'input‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, num_components = num‑components]
[, method = 'method'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 SVD 输入数据的表或视图。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列必须为数字数据类型。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
num_components
- 要保留在模型中的组件的数量。组件的最大数量为计算的非零奇异值的数量,小于或等于最小值(列数,行数)。如果忽略此参数,则保留所有组件。
method
- 用于计算 SVD 的方法,可以设置为
LAPACK
。
模型属性
columns
- 用于创建 SVD 模型的输入关系中的列信息:
singular_values
- 找到的奇异值信息。这些值按降序排列:
right_singular_vectors
- 上述奇异值对应的右奇异向量:
-
index:每个向量中元素的索引
-
vector1
-
vector2
-
...
counters
- 在训练模型期间收集的信息,以名称-值对形式存储:
-
counter_name
-
Accepted_row_count:数据中有效行的数量
-
denied_row_count:数据中无效行(具有 NULL、INF 或 NaN)的数量
-
iteration_count:迭代次数,对于当前的 SVD 操作,始终为 1
-
counter_value
call_string
- 创建模型的函数调用。
特权
非超级用户:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
示例
=> SELECT SVD ('svdmodel', 'small_svd', 'x1,x2,x3,x4');
SVD
--------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 8 Rejected Rows: 0
(1 row)
=> CREATE TABLE transform_svd AS SELECT
APPLY_SVD (id, x1, x2, x3, x4 USING PARAMETERS model_name='svdmodel', exclude_columns='id', key_columns='id')
OVER () FROM small_svd;
CREATE TABLE
=> SELECT * FROM transform_svd;
id | col1 | col2 | col3 | col4
----+-------------------+---------------------+---------------------+--------------------
4 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
6 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
1 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
2 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
3 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
5 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
8 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
7 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
(8 rows)
=> SELECT APPLY_INVERSE_SVD (* USING PARAMETERS model_name='svdmodel', exclude_columns='id',
key_columns='id') OVER () FROM transform_svd;
id | x1 | x2 | x3 | x4
----+------------------+------------------+------------------+------------------
4 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
6 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
7 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
1 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
2 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
3 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
5 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
8 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
(8 rows)
另请参阅
2 - 机器学习算法
Vertica 支持各种机器学习函数,这些函数使用一组数据训练模型,并返回可进行保存以用于稍后执行的模型。
这些函数要求非超级用户具有以下权限:
-
对创建模型的架构的 CREATE 权限
-
对输入关系的 SELECT 权限
2.1 - AUTOREGRESSOR
通过具有一致时间步长的平稳时间序列创建自回归 (AR) 模型,此模型可用于通过 PREDICT_AUTOREGRESSOR 进行预测。
自动回归模型将根据先前的值来预测时间序列的未来值。更具体地说,用户指定的 lag 决定了该模型在计算过程中要考虑多少个先前的时间段,且预测值为每个 lag 的线性组合。
由于输入数据必须按时间戳排序,因此,此算法为单线程算法。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
AUTOREGRESSOR ('model‑name', 'input‑relation', 'data‑column', 'timestamp‑column'
[ USING PARAMETERS
[ p = lags ]
[, missing = "imputation‑method" ]
[, regularization = "regularization‑method" ]
[, lambda = regularization‑value ]
[, compute_mse = boolean ]
] )
参数
-
model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
input‑relation
- 包含 timestamp‑column 的表或视图。
该算法需要平稳的时间序列作为输入;使用平均值随着时间变化的时间序列可能会导致结果欠佳。
-
data‑column
- 包含因变量或结果的 NUMERIC 类型的输入列。
-
timestamp‑column
- 表示时间戳变量的 INTEGER、FLOAT 或 TIMESTAMP 列。时间步长必须一致。
参数
p
- [1, 1999] 范围内的 INTEGER,表示计算中要考虑的滞后数。较大的
p
值会削弱相关性。
默认值: 3
missing
- 用于处理缺失值的方法,为以下之一:
默认值: linear_interpolation
regularization
- 拟合数据时使用的正则化方法,为以下之一:
默认值: 无
lambda
- [0, 100000] 范围内的 FLOAT,正则化值 lambda。
默认值: 1.0
compute_mse
- BOOLEAN,是否计算并输出均方误差 (MSE)。
默认值: False
示例
请参阅自回归模型示例。
另请参阅
2.2 - BISECTING_KMEANS
对输入关系运行二分 k-means 算法。结果将生成一个具有群集中心层次结构的已训练模型,其包含一系列 k 值,每个值都可用于预测。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
BISECTING_KMEANS('model-name', 'input-relation', 'input-columns', 'num-clusters'
[ USING PARAMETERS
[exclude_columns = 'exclude-columns']
[, bisection_iterations = bisection-iterations]
[, split_method = 'split-method']
[, min_divisible_cluster_size = min-cluster-size]
[, kmeans_max_iterations = kmeans-max-iterations]
[, kmeans_epsilon = kmeans-epsilon]
[, kmeans_center_init_method = 'kmeans-init-method']
[, distance_method = 'distance-method']
[, output_view = 'output-view']
[, key_columns = 'key-columns'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 k 均值输入数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
- num‑clusters
- 要创建的群集数,为 ≤ 10,000 的整数。此实参表示 k 均值中的 k。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
bisection_iterations
- 1 - 1MM(包含)之间的整数,指定二等分 k 均值算法对每个二等分步骤执行的迭代次数。其对应于独立 k 均值算法在每个二等分步骤中运行的次数。
如果设置为 >1,则允许算法运行并选择在每个二等分步骤中运行的最佳 k 均值。如果使用 kmeanspp,bisection_iterations
的值始终为 1,因为 kmeanspp 的运行成本更高(但也好过替代方案),因此它不需要多次运行。
默认值: 1
split_method
- 用于选择要进行二等分/拆分的群集的方法,为以下之一:
默认值: sum_squares
min_divisible_cluster_size
- ≥ 2 的整数,指定可分群集中点的最小数量。
默认值: 2
kmeans_max_iterations
- 1 和 1MM(包含)之间的整数,指定 k 均值算法执行的最大迭代数。如果该值小于收敛所需要的迭代数,则算法无法进行收敛。
默认值: 10
kmeans_epsilon
- 1 和 1MM(包含)之间的整数,确定 k 均值算法是否已收敛。自上一次迭代后,如果中心移动的距离小于 epsilon,则认为该算法已收敛。
默认值: 1e-4
kmeans_center_init_method
- 用于找到初始群集中心的 k 均值方法,为以下之一:
distance_method
- 两个数据点之间的距离测量。目前仅支持欧氏距离。
默认值: euclidean
output_view
- 保存分配到群集的每个点的视图名称。您必须对视图架构具有 CREATE 权限。
key_columns
- 用于标识输出行的列名称的逗号分隔列表。列必须位于 input-columns 实参列表中。要防止算法使用这些和其他输入列,请将其列在参数
exclude_columns
中。
模型属性
centers
- K 个质心的中心列表。
hierarchy
- K 个群集的层次结构,包括:
-
ParentCluster:每个质心的父群集质心 — 即基于其通过二等分得到一个群集的群集质心。
-
LeftChildCluster:每个质心的左子群集质心 — 即将一个群集二等分后得到的第一个子群集的质心。
-
RightChildCluster:每个质心的右子群集质心 — 即将一个群集二等分得到的第二个子群集的质心。
-
BisectionLevel:指定通过其得到一个群集的二等分步骤。
-
WithinSS:当前群集的群集内平方和
-
TotalWithinSS:迄今为止获得的叶群集的群集内总平方和。
metrics
- 与群集质量相关的几个指标,包括
示例
SELECT BISECTING_KMEANS('myModel', 'iris1', '*', '5'
USING PARAMETERS exclude_columns = 'Species,id', split_method ='sum_squares', output_view = 'myBKmeansView');
另请参阅
2.3 - KMEANS
对输入关系执行 k-means 算法。结果是包含群集中心列表的模型。
您可以采用 VERTICA_MODELS 或 PMML 格式导出生成的 k 均值模型,以将其应用于 Vertica 外部的数据。您还可以在其他位置训练 k 均值模型,然后以 PMML 格式将其导入 Vertica,以对 Vertica 中的数据进行预测。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
KMEANS ( 'model‑name', 'input‑relation', 'input‑columns', 'num‑clusters'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, max_iterations = max‑iterations]
[, epsilon = epsilon‑value]
[, { init_method = 'init‑method' } | { initial_centers_table = 'init‑table' } ]
[, output_view = 'output‑view']
[, key_columns = 'key‑columns'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含 k 均值输入数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
- num‑clusters
- 要创建的群集数,为 ≤10,000 的整数。此实参表示 k 均值中的 k。
参数
重要
参数 init_method
和 initial_centers_table
互斥。如果同时设置两者,此函数将返回错误。
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
max_iterations
- 算法执行的最大迭代数。如果该值小于收敛所需要的迭代数,则算法无法进行收敛。
默认值: 10
epsilon
- 确定算法是否收敛。自上一次迭代后,如果中心移动的距离小于
'epsilon',则认为该算法已收敛。
默认值: 1e-4
init_method
- 用于找到初始群集中心的方法,为以下之一:
initial_centers_table
- 包含要使用的初始群集中心的表。知晓要使用的初始群集中心而不需要 Vertica 找到初始群集中心时提供这个值。
output_view
- 保存分配到群集的每个点的视图名称。您必须对保存视图的架构具有 CREATE 权限。
key_columns
- input-columns 中列名称的逗号分隔列表,将显示为
output_view
的列。应选择这些列,以便其内容可以标识每个输入数据点。此参数仅在指定 output_view
时使用。input‑columns 中所列的仅用作 key_columns
而不用于训练的列应在 exclude_columns
中列出。
模型属性
centers
- 包含每个群集中心的列表。
metrics
- 与群集质量相关的几个指标的字符串摘要。
示例
以下示例创建 k-means 模型 myKmeansModel
并将其应用于输入表 iris1
。APPLY_KMEANS
的调用混合了列名和常量。当传递一个常量代替列名称时,该常量将替换该列在所有行中的值:
=> SELECT KMEANS('myKmeansModel', 'iris1', '*', 5
USING PARAMETERS max_iterations=20, output_view='myKmeansView', key_columns='id', exclude_columns='Species, id');
KMEANS
----------------------------
Finished in 12 iterations
(1 row)
=> SELECT id, APPLY_KMEANS(Sepal_Length, 2.2, 1.3, Petal_Width
USING PARAMETERS model_name='myKmeansModel', match_by_pos='true') FROM iris2;
id | APPLY_KMEANS
-----+--------------
5 | 1
10 | 1
14 | 1
15 | 1
21 | 1
22 | 1
24 | 1
25 | 1
32 | 1
33 | 1
34 | 1
35 | 1
38 | 1
39 | 1
42 | 1
...
(60 rows)
另请参阅
2.4 - LINEAR_REG
对输入关系执行线性回归,并返回线性回归模型。
您可以采用 VERTICA_MODELS 或 PMML 格式导出生成的线性回归模型,以将其应用于 Vertica 外部的数据。您还可以在其他位置训练线性回归模型,然后以 PMML 格式将其导入 Vertica,以对 Vertica 中的数据进行预测。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
LINEAR_REG ( 'model‑name', 'input‑relation', 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, optimizer = 'optimizer‑method']
[, regularization = 'regularization‑method']
[, epsilon = epsilon‑value]
[, max_iterations = iterations]
[, lambda = lamda‑value]
[, alpha = alpha‑value]
[, fit_intercept = boolean‑value] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含用于构建模型的训练数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量或结果的输入列的名称。此列中的所有值必须为数字,否则模型将无效。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测工具列的类型必须为 numeric 或 BOOLEAN;否则模型无效。
注意
所有 BOOLEAN 预测工具值在定型前都转换为 FLOAT 值:0 表示 false,1 表示 true。预测期间不会检查类型,因此可以在定型中使用 BOOLEAN 预测工具列,并在预测期间提供同名的 FLOAT 列。在这种情况下,所有 FLOAT 值必须为 0 或 1。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
optimizer
- 用于训练模型的优化器方法,为以下之一:
默认值: 如果 regularization-method 设置为 L1
或 ENet
,则为 CGD
,否则将为 Newton
。
regularization
- 正则化方法,为以下之一:
epsilon
在范围 (0.0,1.0) 内浮动,停止定型时的错误值。如果实际值和预测值之差小于或等于 epsilon
,或者迭代次数超过 max_iterations
,则定型停止。
默认值: 1e-6
max_iterations
(0,1000000) 范围内的整数,指最大定型迭代次数。如果迭代次数超过 max_iterations
,或者实际值与预测值之差小于或等于 epsilon
,则定型停止。
默认值: 100
lambda
- ≥ 0 的整数,指定
regularization
参数的值。
默认值: 1
alpha
- ≥ 0 的整数,指定 ENET
regularization
参数的值,该参数用于定义要提供的 L1 与 L2 正则化量。值 1 相当于 L1,值 0 相当于 L2。
值范围: [0,1]
默认值: 0.5
fit_intercept
- 布尔值,指定模型是否包含截距。如果设置为 false,在训练模型时将不使用截距。请注意,将
fit_intercept
设置为 false 不适用于 BFGS 优化器。
默认值: True
模型属性
示例
=> SELECT LINEAR_REG('myLinearRegModel', 'faithful', 'eruptions', 'waiting'
USING PARAMETERS optimizer='BFGS', fit_intercept=true);
LINEAR_REG
----------------------------
Finished in 10 iterations
(1 row)
另请参阅
2.5 - LOGISTIC_REG
对输入关系执行逻辑回归。结果是一个逻辑回归模型。
您可以以 VERTICA_MODELS 或 PMML 格式导出生成的逻辑回归模型,以将其应用于 Vertica 外部的数据。您还可以在其他位置训练逻辑回归模型,然后以 PMML 格式将其导入 Vertica,以对 Vertica 中的数据进行预测。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
LOGISTIC_REG ( 'model‑name', 'input‑relation', 'response‑column', 'predictor‑columns'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns']
[, optimizer = 'optimizer‑method']
[, regularization = 'regularization‑method']
[, epsilon = epsilon‑value]
[, max_iterations = iterations]
[, lambda = lamda‑value]
[, alpha = alpha‑value]
[, fit_intercept = boolean‑value] ] )
实参
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含用于构建模型的训练数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量或结果的输入列。列值必须为 0 或 1,类型为数字或 BOOLEAN。该函数自动跳过所有其他值。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测工具列的类型必须为 numeric 或 BOOLEAN;否则模型无效。
注意
所有 BOOLEAN 预测工具值在定型前都转换为 FLOAT 值:0 表示 false,1 表示 true。预测期间不会检查类型,因此可以在定型中使用 BOOLEAN 预测工具列,并在预测期间提供同名的 FLOAT 列。在这种情况下,所有 FLOAT 值必须为 0 或 1。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
optimizer
- 用于训练模型的优化器方法,为以下之一:
默认值: 如果 regularization-method 设置为 L1
或 ENet
,则为 CGD
,否则将为 Newton
。
regularization
- 正则化方法,为以下之一:
epsilon
在范围 (0.0,1.0) 内浮动,停止定型时的错误值。如果实际值和预测值之差小于或等于 epsilon
,或者迭代次数超过 max_iterations
,则定型停止。
默认值: 1e-6
max_iterations
(0,1000000) 范围内的整数,指最大定型迭代次数。如果迭代次数超过 max_iterations
,或者实际值与预测值之差小于或等于 epsilon
,则定型停止。
默认值: 100
lambda
- ≥ 0 的整数,指定
regularization
参数的值。
默认值: 1
alpha
- ≥ 0 的整数,指定 ENET
regularization
参数的值,该参数用于定义要提供的 L1 与 L2 正则化量。值 1 相当于 L1,值 0 相当于 L2。
值范围: [0,1]
默认值: 0.5
fit_intercept
- 布尔值,指定模型是否包含截距。如果设置为 false,在训练模型时将不使用截距。请注意,将
fit_intercept
设置为 false 不适用于 BFGS 优化器。
默认值: True
模型属性
特权
超级用户,或对输入关系的 SELECT 权限
示例
=> SELECT LOGISTIC_REG('myLogisticRegModel', 'mtcars', 'am',
'mpg, cyl, disp, hp, drat, wt, qsec, vs, gear, carb'
USING PARAMETERS exclude_columns='hp', optimizer='BFGS', fit_intercept=true);
LOGISTIC_REG
----------------------------
Finished in 20 iterations
(1 row)
另请参阅
2.6 - MOVING_AVERAGE
通过具有一致时间步长的平稳时间序列创建移动平均 (MA) 模型,此模型随后可用于通过 PREDICT_MOVING_AVERAGE 进行预测。
移动平均值模型使用早期预测误差进行未来预测。更具体地说,用户指定的 lag 决定了它在计算过程中要考虑多少先前的预测和错误。
由于输入数据必须按时间戳排序,因此,此算法为单线程算法。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
MOVING_AVERAGE ('model‑name', 'input‑relation', 'data‑column', 'timestamp‑column'
[ USING PARAMETERS
[ q = lags ]
[, missing = "imputation‑method" ]
[, regularization = "regularization‑method" ]
[, lambda = regularization‑value ]
[, compute_mse = boolean ]
] )
参数
-
model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
input‑relation
- 包含 timestamp‑column 的表或视图。
该算法需要平稳的时间序列作为输入;使用平均值随着时间变化的时间序列可能会导致结果欠佳。
-
data‑column
- 包含因变量或结果的 NUMERIC 类型的输入列。
-
timestamp‑column
- 表示时间戳变量的 INTEGER、FLOAT 或 TIMESTAMP 列。时间步长必须一致。
参数
q
- [1, 67) 范围内的 INTEGER,表示计算中要考虑的滞后数。
默认值: 1
missing
- 用于处理缺失值的方法,为以下之一:
默认值: linear_interpolation
regularization
- 拟合数据时使用的正则化方法,为以下之一:
默认值: 无
lambda
- [0, 100000] 范围内的 FLOAT,正则化值 lambda。
默认值: 1.0
compute_mse
- BOOLEAN,是否计算并输出均方误差 (MSE)。
此参数仅接受“true”或“false”,不接受 BOOLEAN 的标准字面量等效项,如 1 或 0。
默认值: False
示例
请参阅移动平均模型示例。
另请参阅
2.7 - NAIVE_BAYES
对输入关系执行朴素贝叶斯算法,并返回朴素贝叶斯模型。
根据数据类型处理列:
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
NAIVE_BAYES ( 'model‑name', 'input‑relation', 'response‑column', 'predictor‑columns'
[ USING PARAMETERS [exclude_columns = 'excluded‑columns'] [, alpha = alpha-value] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含用于构建模型的训练数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量或结果的输入列的名称。此列必须包含代表不同类标签的离散标签。
响应列的类型必须为数字、CHAR/VARCHAR 或 BOOLEAN;否则模型无效。
注意
Vertica 自动将
numeric 响应列值转换为 VARCHAR。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测变量列的类型必须为数字、CHAR/VARCHAR 或 BOOLEAN;否则模型无效。BOOLEAN 列值在训练前转换为 FLOAT 值:0 表示 false,1 表示 true。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
alpha
- 浮点数,如果事件模型为分类式、多项式或伯努利式,则指定使用拉普拉斯平滑。
默认值: 1.0
模型属性
colsInfo
- 训练中使用的响应和预测变量列的信息:
alpha
- 平滑参数值。
prior
- 每个类在所有训练样本中的百分比:
-
label:类标签。
-
value:每个类的百分比。
nRowsTotal
- 数据集中接受用于训练的样本数。
nRowsRejected
- 拒绝用于训练的样本数。
callStr
- 用于复制训练的 SQL 语句。
Gaussian
- 高斯模型取决于由 class_name 指示的类:
-
index:预测变量列的索引。
-
mu:模型的平均值。
-
sigmaSq:模型的标准差平方。
Multinominal
- 多项式模型取决于由 class_name 指示的类:
Bernoulli
- 伯努利模型取决于由 class_name 指示的类:
Categorical
- 高斯模型取决于由 class_name 指示的类:
特权
超级用户或输入关系的 SELECT 权限。
示例
=> SELECT NAIVE_BAYES('naive_house84_model', 'house84_train', 'party', '*'
USING PARAMETERS exclude_columns='party, id');
NAIVE_BAYES
--------------------------------------------------
Finished. Accepted Rows: 324 Rejected Rows: 0
(1 row)
另请参阅
2.8 - RF_CLASSIFIER
训练随机森林模型,以对输入关系进行分类。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
RF_CLASSIFIER ( 'model‑name', input‑relation, 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, ntree = num‑trees]
[, mtry = num‑features]
[, sampling_size = sampling‑size]
[, max_depth = depth]
[, max_breadth = breadth]
[, min_leaf_size = leaf-size]
[, min_info_gain = threshold]
[, nbins = num‑bins] ] )
参数
- model‑name
- 标识作为训练结果存储的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含训练样本的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 数字、CHAR/VARCHAR 或 BOOLEAN 类型的输入列,表示因变量。
注意
Vertica 自动将
numeric 响应列值转换为 VARCHAR。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测变量列的类型必须为数字、CHAR/VARCHAR 或 BOOLEAN;否则模型无效。
Vertica XGBoost 和随机森林算法为分类列 (BOOL/VARCHAR) 提供原生支持。仅需将分类列作为预测工具传递给模型,算法就会自动将这些列视为分类列,且不会尝试以与数值列相同的方式将它们拆分为多个二进制文件;Vertica 将这些列视为真正的分类值,而不是简单地将它们转换为底层的连续值。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
ntree
[1,1000] 范围内的整数,指森林中的树木数量。
默认值: 20
mtry
- [1, number‑predictors] 范围内的整数,随机选择的特征数,从中选择最佳特征以在给定的树节点上进行拆分。
默认值: 预测变量总数的平方根
sampling_size
在 (0.0,1.0] 范围内浮动,指为定型每棵树而随机挑选的输入数据部分。
默认值: 0.632
max_depth
[1,100] 范围内的整数,指每个树的最大深度。例如,max_depth
为 0 时,表示树只有一个根节点;max_depth
为 2 时,表示树有四个叶节点。
默认值: 5
max_breadth
[1,1e9] 范围内的整数,指树可以拥有的最大叶节点数。
默认值: 32
min_leaf_size
[1, 1e6] 范围内的整数,拆分节点后每个分支必须具有的最小样本数。在其左分支或右分支中导致较少剩余样本的拆分将被丢弃,并且该节点被视为叶节点。
默认值: 1
min_info_gain
在 [0.0,1.0) 范围内浮动,指用于包括拆分的最小阈值。信息增益小于此阈值的拆分将被丢弃。
默认值: 0.0
nbins
[2,1000] 范围内的整数,指用于离散连续特征的二进制文件数量。
默认值: 32
模型属性
示例
=> SELECT RF_CLASSIFIER ('myRFModel', 'iris', 'Species', 'Sepal_Length, Sepal_Width,
Petal_Length, Petal_Width' USING PARAMETERS ntree=100, sampling_size=0.3);
RF_CLASSIFIER
--------------------------------------------------
Finished training
(1 row)
另请参阅
2.9 - RF_REGRESSOR
训练随机森林模型,以对输入关系执行回归。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
RF_REGRESSOR ( 'model‑name', input‑relation, 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, ntree = num‑trees]
[, mtry = num‑features]
[, sampling_size = sampling‑size]
[, max_depth = depth]
[, max_breadth = breadth]
[, min_leaf_size = leaf-size]
[, min_info_gain = threshold]
[, nbins = num‑bins] ] )
参数
- model‑name
- 作为训练结果存储的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含训练样本的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量的数字输入列。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测变量列的类型必须为数字、CHAR/VARCHAR 或 BOOLEAN;否则模型无效。
Vertica XGBoost 和随机森林算法为分类列 (BOOL/VARCHAR) 提供原生支持。仅需将分类列作为预测工具传递给模型,算法就会自动将这些列视为分类列,且不会尝试以与数值列相同的方式将它们拆分为多个二进制文件;Vertica 将这些列视为真正的分类值,而不是简单地将它们转换为底层的连续值。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
ntree
[1,1000] 范围内的整数,指森林中的树木数量。
默认值: 20
mtry
- [1, number‑predictors] 范围内的整数,在拆分树节点时要考虑的特征数。
默认值: 预测变量总数的三分之一
sampling_size
在 (0.0,1.0] 范围内浮动,指为定型每棵树而随机挑选的输入数据部分。
默认值: 0.632
max_depth
[1,100] 范围内的整数,指每个树的最大深度。例如,max_depth
为 0 时,表示树只有一个根节点;max_depth
为 2 时,表示树有四个叶节点。
默认值: 5
max_breadth
[1,1e9] 范围内的整数,指树可以拥有的最大叶节点数。
默认值: 32
min_leaf_size
- [1, 1e6] 范围内的整数,拆分节点后每个分支必须具有的最小样本数。在其左分支或右分支中导致较少剩余样本的拆分将被丢弃,并且该节点被视为叶节点。
此参数的默认值与 sklearn 等库中的类似参数不同,因此会产生一个预测值与原始响应值不同的模型。
默认值: 5
min_info_gain
在 [0.0,1.0) 范围内浮动,指用于包括拆分的最小阈值。信息增益小于此阈值的拆分将被丢弃。
默认值: 0.0
nbins
[2,1000] 范围内的整数,指用于离散连续特征的二进制文件数量。
默认值: 32
模型属性
示例
=> SELECT RF_REGRESSOR ('myRFRegressorModel', 'mtcars', 'carb', 'mpg, cyl, hp, drat, wt' USING PARAMETERS
ntree=100, sampling_size=0.3);
RF_REGRESSOR
--------------
Finished
(1 row)
另请参阅
2.10 - SVM_CLASSIFIER
针对输入关系训练 SVM 模型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
SVM_CLASSIFIER ( 'model‑name', input‑relation, 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, C = 'cost']
[, epsilon = 'epsilon‑value']
[, max_iterations = 'max‑iterations']
[, class_weights = 'weight']
[, intercept_mode = 'intercept‑mode']
[, intercept_scaling = 'scale'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含训练数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量或结果的输入列。列值必须为 0 或 1,类型为数字 或 BOOLEAN,否则函数返回错误。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测工具列的类型必须为 numeric 或 BOOLEAN;否则模型无效。
注意
所有 BOOLEAN 预测工具值在定型前都转换为 FLOAT 值:0 表示 false,1 表示 true。预测期间不会检查类型,因此可以在定型中使用 BOOLEAN 预测工具列,并在预测期间提供同名的 FLOAT 列。在这种情况下,所有 FLOAT 值必须为 0 或 1。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
C
- 错误分类成本的权重。该算法最大限度降低了正则化成本和误分类成本。
默认值: 1.0
epsilon
- 用于控制精度。
默认值: 1e-3
max_iterations
- 算法执行的最大迭代数。
默认值: 100
class_weights
- 指定如何确定两个类的权重,选择以下方式之一:
intercept_mode
- 指定如何处理截距,选择以下方式之一:
intercept_scaling
- 浮点值,用作虚拟特征的值,Vertica 使用其系数计算模型截距。因为虚拟特征不在训练数据中,所以它的值被设置为一个常数,默认为 1。
模型属性
示例
以下示例在 mtcars
表上使用 SVM_CLASSIFIER
:
=> SELECT SVM_CLASSIFIER(
'mySvmClassModel', 'mtcars', 'am', 'mpg,cyl,disp,hp,drat,wt,qsec,vs,gear,carb'
USING PARAMETERS exclude_columns = 'hp,drat');
SVM_CLASSIFIER
----------------------------------------------------------------
Finished in 15 iterations.
Accepted Rows: 32 Rejected Rows: 0
(1 row)
另请参阅
2.11 - SVM_REGRESSOR
针对输入关系训练 SVM 模型。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
SVM_REGRESSOR ( 'model‑name', input‑relation, 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, error_tolerance = error-tolerance]
[, C = cost]
[, epsilon = epsilon‑value]
[, max_iterations = max‑iterations]
[, intercept_mode = 'mode']
[, intercept_scaling = 'scale'] ] )
参数
- model‑name
- 标识要创建的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
- input‑relation
- 包含训练数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 表示因变量或结果的输入列。该列必须为数字数据类型。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
所有预测工具列的类型必须为 numeric 或 BOOLEAN;否则模型无效。
注意
所有 BOOLEAN 预测工具值在定型前都转换为 FLOAT 值:0 表示 false,1 表示 true。预测期间不会检查类型,因此可以在定型中使用 BOOLEAN 预测工具列,并在预测期间提供同名的 FLOAT 列。在这种情况下,所有 FLOAT 值必须为 0 或 1。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
- error_tolerance
- 定义可接受的误差范围。此区域之外的任何数据点都会为成本函数增加罚分。
默认值: 0.1
C
- 错误分类成本的权重。该算法最大限度降低了正则化成本和误分类成本。
默认值: 1.0
epsilon
- 用于控制精度。
默认值: 1e-3
max_iterations
- 算法执行的最大迭代数。
默认值: 100
intercept_mode
- 指定如何处理截距的字符串,为以下之一
intercept_scaling
- FLOAT 值用作虚拟特征的值,Vertica 使用其系数计算模型截距。因为虚拟特征不在训练数据中,所以它的值被设置为一个常数,默认设置为 1。
模型属性
示例
=> SELECT SVM_REGRESSOR('mySvmRegModel', 'faithful', 'eruptions', 'waiting'
USING PARAMETERS error_tolerance=0.1, max_iterations=100);
SVM_REGRESSOR
----------------------------------------------------------------
Finished in 5 iterations.
Accepted Rows: 272 Rejected Rows: 0
(1 row)
另请参阅
2.12 - XGB_CLASSIFIER
训练 XGBoost 模型以对输入关系执行分类。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
XGB_CLASSIFIER ('model-name', 'input-relation', 'response-column', 'predictor-columns'
[ USING PARAMETERS
[ exclude_columns = 'excluded-columns' ]
[, max_ntree = max-trees ]
[, max_depth = max-depth ]
[, objective = 'optimization-strategy' ]
[, learning_rate = learning-rate ]
[, min_split_loss = minimum ]
[, weight_reg = regularization ]
[, nbins = num-bins ]
[, sampling_size = fraction-of-rows ]
[, col_sample_by_tree = sample-ratio-per-tree ]
[, col_sample_by_node = sample-ratio-per-node ]
] )
参数
-
model-name
模型的名称(不区分大小写)。
-
input-relation
- 包含训练样本的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
-
response-column
- CHAR 或 VARCHAR 类型的输入列,用来表示因变量或结果。
-
predictor-columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列的数据类型必须为 CHAR、VARCHAR、BOOL、INT 或 FLOAT。
CHAR、VARCHAR 和 BOOL 类型的列视为分类特征;所有其他类型的列则视为数字特征。
Vertica XGBoost 和随机森林算法为分类列 (BOOL/VARCHAR) 提供原生支持。仅需将分类列作为预测工具传递给模型,算法就会自动将这些列视为分类列,且不会尝试以与数值列相同的方式将它们拆分为多个二进制文件;Vertica 将这些列视为真正的分类值,而不是简单地将它们转换为底层的连续值。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
max_ntree
- [1,1000] 区间内的整数,用来设置要创建的树的最大个数。
默认值: 10
max_depth
- [1,20] 区间内的整数,用来指定每个树的最大深度。
默认值: 6
objective
- 用来以迭代方式改进模型的目标/损失函数。目前,'crossentropy' 是唯一选项。
默认值: 'crossentropy
'
split_proposal_method
- 指定近似拆分策略,为以下几项之一:
-
global
:/*describe */
-
local
: /describe/
默认值: global
learning_rate
- (0,1] 区间内的浮点数,用来指定每个树的预测权重。设置此参数可以减少每个树所造成的的影响,从而防止早期树以牺牲后期树的贡献为代价独占改进量。
默认值: 0.3
min_split_loss
- [0,1000] 区间内的浮点数,用来指定为了避免修剪模型的目标函数值而必须针对该值实现的最小改进量。
如果设置为 0 或省略,则不设置最小值。在这种情况下,根据正或负目标函数值修剪树。
默认值: 0.0(禁用)
weight_reg
- [0,1000] 区间内的浮点数,用来指定应用于分类树叶权重的正则化项。设置的值越大,权重越稀疏或越平滑,这有助于防止过度拟合。
默认值: 1.0
nbins
- (1,1000] 区间内的整数,用来指定要用于在每列中查找拆分的 bin 数。bin 越多,运行时间越长,但粒度更细,拆分效果越好。
默认值: 32
sampling_size
- (0,1] 区间内的浮点数,用来指定要在每次训练迭代中使用的行的比例。
值 1 表示使用所有行。
默认值: 1.0
col_sample_by_tree
- (0,1] 区间内的浮点数,指定在构建每个树时随机选择的列(特征)的比例。
值 1 表示使用所有列。
col_sample_by
如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5
和 col_sample_by_node=0.5
,col_sample_by_tree
将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node
然后对剩余池的一半进行采样,因此每个节点采样 6 列。
此算法始终对至少一列进行采样。
默认值: 1
col_sample_by_node
- (0,1] 区间内的浮点数,指定在评估每个拆分时随机选择的列(特征)的比例。
值 1 表示使用所有列。
col_sample_by
如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5
和 col_sample_by_node=0.5
,col_sample_by_tree
将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node
然后对剩余池的一半进行采样,因此每个节点采样 6 列。
此算法始终对至少一列进行采样。
默认值: 1
示例
请参阅XGBoost 用于分类。
2.13 - XGB_REGRESSOR
训练 XGBoost 模型以对输入关系执行回归。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
XGB_REGRESSOR ('model-name', 'input-relation', 'response-column', 'predictor-columns'
[ USING PARAMETERS
[ exclude_columns = 'excluded-columns' ]
[, max_ntree = max-trees ]
[, max_depth = max-depth ]
[, objective = 'optimization-strategy' ]
[, learning_rate = learning-rate ]
[, min_split_loss = minimum ]
[, weight_reg = regularization ]
[, nbins = num-bins ]
[, sampling_size = fraction-of-rows ]
[, col_sample_by_tree = sample-ratio-per-tree ]
[, col_sample_by_node = sample-ratio-per-node ]
] )
参数
-
model-name
模型的名称(不区分大小写)。
-
input-relation
- 包含训练样本的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
-
response-column
- INTEGER 或 FLOAT 类型的输入列,用来表示因变量或结果。
-
predictor-columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列的数据类型必须为 CHAR、VARCHAR、BOOL、INT 或 FLOAT。
CHAR、VARCHAR 和 BOOL 类型的列视为分类特征;所有其他类型的列则视为数字特征。
Vertica XGBoost 和随机森林算法为分类列 (BOOL/VARCHAR) 提供原生支持。仅需将分类列作为预测工具传递给模型,算法就会自动将这些列视为分类列,且不会尝试以与数值列相同的方式将它们拆分为多个二进制文件;Vertica 将这些列视为真正的分类值,而不是简单地将它们转换为底层的连续值。
参数
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
max_ntree
- [1,1000] 区间内的整数,用来设置要创建的树的最大个数。
默认值: 10
max_depth
- [1,20] 区间内的整数,用来指定每个树的最大深度。
默认值: 6
objective
- 用来以迭代方式改进模型的目标/损失函数。目前,'
squarederror
' 是唯一的选项。
默认值: 'squarederror
'
split_proposal_method
- 指定近似拆分策略,为以下几项之一:
-
global
:/*describe */
-
local
: /describe/
默认值: global
learning_rate
- (0,1] 区间内的浮点数,用来指定每个树的预测权重。设置此参数可以减少每个树所造成的的影响,从而防止早期树以牺牲后期树的贡献为代价独占改进量。
默认值: 0.3
min_split_loss
- [0,1000] 区间内的浮点数,用来指定为了避免修剪模型的目标函数值而必须针对该值实现的最小改进量。
如果设置为 0 或省略,则不设置最小值。在这种情况下,根据正或负目标函数值修剪树。
默认值: 0.0(禁用)
weight_reg
- [0,1000] 区间内的浮点数,用来指定应用于分类树叶权重的正则化项。设置的值越大,权重越稀疏或越平滑,这有助于防止过度拟合。
默认值: 1.0
nbins
- (1,1000] 区间内的整数,用来指定要用于在每列中查找拆分的 bin 数。bin 越多,运行时间越长,但粒度更细,拆分效果越好。
默认值: 32
sampling_size
- (0,1] 区间内的浮点数,用来指定要在每次训练迭代中使用的行的比例。
值 1 表示使用所有行。
默认值: 1.0
col_sample_by_tree
- (0,1] 区间内的浮点数,指定在构建每个树时随机选择的列(特征)的比例。
值 1 表示使用所有列。
col_sample_by
如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5
和 col_sample_by_node=0.5
,col_sample_by_tree
将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node
然后对剩余池的一半进行采样,因此每个节点采样 6 列。
此算法始终对至少一列进行采样。
默认值: 1
col_sample_by_node
- (0,1] 区间内的浮点数,指定在评估每个拆分时随机选择的列(特征)的比例。
值 1 表示使用所有列。
col_sample_by
如果指定多个参数,则参数彼此上下“堆叠”。即:假如有 24 列,对于 col_sample_by_tree=0.5
和 col_sample_by_node=0.5
,col_sample_by_tree
将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node
然后对剩余池的一半进行采样,因此每个节点采样 6 列。
此算法始终对至少一列进行采样。
默认值: 1
示例
请参阅用于回归的 XGBoost。
3 - 转换函数
机器学习 API 包括一组 UDx 函数,这些函数将每个输入行的列转换为一个或多个对应的输出列。这些转换遵循之前创建的模型中定义的规则。例如,
APPLY_SVD
使用 SVD 模型来转换输入数据。
除非另有说明,否则这些函数要求非超级用户具有以下权限:
-
模型上的 USAGE 权限
-
对输入关系的 SELECT 权限
通常,给定无效的输入行,这些函数的返回值为 NULL。
3.1 - APPLY_BISECTING_KMEANS
将已训练的二分 k-means 模型应用于输入关系,并将每个新数据点分配给已训练模型中最接近的匹配群集。
语法
SELECT APPLY_BISECTING_KMEANS( 'input-columns'
USING PARAMETERS model_name = 'model-name'
[, num_clusters = 'num-clusters']
[, match_by_pos = match‑by‑position] ] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 输入列的数据类型必须为数字。
参数
model_name
模型的名称(不区分大小写)。
num_clusters
- 介于 1 和 k 之间的整数(包含),其中 k 为模型中的中心数,指定用于预测的群集数。
默认值: 模型为 k 指定的值
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
特权
非超级用户:模型所有者或模型的使用权限
3.2 - APPLY_IFOREST
将隔离森林 (iForest) 模型应用于输入关系。对于每个输入行,该函数返回包含两个字段的输出行:
anomaly_score
:浮点值,表示模型中所有树的平均路径长度,按训练样本大小标准化。
is_anomaly
:布尔值,指示输入行是否异常。当 anomaly_score
等于或大于给定阈值时,此值为 true;否则,此值为 false。
语法
APPLY_IFOREST( input‑columns USING PARAMETERS param=value[,...] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 列类型必须与
model_name
中的预测变量类型匹配。
参数
model_name
模型的名称(不区分大小写)。
threshold
- 可选。(0.0, 1.0) 范围内的浮点数,指定确定数据点是否为异常的阈值。如果一个数据点的
anomaly_score
等于或大于 threshold
的值,则该数据点被标记为异常值。
或者,您可以指定一个 contamination
值,该值设置一个阈值,其中标记为异常值的训练数据点的百分比约等于 contamination
的值。您不能在同一个函数调用中同时设置 contamination
和 threshold
。
默认值: 0.7
match_by_pos
- 可选。指定输入列如何与模型列匹配的布尔值:
-
false
:按名称匹配。
-
true
:按输入列列表中列的位置匹配。
默认值:false
contamination
- 可选。(0.0, 1.0) 范围内的浮点数,训练数据中被标记为异常值的数据点的近似比率。该函数根据此
contamination
值计算阈值。如果不设置此参数,该函数将使用指定或默认的 threshold
值标记异常值。
您不能在同一个函数调用中同时设置 contamination
和 threshold
。
特权
非超级用户:
-
模型上的 USAGE 权限
-
对输入关系的 SELECT 权限
示例
以下示例演示了不同的 threshold
值如何影响对输入关系的异常值检测:
=> SELECT * FROM (SELECT first_name, last_name, APPLY_IFOREST(team, hr, hits, avg, salary USING PARAMETERS model_name='baseball_anomalies',
threshold=0.75) AS predictions FROM baseball) AS outliers WHERE predictions.is_anomaly IS true;
first_name | last_name | predictions
------------+-----------+-------------------------------------------------------
Jacqueline | Richards | {"anomaly_score":0.777757463074347,"is_anomaly":true}
(1 row)
=> SELECT * FROM (SELECT first_name, last_name, APPLY_IFOREST(team, hr, hits, avg, salary USING PARAMETERS model_name='baseball_anomalies',
threshold=0.55) AS predictions FROM baseball) AS outliers WHERE predictions.is_anomaly IS true;
first_name | last_name | predictions
------------+-----------+--------------------------------------------------------
Jacqueline | Richards | {"anomaly_score":0.777757463074347,"is_anomaly":true}
Debra | Hall | {"anomaly_score":0.5714649698133808,"is_anomaly":true}
Gerald | Fuller | {"anomaly_score":0.5980549926114661,"is_anomaly":true}
(3 rows)
您还可以使用不同的 contamination
值来更改异常值阈值:
=> SELECT * FROM (SELECT first_name, last_name, APPLY_IFOREST(team, hr, hits, avg, salary USING PARAMETERS model_name='baseball_anomalies',
contamination = 0.1) AS predictions FROM baseball) AS outliers WHERE predictions.is_anomaly IS true;
first_name | last_name | predictions
------------+-----------+--------------------------------------------------------
Marie | Fields | {"anomaly_score":0.5307715717521868,"is_anomaly":true}
Jacqueline | Richards | {"anomaly_score":0.777757463074347,"is_anomaly":true}
Debra | Hall | {"anomaly_score":0.5714649698133808,"is_anomaly":true}
Gerald | Fuller | {"anomaly_score":0.5980549926114661,"is_anomaly":true}
(4 rows)
=> SELECT * FROM (SELECT first_name, last_name, APPLY_IFOREST(team, hr, hits, avg, salary USING PARAMETERS model_name='baseball_anomalies',
contamination = 0.01) AS predictions FROM baseball) AS outliers WHERE predictions.is_anomaly IS true;
first_name | last_name | predictions
------------+-----------+--------------------------------------------------------
Jacqueline | Richards | {"anomaly_score":0.777757463074347,"is_anomaly":true}
Debra | Hall | {"anomaly_score":0.5714649698133808,"is_anomaly":true}
Gerald | Fuller | {"anomaly_score":0.5980549926114661,"is_anomaly":true}
(3 rows)
另请参阅
3.3 - APPLY_INVERSE_PCA
将 APPLY_PCA 生成的转换反转回原始坐标系。
语法
APPLY_INVERSE_PCA ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, exclude_columns = 'excluded‑columns']
[, key_columns = 'key‑columns'] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 需要满足以下要求:
-
所有列都必须为数字数据类型。
-
如果列名包含特殊字符,请用双引号将其括起来。
参数
model_name
模型的名称(不区分大小写)。
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
key_columns
- 来自 input‑columns 的列名称的逗号分隔列表,用于标识其数据行。这些列包含在输出表中。
示例
以下示例显示了如何使用 APPLY_INVERSE_PCA 函数。它显示了第一条记录的输出。
=> SELECT PCA ('pcamodel', 'world','country,HDI,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,
em1978,em1979,em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,
em1993,em1994,em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,
em2008,em2009,em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,
gdp1981,gdp1982,gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,
gdp1994,gdp1995,gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,
gdp2007,gdp2008,gdp2009,gdp2010' USING PARAMETERS exclude_columns='HDI,country');
PCA
---------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 96 Rejected Rows: 0
(1 row)
=> CREATE TABLE worldPCA AS SELECT
APPLY_PCA (HDI,country,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,em1978,em1979,
em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,em1993,em1994,
em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,em2008,em2009,
em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,gdp1981,gdp1982,
gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,gdp1994,gdp1995,
gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,gdp2007,gdp2008,
gdp2009,gdp2010 USING PARAMETERS model_name='pcamodel', exclude_columns='HDI, country', key_columns='HDI,
country',cutoff=.3)OVER () FROM world;
CREATE TABLE
=> SELECT * FROM worldPCA;
HDI | country | col1
------+---------------------+-------------------
0.886 | Belgium | 79002.2946705704
0.699 | Belize | -25631.6670012556
0.427 | Benin | -40373.4104598122
0.805 | Chile | -16805.7940082156
0.687 | China | -37279.2893141103
0.744 | Costa Rica | -19505.5631231635
0.4 | Cote d'Ivoire | -38058.2060339272
0.776 | Cuba | -23724.5779612041
0.895 | Denmark | 117325.594028813
0.644 | Egypt | -34609.9941604549
...
(96 rows)
=> SELECT APPLY_INVERSE_PCA (HDI, country, col1
USING PARAMETERS model_name = 'pcamodel', exclude_columns='HDI,country',
key_columns = 'HDI, country') OVER () FROM worldPCA;
HDI | country | em1970 | em1971 | em1972 | em1973 |
em1974 | em1975 | em1976| em1977 | em1978 | em1979
| em1980 | em1981 | em1982 | em1983 | em1984 |em1985
| em1986 | em1987 | em1988 | em1989 | em1990 | em1991
| em1992 | em1993| em1994 | em1995 | em1996 | em1997
| em1998 | em1999 | em2000 | em2001 |em2002 |
em2003 | em2004 | em2005 | em2006 | em2007 | em2008
| em2009 | em2010 | gdp1970 | gdp1971 | gdp1972 | gdp1973
| gdp1974 | gdp1975 | gdp1976 | gdp1977 |gdp1978 | gdp1979
| gdp1980 | gdp1981 | gdp1982 | gdp1983 | gdp1984 | gdp1985
| gdp1986| gdp1987 | gdp1988 | gdp1989 | gdp1990 | gdp1991
| gdp1992 | gdp1993 | gdp1994 | gdp1995 | gdp1996 |
gdp1997 | gdp1998 | gdp1999 | gdp2000 | gdp2001 | gdp2002
| gdp2003 |gdp2004 | gdp2005 | gdp2006 | gdp2007 | gdp2008
| gdp2009 | gdp2010
-------+---------------------+-------------------+-------------------+------------------+------------------
+------------------+-------------------+------------------+------------------+-------------------+---------
----------+-------------------+------------------+-------------------+-------------------+-----------------
--+------------------+-------------------+-------------------+-------------------+------------------+-------
-----------+------------------+-------------------+-------------------+------------------+------------------
-+-------------------+------------------+-------------------+-------------------+-------------------+-------
------------+--------------------+------------------+-------------------+------------------+----------------
---+-------------------+-------------------+------------------+-------------------+------------------+------
------------+------------------+------------------+------------------+------------------+------------------+
------------------+------------------+------------------+------------------+------------------+-------------
-----+------------------+------------------+------------------+------------------+------------------+-------
-----------+------------------+------------------+------------------+------------------+------------------+-
-----------------+------------------+------------------+------------------+------------------+--------------
----+------------------+------------------+------------------+------------------+------------------+--------
----------+------------------+------------------+------------------+------------------+------------------
0.886 | Belgium | 18585.6613572407 | -16145.6374560074 | 26938.956253415 | 8094.30475779595 |
12073.5461203817 | -11069.0567600181 | 19133.8584911727| 5500.312894949 | -4227.94863799987 | 6265.77925410752
| -10884.749295608 | 30929.4669575201 | -7831.49439429977 | 3235.81760508742 | -22765.9285442662 | 27200
.6767714485 | -10554.9550160917 | 1169.4144482273 | -16783.7961289161 | 27932.2660829329 | 17227.9083196848
| 13956.0524012749 | -40175.6286481088 | -10889.4785920499 | 22703.6576872859 | -14635.5832197402 |
2857.12270512168 | 20473.5044214494 | -52199.4895696423 | -11038.7346460738 | 18466.7298633088 | -17410.4225137703 |
-3475.63826305462 | 29305.6753822341 | 1242.5724942049 | 17491.0096310849 | -12609.9984515902 | -17909.3603476248
| 6276.58431412381 | 21851.9475485178 | -2614.33738160397 | 3777.74134131349 | 4522.08854282736 | 4251.90446379366
| 4512.15101396876 | 4265.49424538129 | 5190.06845330997 | 4543.80444817989 | 5639.81122679089 | 4420.44705213467
| 5658.8820279283 | 5172.69025294376 | 5019.63640408663 | 5938.84979495903 | 4976.57073629812 | 4710.49525137591
| 6523.65700286465 | 5067.82520773578 | 6789.13070219317 | 5525.94643553563 | 6894.68336419297 | 5961.58442474331
| 5661.21093840818 | 7721.56088518218 | 5959.7301109143 | 6453.43604137202 | 6739.39384033096 | 7517.97645468455
| 6907.49136910647 | 7049.03921764209 | 7726.49091035527 | 8552.65909911844 | 7963.94487647115 | 7187.45827585515
| 7994.02955410523 | 9532.89844418041 | 7962.25713582666 | 7846.68238907624 | 10230.9878908643 | 8642.76044946519
| 8886.79860331866 | 8718.3731386891
...
(96 rows)
另请参阅
3.4 - APPLY_INVERSE_SVD
将数据转换回原始域。这实质上是通过将三个矩阵相乘来计算原始数据的近似版本:矩阵 U(此函数的输入)、矩阵 S 和 V(存储在模型中)。
语法
APPLY_INVERSE_SVD ( 'input‑columns'
USING PARAMETERS model_name = 'model‑name'
[, match_by_pos = match‑by‑position]
[, exclude_columns = 'excluded‑columns']
[, key_columns = 'key‑columns'] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 需要满足以下要求:
-
所有列都必须为数字数据类型。
-
如果列名包含特殊字符,请用双引号将其括起来。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
key_columns
- 来自 input‑columns 的列名称的逗号分隔列表,用于标识其数据行。这些列包含在输出表中。
示例
=> SELECT SVD ('svdmodel', 'small_svd', 'x1,x2,x3,x4');
SVD
--------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 8 Rejected Rows: 0
(1 row)
=> CREATE TABLE transform_svd AS SELECT
APPLY_SVD (id, x1, x2, x3, x4 USING PARAMETERS model_name='svdmodel', exclude_columns='id', key_columns='id')
OVER () FROM small_svd;
CREATE TABLE
=> SELECT * FROM transform_svd;
id | col1 | col2 | col3 | col4
----+-------------------+---------------------+---------------------+--------------------
4 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
6 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
1 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
2 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
3 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
5 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
8 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
7 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
(8 rows)
=> SELECT APPLY_INVERSE_SVD (* USING PARAMETERS model_name='svdmodel', exclude_columns='id',
key_columns='id') OVER () FROM transform_svd;
id | x1 | x2 | x3 | x4
----+------------------+------------------+------------------+------------------
4 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
6 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
7 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
1 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
2 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
3 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
5 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
8 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
(8 rows)
另请参阅
3.5 - APPLY_KMEANS
按照已知 k-means 模型将输入关系的每一行分配给一个群集中心。
语法
APPLY_KMEANS ( input‑columns
USING PARAMETERS model_name = 'model‑name' [, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
特权
非超级用户:模型所有者或模型的使用权限
示例
以下示例创建 k-means 模型 myKmeansModel
并将其应用于输入表 iris1
。APPLY_KMEANS
的调用混合了列名和常量。当传递一个常量代替列名称时,该常量将替换该列在所有行中的值:
=> SELECT KMEANS('myKmeansModel', 'iris1', '*', 5
USING PARAMETERS max_iterations=20, output_view='myKmeansView', key_columns='id', exclude_columns='Species, id');
KMEANS
----------------------------
Finished in 12 iterations
(1 row)
=> SELECT id, APPLY_KMEANS(Sepal_Length, 2.2, 1.3, Petal_Width
USING PARAMETERS model_name='myKmeansModel', match_by_pos='true') FROM iris2;
id | APPLY_KMEANS
-----+--------------
5 | 1
10 | 1
14 | 1
15 | 1
21 | 1
22 | 1
24 | 1
25 | 1
32 | 1
33 | 1
34 | 1
35 | 1
38 | 1
39 | 1
42 | 1
...
(60 rows)
另请参阅
3.6 - APPLY_NORMALIZE
UDTF 函数,用于将保存在模型中的标准化参数应用于一组指定的输入列。如果函数中指定的任何列不在模型中,则其数据都会原封不动地传递到 APPLY_NORMALIZE
。
注意
注意: 如果一列仅包含一个不同的值,则 APPLY_NORMALIZE
为该列中的值返回 NaN。
语法
APPLY_NORMALIZE ( input‑columns USING PARAMETERS model_name = 'model‑name');
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。 如果您提供星号,
APPLY_NORMALIZE
会规范化模型中的所有列。
参数
model_name
模型的名称(不区分大小写)。
示例
以下示例使用表 mtcars
中的 wt
和 hp
列创建具有 NORMALIZE_FIT
的模型,然后在对 APPLY_NORMALIZE 和 REVERSE_NORMALIZE 的连续调用中使用此模型。
=> SELECT NORMALIZE_FIT('mtcars_normfit', 'mtcars', 'wt,hp', 'minmax');
NORMALIZE_FIT
---------------
Success
(1 row)
以下对 APPLY_NORMALIZE
的调用指定表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型中,而 cyl
不在标准化模型中:
=> CREATE TABLE mtcars_normalized AS SELECT APPLY_NORMALIZE (hp, cyl USING PARAMETERS model_name = 'mtcars_normfit') FROM mtcars;
CREATE TABLE
=> SELECT * FROM mtcars_normalized;
hp | cyl
--------------------+-----
0.434628975265018 | 8
0.681978798586572 | 8
0.434628975265018 | 6
1 | 8
0.540636042402827 | 8
0 | 4
0.681978798586572 | 8
0.0459363957597173 | 4
0.434628975265018 | 8
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.204946996466431 | 6
0.201413427561837 | 4
0.204946996466431 | 6
0.250883392226148 | 6
0.049469964664311 | 4
0.215547703180212 | 4
0.0353356890459364 | 4
0.187279151943463 | 6
0.452296819787986 | 8
0.628975265017668 | 8
0.346289752650177 | 8
0.137809187279152 | 4
0.749116607773852 | 8
0.144876325088339 | 4
0.151943462897526 | 4
0.452296819787986 | 8
0.452296819787986 | 8
0.575971731448763 | 8
0.159010600706714 | 4
0.346289752650177 | 8
(32 rows)
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----+-----
175 | 8
245 | 8
175 | 6
335 | 8
205 | 8
52 | 4
245 | 8
65 | 4
175 | 8
110 | 6
123 | 6
66 | 4
110 | 6
109 | 4
110 | 6
123 | 6
66 | 4
113 | 4
62 | 4
105 | 6
180 | 8
230 | 8
150 | 8
91 | 4
264 | 8
93 | 4
95 | 4
180 | 8
180 | 8
215 | 8
97 | 4
150 | 8
(32 rows)
以下对 REVERSE_NORMALIZE
的调用还指定了表 mtcars
中的 hp
和 cyl
列,其中 hp
在标准化模型 mtcars_normfit
中,而 cyl
不在标准化模型中。
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars_normalized;
hp | cyl
-----------------+-----
205.000005722046 | 8
150.000000357628 | 8
150.000000357628 | 8
93.0000016987324 | 4
174.99999666214 | 8
94.9999992102385 | 4
214.999997496605 | 8
97.0000009387732 | 4
245.000006556511 | 8
174.99999666214 | 6
335 | 8
245.000006556511 | 8
62.0000002086163 | 4
174.99999666214 | 8
230.000002026558 | 8
52 | 4
263.999997675419 | 8
109.999999523163 | 6
123.000002324581 | 6
64.9999996386468 | 4
66.0000005029142 | 4
112.999997898936 | 4
109.999999523163 | 6
180.000000983477 | 8
180.000000983477 | 8
108.999998658895 | 4
109.999999523163 | 6
104.999999418855 | 6
123.000002324581 | 6
180.000000983477 | 8
66.0000005029142 | 4
90.9999999701977 | 4
(32 rows)
另请参阅
3.7 - APPLY_ONE_HOT_ENCODER
用户定义的转换函数 (UDTF),用于加载独热编码器模型并写出包含编码列的表。
语法
APPLY_ONE_HOT_ENCODER( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, drop_first = 'is‑first']
[, ignore_null = 'ignore']
[, separator = 'separator‑character']
[, column_naming = 'name‑output']
[, null_column_name = 'null‑column‑name'] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
存储类别及其对应的级别。
drop_first
- 布尔值,可以是以下值之一:
ignore_null
- 布尔值,可以是以下值之一:
separator
- 在输出表中用于分隔输入变量名称和指示变量级别的字符。要避免使用任何分隔符,可将此参数设置为 null 值。
默认值: 下划线 (_
)
column_naming
- 根据指定的方法将分类级别附加到列名:
-
indices
(默认值):使用整数索引来表示分类级别。
-
values
/values_relaxed
:两种方法都使用分类级别名称。如果出现重复的列名称,该函数会尝试通过附加
_n
来消除其歧义,其中 n 是从零开始的整数索引(_0
、_1
、...)。
如果该函数无法生成唯一的列名称,它将根据所选的方法来处理:
-
values
返回错误。
-
values_relaxed
恢复使用索引。
重要
如果 column_naming
设置为 values
或 values_relaxed
,则以下列命名规则适用:
null_column_name
- 用于命名 null 值指示列的字符串,仅在
ignore_null
设置为 false
且 column_naming
设置为 values
或 values_relaxed
时使用。
默认值: null
注意
注意: 如果输入行包含模型中未存储的级别,则与该分类级别对应的输出行列将作为 null 值返回。
示例
=> SELECT APPLY_ONE_HOT_ENCODER(cyl USING PARAMETERS model_name='one_hot_encoder_model',
drop_first='true', ignore_null='false') FROM mtcars;
cyl | cyl_1 | cyl_2
----+-------+-------
8 | 0 | 1
4 | 0 | 0
4 | 0 | 0
8 | 0 | 1
8 | 0 | 1
8 | 0 | 1
4 | 0 | 0
8 | 0 | 1
8 | 0 | 1
4 | 0 | 0
8 | 0 | 1
6 | 1 | 0
4 | 0 | 0
4 | 0 | 0
6 | 1 | 0
6 | 1 | 0
8 | 0 | 1
8 | 0 | 1
4 | 0 | 0
4 | 0 | 0
6 | 1 | 0
8 | 0 | 1
8 | 0 | 1
6 | 1 | 0
4 | 0 | 0
8 | 0 | 1
8 | 0 | 1
8 | 0 | 1
6 | 1 | 0
6 | 1 | 0
4 | 0 | 0
4 | 0 | 0
(32 rows)
另请参阅
3.8 - APPLY_PCA
使用 PCA 模型转换数据。该函数将返回每个数据点的新坐标。
语法
APPLY_PCA ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, num_components = num‑components]
[, cutoff = cutoff‑value]
[, match_by_pos = match‑by‑position]
[, exclude_columns = 'excluded‑columns']
[, key_columns = 'key‑columns'] )
参数
- input‑columns
- 包含数据矩阵的列的逗号分隔列表,或星号 (*) 以选择所有列。需要满足以下要求:
-
所有列都必须为数字数据类型。
-
如果列名包含特殊字符,请用双引号将其括起来。
参数
model_name
模型的名称(不区分大小写)。
num_components
- 要保留在模型中的组件的数量。这是将生成的输出列数。如果忽略此参数和
cutoff
参数,则保留所有模型组件。
cutoff
- 设置为 1,指定最小累积解释方差。如果累积解释方差未达到该值,将使用组件。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
key_columns
- 来自 input‑columns 的列名称的逗号分隔列表,用于标识其数据行。这些列包含在输出表中。
示例
=> SELECT PCA ('pcamodel', 'world','country,HDI,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,
em1978,em1979,em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,
em1993,em1994,em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,
em2008,em2009,em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,
gdp1981,gdp1982,gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,
gdp1994,gdp1995,gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,
gdp2007,gdp2008,gdp2009,gdp2010' USING PARAMETERS exclude_columns='HDI,country');
PCA
---------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 96 Rejected Rows: 0
(1 row)
=> CREATE TABLE worldPCA AS SELECT
APPLY_PCA (HDI,country,em1970,em1971,em1972,em1973,em1974,em1975,em1976,em1977,em1978,em1979,
em1980,em1981,em1982,em1983,em1984 ,em1985,em1986,em1987,em1988,em1989,em1990,em1991,em1992,em1993,em1994,
em1995,em1996,em1997,em1998,em1999,em2000,em2001,em2002,em2003,em2004,em2005,em2006,em2007,em2008,em2009,
em2010,gdp1970,gdp1971,gdp1972,gdp1973,gdp1974,gdp1975,gdp1976,gdp1977,gdp1978,gdp1979,gdp1980,gdp1981,gdp1982,
gdp1983,gdp1984,gdp1985,gdp1986,gdp1987,gdp1988,gdp1989,gdp1990,gdp1991,gdp1992,gdp1993,gdp1994,gdp1995,
gdp1996,gdp1997,gdp1998,gdp1999,gdp2000,gdp2001,gdp2002,gdp2003,gdp2004,gdp2005,gdp2006,gdp2007,gdp2008,
gdp2009,gdp2010 USING PARAMETERS model_name='pcamodel', exclude_columns='HDI, country', key_columns='HDI,
country',cutoff=.3)OVER () FROM world;
CREATE TABLE
=> SELECT * FROM worldPCA;
HDI | country | col1
------+---------------------+-------------------
0.886 | Belgium | 79002.2946705704
0.699 | Belize | -25631.6670012556
0.427 | Benin | -40373.4104598122
0.805 | Chile | -16805.7940082156
0.687 | China | -37279.2893141103
0.744 | Costa Rica | -19505.5631231635
0.4 | Cote d'Ivoire | -38058.2060339272
0.776 | Cuba | -23724.5779612041
0.895 | Denmark | 117325.594028813
0.644 | Egypt | -34609.9941604549
...
(96 rows)
=> SELECT APPLY_INVERSE_PCA (HDI, country, col1
USING PARAMETERS model_name = 'pcamodel', exclude_columns='HDI,country',
key_columns = 'HDI, country') OVER () FROM worldPCA;
HDI | country | em1970 | em1971 | em1972 | em1973 |
em1974 | em1975 | em1976| em1977 | em1978 | em1979
| em1980 | em1981 | em1982 | em1983 | em1984 |em1985
| em1986 | em1987 | em1988 | em1989 | em1990 | em1991
| em1992 | em1993| em1994 | em1995 | em1996 | em1997
| em1998 | em1999 | em2000 | em2001 |em2002 |
em2003 | em2004 | em2005 | em2006 | em2007 | em2008
| em2009 | em2010 | gdp1970 | gdp1971 | gdp1972 | gdp1973
| gdp1974 | gdp1975 | gdp1976 | gdp1977 |gdp1978 | gdp1979
| gdp1980 | gdp1981 | gdp1982 | gdp1983 | gdp1984 | gdp1985
| gdp1986| gdp1987 | gdp1988 | gdp1989 | gdp1990 | gdp1991
| gdp1992 | gdp1993 | gdp1994 | gdp1995 | gdp1996 |
gdp1997 | gdp1998 | gdp1999 | gdp2000 | gdp2001 | gdp2002
| gdp2003 |gdp2004 | gdp2005 | gdp2006 | gdp2007 | gdp2008
| gdp2009 | gdp2010
-------+---------------------+-------------------+-------------------+------------------+------------------
+------------------+-------------------+------------------+------------------+-------------------+---------
----------+-------------------+------------------+-------------------+-------------------+-----------------
--+------------------+-------------------+-------------------+-------------------+------------------+-------
-----------+------------------+-------------------+-------------------+------------------+------------------
-+-------------------+------------------+-------------------+-------------------+-------------------+-------
------------+--------------------+------------------+-------------------+------------------+----------------
---+-------------------+-------------------+------------------+-------------------+------------------+------
------------+------------------+------------------+------------------+------------------+------------------+
------------------+------------------+------------------+------------------+------------------+-------------
-----+------------------+------------------+------------------+------------------+------------------+-------
-----------+------------------+------------------+------------------+------------------+------------------+-
-----------------+------------------+------------------+------------------+------------------+--------------
----+------------------+------------------+------------------+------------------+------------------+--------
----------+------------------+------------------+------------------+------------------+------------------
0.886 | Belgium | 18585.6613572407 | -16145.6374560074 | 26938.956253415 | 8094.30475779595 |
12073.5461203817 | -11069.0567600181 | 19133.8584911727| 5500.312894949 | -4227.94863799987 | 6265.77925410752
| -10884.749295608 | 30929.4669575201 | -7831.49439429977 | 3235.81760508742 | -22765.9285442662 | 27200
.6767714485 | -10554.9550160917 | 1169.4144482273 | -16783.7961289161 | 27932.2660829329 | 17227.9083196848
| 13956.0524012749 | -40175.6286481088 | -10889.4785920499 | 22703.6576872859 | -14635.5832197402 |
2857.12270512168 | 20473.5044214494 | -52199.4895696423 | -11038.7346460738 | 18466.7298633088 | -17410.4225137703 |
-3475.63826305462 | 29305.6753822341 | 1242.5724942049 | 17491.0096310849 | -12609.9984515902 | -17909.3603476248
| 6276.58431412381 | 21851.9475485178 | -2614.33738160397 | 3777.74134131349 | 4522.08854282736 | 4251.90446379366
| 4512.15101396876 | 4265.49424538129 | 5190.06845330997 | 4543.80444817989 | 5639.81122679089 | 4420.44705213467
| 5658.8820279283 | 5172.69025294376 | 5019.63640408663 | 5938.84979495903 | 4976.57073629812 | 4710.49525137591
| 6523.65700286465 | 5067.82520773578 | 6789.13070219317 | 5525.94643553563 | 6894.68336419297 | 5961.58442474331
| 5661.21093840818 | 7721.56088518218 | 5959.7301109143 | 6453.43604137202 | 6739.39384033096 | 7517.97645468455
| 6907.49136910647 | 7049.03921764209 | 7726.49091035527 | 8552.65909911844 | 7963.94487647115 | 7187.45827585515
| 7994.02955410523 | 9532.89844418041 | 7962.25713582666 | 7846.68238907624 | 10230.9878908643 | 8642.76044946519
| 8886.79860331866 | 8718.3731386891
...
(96 rows)
另请参阅
3.9 - APPLY_SVD
使用 SVD 模型转换数据。可计算 SVD 分解的矩阵 U。
语法
APPLY_SVD ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, num_components = num-components]
[, cutoff = cutoff‑value]
[, match_by_pos = match‑by‑position]
[, exclude_columns = 'excluded‑columns']
[, key_columns = 'key‑columns'] )
参数
- input‑columns
- 包含数据矩阵的列的逗号分隔列表,或星号 (*) 以选择所有列。需要满足以下要求:
-
所有列都必须为数字数据类型。
-
如果列名包含特殊字符,请用双引号将其括起来。
参数
model_name
模型的名称(不区分大小写)。
num_components
- 要保留在模型中的组件的数量。这是将生成的输出列数。如果既未提供此参数,也未提供
cutoff
参数,则保留模型中的所有组件。
cutoff
- 设置为 1,指定最小累积解释方差。如果累积解释方差未达到该值,将使用组件。如果忽略此参数和
num_components
参数,则保留所有模型组件。
match_by_pos
- 指定输入列如何与模型列匹配的布尔值:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
exclude_columns
input-columns 中要排除在处理范围之外的列名的逗号分隔列表。
key_columns
- 来自 input‑columns 的列名称的逗号分隔列表,用于标识其数据行。这些列包含在输出表中。
示例
=> SELECT SVD ('svdmodel', 'small_svd', 'x1,x2,x3,x4');
SVD
--------------------------------------------------------------
Finished in 1 iterations.
Accepted Rows: 8 Rejected Rows: 0
(1 row)
=> CREATE TABLE transform_svd AS SELECT
APPLY_SVD (id, x1, x2, x3, x4 USING PARAMETERS model_name='svdmodel', exclude_columns='id', key_columns='id')
OVER () FROM small_svd;
CREATE TABLE
=> SELECT * FROM transform_svd;
id | col1 | col2 | col3 | col4
----+-------------------+---------------------+---------------------+--------------------
4 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
6 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
1 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
2 | 0.17652411036246 | -0.0753183783382909 | -0.678196192333598 | 0.0567124770173372
3 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
5 | 0.494871802886819 | 0.161721379259287 | 0.0712816417153664 | -0.473145877877408
8 | 0.44849499240202 | -0.347260956311326 | 0.186958376368345 | 0.378561270493651
7 | 0.150974762654569 | 0.589561842046029 | 0.00392654610109522 | 0.360011163271921
(8 rows)
=> SELECT APPLY_INVERSE_SVD (* USING PARAMETERS model_name='svdmodel', exclude_columns='id',
key_columns='id') OVER () FROM transform_svd;
id | x1 | x2 | x3 | x4
----+------------------+------------------+------------------+------------------
4 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
6 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
7 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
1 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
2 | 20.6468626294368 | 9.30974906868751 | 8.71006863405534 | 6.5855928603967
3 | 31.2494347777156 | 20.6336519003026 | 27.5668287751507 | 5.84427645886865
5 | 107.93376580719 | 51.6980548011917 | 97.9665796560552 | 40.4918236881051
8 | 91.4056627665577 | 44.7629617207482 | 83.1704961993117 | 38.9274292265543
(8 rows)
另请参阅
3.10 - PREDICT_AUTOREGRESSOR
对输入关系应用自回归 (AR) 模型。
自回归模型使用以前的值进行预测。更具体地说,用户指定的“滞后”决定计算期间考虑的早期时间步长数量,而预测值则是这些滞后的线性组合。
语法
PREDICT_AUTOREGRESSOR ( 'timeseries‑column'
USING PARAMETERS
model‑name = 'model-name'
[, start = starting‑index]
[, npredictions = npredictions]
[, missing = "imputation‑method" ] )
OVER (ORDER BY 'timestamp‑column')
FROM input‑relation
注意
如书面所示,以下实参为必需,既不能省略,也不能使用其他类型的子句代替。
OVER (ORDER BY '<span class="code-variable">timestamp‑column</span>')
参数
- timeseries‑column
- 用于进行预测的时间序列列(仅使用模型创建期间指定的最后一个
p
值)。
- timestamp‑column
- 用于进行预测的时间戳列,时间步长一致。
- input‑relation
- 包含 timeseries-column 和 timestamp-column 的输入关系。
请注意,input‑relation 在 start
之前的任何 p
(训练期间设置)行中都不能包含缺失值。要处理缺失值,请参阅 IMPUTE 或 线性插值。
参数
model_name
模型的名称(不区分大小写)。
start
- INTEGER >p 或 ≤0,预测的起始 input-relation 索引(行)。如果省略,则从 input-relation 末尾开始预测。
如果 start
索引大于 timeseries-column 中的行数 N
,则预测 N
到 start
之间的值并使用这些值进行预测。
如果为负,则从 input-relation 末尾倒数,对 start
索引进行标识。
对于 N 行的 input-relation,负值的下限为 -1000 或 -(N-p),以其中较大者为准。
默认: input‑relation 的末尾
npredictions
- INTEGER ≥1,预测时间戳的数量。
默认值: 10
missing
- 用于处理缺失值的方法,为以下之一:
默认值: linear_interpolation
示例
请参阅自回归模型示例。
另请参阅
3.11 - PREDICT_LINEAR_REG
对输入关系应用线性回归模型,并将预测值以 FLOAT 形式返回。
语法
PREDICT_LINEAR_REG ( input‑columns
USING PARAMETERS model_name = 'model‑name' [, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT PREDICT_LINEAR_REG(waiting USING PARAMETERS model_name='myLinearRegModel')FROM
faithful ORDER BY id;
PREDICT_LINEAR_REG
--------------------
4.15403481386324
2.18505296804024
3.76023844469864
2.8151271587036
4.62659045686076
2.26381224187316
4.86286827835952
4.62659045686076
1.94877514654148
4.62659045686076
2.18505296804024
...
(272 rows)
以下示例显示了如何使用 match_by_pos
参数对输入表使用 PREDICT_LINEAR_REG 函数。请注意,您可以将 column 实参替换为不同于输入列的常量:
=> SELECT PREDICT_LINEAR_REG(55 USING PARAMETERS model_name='linear_reg_faithful',
match_by_pos='true')FROM faithful ORDER BY id;
PREDICT_LINEAR_REG
--------------------
2.28552115094171
2.28552115094171
2.28552115094171
2.28552115094171
2.28552115094171
2.28552115094171
2.28552115094171
...
(272 rows)
3.12 - PREDICT_LOGISTIC_REG
对输入关系应用逻辑回归模型。
PREDICT_LOGISTIC_REG 以 FLOAT 形式返回预测类或预测类的概率,具体取决于 type
参数的设置方式。当返回值位于预测类的概率范围之内时,您可以将返回值转换为 INTEGER 或其他 numeric 类型。
语法
PREDICT_LOGISTIC_REG ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, type = 'prediction‑type']
[, cutoff = probability‑cutoff]
[, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
type
- 逻辑回归的预测类型,为以下之一:
cutoff
- 与
type
参数一起使用,FLOAT 介于 0 和 1 之间且专用。当 type
设置为 response
时,如果相应概率大于或等于 cutoff
的值,则预测返回值为 1;否则,返回值为 0。
默认值: 0.5
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT car_model,
PREDICT_LOGISTIC_REG(mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel')
FROM mtcars;
car_model | PREDICT_LOGISTIC_REG
---------------------+----------------------
Camaro Z28 | 0
Fiat 128 | 1
Fiat X1-9 | 1
Ford Pantera L | 1
Merc 450SE | 0
Merc 450SL | 0
Toyota Corona | 0
AMC Javelin | 0
Cadillac Fleetwood | 0
Datsun 710 | 1
Dodge Challenger | 0
Hornet 4 Drive | 0
Lotus Europa | 1
Merc 230 | 0
Merc 280 | 0
Merc 280C | 0
Merc 450SLC | 0
Pontiac Firebird | 0
Porsche 914-2 | 1
Toyota Corolla | 1
Valiant | 0
Chrysler Imperial | 0
Duster 360 | 0
Ferrari Dino | 1
Honda Civic | 1
Hornet Sportabout | 0
Lincoln Continental | 0
Maserati Bora | 1
Mazda RX4 | 1
Mazda RX4 Wag | 1
Merc 240D | 0
Volvo 142E | 1
(32 rows)
以下示例显示了如何使用 match_by_pos
参数对输入表使用 PREDICT_LOGISTIC_REG
。请注意,您可以将任何列输入替换为不同于输入列的常量。在此示例中,列 mpg
被替换为常量 20:
=> SELECT car_model,
PREDICT_LOGISTIC_REG(20, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel', match_by_pos='true')
FROM mtcars;
car_model | PREDICT_LOGISTIC_REG
--------------------+----------------------
AMC Javelin | 0
Cadillac Fleetwood | 0
Camaro Z28 | 0
Chrysler Imperial | 0
Datsun 710 | 1
Dodge Challenger | 0
Duster 360 | 0
Ferrari Dino | 1
Fiat 128 | 1
Fiat X1-9 | 1
Ford Pantera L | 1
Honda Civic | 1
Hornet 4 Drive | 0
Hornet Sportabout | 0
Lincoln Continental | 0
Lotus Europa | 1
Maserati Bora | 1
Mazda RX4 | 1
Mazda RX4 Wag | 1
Merc 230 | 0
Merc 240D | 0
Merc 280 | 0
Merc 280C | 0
Merc 450SE | 0
Merc 450SL | 0
Merc 450SLC | 0
Pontiac Firebird | 0
Porsche 914-2 | 1
Toyota Corolla | 1
Toyota Corona | 0
Valiant | 0
Volvo 142E | 1
(32 rows)
3.13 - PREDICT_MOVING_AVERAGE
将由 MOVING_AVERAGE 创建的移动平均值 (MA) 模型应用于输入关系。
移动平均值模型使用早期预测误差进行未来预测。更具体地说,用户指定的“滞后”决定计算期间考虑的早期预测和错误数量。
语法
PREDICT_MOVING_AVERAGE ( 'timeseries‑column'
USING PARAMETERS
model_name = 'model‑name'
[, start = starting‑index]
[, npredictions = npredictions]
[, missing = "imputation‑method" ] )
OVER (ORDER BY 'timestamp‑column')
FROM input‑relation
注意
如书面所示,以下实参为必需,既不能省略,也不能使用其他类型的子句代替。
OVER (ORDER BY '<span class="code-variable">timestamp‑column</span>')
参数
- timeseries‑column
- 用于进行预测的时间序列列(仅使用模型创建期间指定的最后一个
q
值)。
- timestamp‑column
- 用于进行预测的时间戳列,时间步长一致。
- input‑relation
- 包含 timeseries-column 和 timestamp-column 的输入关系。
请注意,input‑relation 在 start
之前的任何 q
(训练期间设置)行中都不能包含缺失值。要处理缺失值,请参阅 IMPUTE 或 线性插值。
参数
model_name
模型的名称(不区分大小写)。
start
- INTEGER >q 或 ≤0,预测的起始 input-relation 索引(行)。如果省略,则从 input-relation 末尾开始预测。
如果 start
索引大于 timeseries-column 中的行数 N
,则预测 N
到 start
之间的值并使用这些值进行预测。
如果为负,则从 input-relation 末尾倒数,对 start
索引进行标识。
对于 N 行的 input-relation,负值的下限为 -1000 或 -(N-q),以其中较大者为准。
默认: input‑relation 的末尾
npredictions
- INTEGER ≥1,预测时间戳的数量。
默认值: 10
missing
- 用于处理缺失值的方法,为以下之一:
默认值: linear_interpolation
示例
请参阅移动平均模型示例。
另请参阅
3.14 - PREDICT_NAIVE_BAYES
对输入关系应用朴素贝叶斯模型。
PREDICT_NAIVE_BAYES 返回指定预测类或预测类概率的 VARCHAR,具体取决于 type
参数的设置方式。如果函数返回概率,您可以将返回值转换为 INTEGER 或其他 numeric 数据类型。
语法
PREDICT_NAIVE_BAYES ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, type = ' return‑type ']
[, class = 'user‑input‑class']
[, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
type
- 以下几项之一:
class
- 如果
type
参数设置为 probability
,则是必需的。如果省略此参数,“PREDICT_NAIVE_BAYES”返回经预测概率最高的类。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT party, PREDICT_NAIVE_BAYES (vote1, vote2, vote3
USING PARAMETERS model_name='naive_house84_model',
type='response')
AS Predicted_Party
FROM house84_test;
party | Predicted_Party
------------+-----------------
democrat | democrat
democrat | democrat
democrat | democrat
republican | republican
democrat | democrat
democrat | democrat
democrat | democrat
democrat | democrat
democrat | democrat
republican | republican
democrat | democrat
democrat | democrat
democrat | democrat
democrat | republican
republican | republican
democrat | democrat
republican | republican
...
(99 rows)
另请参阅
3.15 - PREDICT_NAIVE_BAYES_CLASSES
对输入关系应用 Naive Bayes 模型并返回类的概率:
语法
PREDICT_NAIVE_BAYES_CLASSES ( predictor‑columns
USING PARAMETERS model_name = 'model‑name'
[, key_columns = 'key‑columns']
[, exclude_columns = 'excluded‑columns]
[, classes = 'classes']
[, match_by_pos = match‑by‑position] )
OVER( [window-partition-clause] )
参数
- predictor‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
key_columns
用于标识输出行的预测工具列名称的逗号分隔列表。要排除这些和其他预测工具列用于预测,请将其包含在参数 exclude_columns
的实参列表中。
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
classes
- 以逗号分隔的模型类标签列表。分类器预测属于此给定类的概率。值区分大小写。
match_by_pos
- 布尔值,指定预测指标列如何匹配模型特征:
-
false
(默认值):按名称匹配。
-
true
:按预测指标列列表中列的位置匹配。
示例
=> SELECT PREDICT_NAIVE_BAYES_CLASSES (id, vote1, vote2 USING PARAMETERS
model_name='naive_house84_model',key_columns='id',exclude_columns='id',
classes='democrat, republican', match_by_pos='false')
OVER() FROM house84_test;
id | Predicted | Probability | democrat | republican
-----+------------+-------------------+-------------------+-------------------
21 | democrat | 0.775473383353576 | 0.775473383353576 | 0.224526616646424
28 | democrat | 0.775473383353576 | 0.775473383353576 | 0.224526616646424
83 | republican | 0.592510497724379 | 0.407489502275621 | 0.592510497724379
102 | democrat | 0.779889432167111 | 0.779889432167111 | 0.220110567832889
107 | republican | 0.598662714551597 | 0.401337285448403 | 0.598662714551597
125 | republican | 0.598662714551597 | 0.401337285448403 | 0.598662714551597
132 | republican | 0.592510497724379 | 0.407489502275621 | 0.592510497724379
136 | republican | 0.592510497724379 | 0.407489502275621 | 0.592510497724379
155 | republican | 0.598662714551597 | 0.401337285448403 | 0.598662714551597
174 | republican | 0.592510497724379 | 0.407489502275621 | 0.592510497724379
...
(1 row)
另请参阅
3.16 - PREDICT_PMML
对输入关系应用导入的 PMML 模型。函数返回采用 PMML 模型编码的模型类型预期的结果。
在以下情况下,PREDICT_PMML 返回 NULL:
-
预测指标为无效值或 NULL 值
-
分类预测指标属于未知类
注意
PREDICT_PMML 针对使用 Output
标记的模型返回复杂类型 ROW 的值。Vertica 目前不支持直接将此数据插入表中。
您可以通过在将输出插入表之前使用 TO_JSON 将其更改为 JSON 来消除此限制:
=> CREATE TABLE predicted_output AS SELECT TO_JSON(PREDICT_PMML(X1,X2,X3
USING PARAMETERS model_name='pmml_imported_model'))
AS predicted_value
FROM input_table;
语法
PREDICT_PMML ( input‑columns
USING PARAMETERS model_name = 'model-name' [, match_by_pos = match-by-position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
- 模型的名称(不区分大小写)。函数支持对以下模型类型进行编码的 PMML 模型:
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
在此示例中,函数调用使用表中的所有列作为预测指标,同时使用 PMML 格式的 "my_kmeans
" 模型预测值:
SELECT PREDICT_PMML(* USING PARAMETERS model_name='my_kmeans') AS predicted_label FROM table;
在此示例中,函数调用仅将列 col1, col2
作为预测指标,使用架构 "my_schema
" 中的模型 "my_kmeans
" 预测每一行的值:
SELECT PREDICT_PMML(col1, col2 USING PARAMETERS model_name='my_schema.my_kmeans') AS predicted_label FROM table;
在此示例中,函数调用返回的错误既非 schema 也非 model-name,可以接受 * 作为值:
SELECT PREDICT_PMML(* USING PARAMETERS model_name='*.*') AS predicted_label FROM table;
SELECT PREDICT_PMML(* USING PARAMETERS model_name='*') AS predicted_label FROM table;
SELECT PREDICT_PMML(* USING PARAMETERS model_name='models.*') AS predicted_label FROM table;
另请参阅
3.17 - PREDICT_RF_CLASSIFIER
对输入关系应用随机森林模型。PREDICT_RF_CLASSIFIER 返回 VARCHAR 数据类型,指定以下几项之一,具体取决于 type
参数的设置方式:
注意
仅根据森林中决策树的公民投票选择预测类。因此,在特殊情况下,预测类的计算概率可能不是最高的。
语法
PREDICT_RF_CLASSIFIER ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, type = 'prediction‑type']
[, class = 'user‑input‑class']
[, match_by_pos = match‑by‑position] )
参数
-
input-columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
type
- 要返回的预测类型,为以下之一:
class
- 当
type
参数设置为 probability
时使用的类。如果您省略此参数,函数将使用预测类 — 公民投票排名最高的类。因此,预测函数返回输入实例属于其预测类的概率。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT PREDICT_RF_CLASSIFIER (Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='myRFModel') FROM iris;
PREDICT_RF_CLASSIFIER
-----------------------
setosa
setosa
setosa
...
versicolor
versicolor
versicolor
...
virginica
virginica
virginica
...
(150 rows)
此示例显示了如何通过 match_by_pos
参数使用 PREDICT_RF_CLASSIFIER 函数:
=> SELECT PREDICT_RF_CLASSIFIER (Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='myRFModel', match_by_pos='true') FROM iris;
PREDICT_RF_CLASSIFIER
-----------------------
setosa
setosa
setosa
...
versicolor
versicolor
versicolor
...
virginica
virginica
virginica
...
(150 rows)
另请参阅
3.18 - PREDICT_RF_CLASSIFIER_CLASSES
对输入关系应用随机森林模型并返回类的概率:
-
VARCHAR predicted
列包含投票(公民投票)排名最高的类标签。
-
多个 FLOAT 列,其中第一个 probability
列包含预测列中报告的类的概率。其他列包含 classes
参数中指定的每个类的概率。
-
与参数 key_columns
中指定的匹配输入列具有相同值和数据类型的关键字列。
注意
预测类的选择取决于森林中决策树的公民投票。因此,在特殊情况下,预测类的计算概率可能不是最高的。
语法
PREDICT_RF_CLASSIFIER_CLASSES ( predictor‑columns
USING PARAMETERS model_name = 'model‑name'
[, key_columns = 'key‑columns']
[, exclude_columns = 'excluded‑columns']
[, classes = 'classes']
[, match_by_pos = match‑by‑position] )
OVER( [window-partition-clause] )
参数
- predictor‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
key_columns
用于标识输出行的预测工具列名称的逗号分隔列表。要排除这些和其他预测工具列用于预测,请将其包含在参数 exclude_columns
的实参列表中。
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
classes
- 以逗号分隔的模型类标签列表。分类器预测属于此给定类的概率。值区分大小写。
match_by_pos
- 布尔值,指定预测指标列如何匹配模型特征:
-
false
(默认值):按名称匹配。
-
true
:按预测指标列列表中列的位置匹配。
示例
=> SELECT PREDICT_RF_CLASSIFIER_CLASSES(Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='myRFModel') OVER () FROM iris;
predicted | probability
-----------+-------------------
setosa | 1
setosa | 0.99
setosa | 1
setosa | 1
setosa | 1
setosa | 0.97
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 0.99
...
(150 rows)
此示例显示了如何通过 match_by_pos
参数使用函数 PREDICT_RF_CLASSIFIER_CLASSES
:
=> SELECT PREDICT_RF_CLASSIFIER_CLASSES(Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='myRFModel', match_by_pos='true') OVER () FROM iris;
predicted | probability
-----------+-------------------
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
setosa | 1
...
(150 rows)s
另请参阅
3.19 - PREDICT_RF_REGRESSOR
对输入关系应用随机森林模型,并返回 FLOAT 数据类型,该数据类型用于指定随机森林模型的预测值,即森林中树木的平均预测值。
语法
PREDICT_RF_REGRESSOR ( input‑columns
USING PARAMETERS model_name = 'model‑name' [, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT PREDICT_RF_REGRESSOR (mpg,cyl,hp,drat,wt
USING PARAMETERS model_name='myRFRegressorModel')FROM mtcars;
PREDICT_RF_REGRESSOR
----------------------
2.94774203574204
2.6954087024087
2.6954087024087
2.89906346431346
2.97688489288489
2.97688489288489
2.7086587024087
2.92078965478965
2.97688489288489
2.7086587024087
2.95621822621823
2.82255155955156
2.7086587024087
2.7086587024087
2.85650394050394
2.85650394050394
2.97688489288489
2.95621822621823
2.6954087024087
2.6954087024087
2.84493251193251
2.97688489288489
2.97688489288489
2.8856467976468
2.6954087024087
2.92078965478965
2.97688489288489
2.97688489288489
2.7934087024087
2.7934087024087
2.7086587024087
2.72469441669442
(32 rows)
另请参阅
3.20 - PREDICT_SVM_CLASSIFIER
使用 SVM 模型预测输入关系中样本的类标签,并将预测值以 FLOAT 数据类型返回。
语法
PREDICT_SVM_CLASSIFIER (input‑columns
USING PARAMETERS model_name = 'model‑name'
[, match_by_pos = match‑by‑position]
[, type = 'return‑type']
[, cutoff = 'cutoff‑value'] ] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
type
- 一个字符串,指定针对每个输入行返回的输出,为以下之一:
cutoff
- 仅当
type
参数设置为 probability
的情况下才有效,这是一个 FLOAT 值,用于与转换的预测得分进行比较以确定预测类。
默认值: 0
示例
=> SELECT PREDICT_SVM_CLASSIFIER (mpg,cyl,disp,wt,qsec,vs,gear,carb
USING PARAMETERS model_name='mySvmClassModel') FROM mtcars;
PREDICT_SVM_CLASSIFIER
------------------------
0
0
1
0
0
1
1
1
1
0
0
1
0
0
1
0
0
0
0
0
0
1
1
0
0
1
1
1
1
0
0
0
(32 rows)
此示例显示了如何通过 match_by_pos
参数对 mtcars
表使用 PREDICT_SVM_CLASSIFIER
。在此示例中,列 mpg
被替换为常量 40:
=> SELECT PREDICT_SVM_CLASSIFIER (40,cyl,disp,wt,qsec,vs,gear,carb
USING PARAMETERS model_name='mySvmClassModel', match_by_pos ='true') FROM mtcars;
PREDICT_SVM_CLASSIFIER
------------------------
0
0
0
0
1
0
0
1
1
1
1
1
0
0
0
1
1
1
1
0
0
0
0
0
0
0
0
1
1
0
0
1
(32 rows)
另请参阅
3.21 - PREDICT_SVM_REGRESSOR
使用 SVM 模型对输入关系中的样本执行回归,并将预测值以 FLOAT 数据类型返回。
语法
PREDICT_SVM_REGRESSOR(input‑columns
USING PARAMETERS model_name = 'model‑name' [, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
=> SELECT PREDICT_SVM_REGRESSOR(waiting USING PARAMETERS model_name='mySvmRegModel')
FROM faithful ORDER BY id;
PREDICT_SVM_REGRESSOR
--------------------
4.06488248694445
2.30392277646291
3.71269054484815
2.867429883817
4.48751281746003
2.37436116488217
4.69882798271781
4.48751281746003
2.09260761120512
...
(272 rows)
此示例显示了如何通过 match_by_pos
参数对有信心的表使用 PREDICT_SVM_REGRESSOR 函数。在此示例中,等待列被替换为常量 40:
=> SELECT PREDICT_SVM_REGRESSOR(40 USING PARAMETERS model_name='mySvmRegModel', match_by_pos='true')
FROM faithful ORDER BY id;
PREDICT_SVM_REGRESSOR
--------------------
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
1.31778533859324
...
(272 rows)
另请参阅
3.22 - PREDICT_TENSORFLOW
对输入关系应用 TensorFlow 模型,并返回编码模型类型的预期结果。
语法
PREDICT_TENSORFLOW ( input‑columns
USING PARAMETERS model_name = 'model‑name' [, num_passthru_cols = 'n-first-columns-to-ignore'] )
OVER( [window-partition-clause] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
num_passthru_cols
- 指定要跳过的输入列数的整数。
示例
使用 PREDICT_TENSORFLOW 和 num_passthru_cols
跳过前两个输入列:
SELECT PREDICT_TENSORFLOW ( pid,label,x1,x2
USING PARAMETERS model_name='spiral_demo', num_passthru_cols=2 )
OVER(PARTITION BEST) as predicted_class FROM points;
--example output, the skipped columns are displayed as the first columns of the output
pid | label | col0 | col1
-------+-------+----------------------+----------------------
0 | 0 | 0.990638732910156 | 0.00936129689216614
1 | 0 | 0.999036073684692 | 0.000963933940511197
2 | 1 | 0.0103802494704723 | 0.989619791507721
另请参阅
3.23 - PREDICT_XGB_CLASSIFIER
对输入关系应用 XGBoost 分类器模型。 PREDICT_XGB_CLASSIFIER
返回 VARCHAR 数据类型,指定以下几项之一,具体取决于 type
参数的设置方式:
语法
PREDICT_XGB_CLASSIFIER ( input‑columns
USING PARAMETERS model_name = 'model‑name'
[, type = 'prediction-type' ]
[, class = 'user‑input‑class' ]
[, match_by_pos = 'match‑by‑position' ]
[, probability_normalization = 'prob-normalization' ] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
type
- 要返回的预测类型,为以下之一:
class
- 当
type
参数设置为 probability
时使用的类。如果您省略此参数,函数将使用预测类 — 概率得分最高的类别。因此,预测函数返回输入实例属于指定类或预测类的概率。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
probability_normalization
分类器的标准化方法,它可以是 logit``softmax
(多类分类器)或(二元分类器)。如果未指定,则使用默认的 logit
函数进行标准化。
示例
使用
PREDICT_XGB_CLASSIFIER
将分类器应用于测试数据:
=> SELECT PREDICT_XGB_CLASSIFIER (Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='xgb_iris', probability_normalization='logit') FROM iris1;
PREDICT_XGB_CLASSIFIER
------------------------
setosa
setosa
setosa
.
.
.
versicolor
versicolor
versicolor
.
.
.
virginica
virginica
virginica
.
.
.
(90 rows)
有关更多示例,请参阅 XGBoost 用于分类。
3.24 - PREDICT_XGB_CLASSIFIER_CLASSES
对输入关系应用 XGBoost 分类器模型并返回类的概率:
-
VARCHAR predicted
列包含概率最高的类标签。
-
多个 FLOAT 列,其中第一个 probability
列包含预测列中报告的类的概率。其他列包含 classes
参数中指定的每个类的概率。
-
与参数 key_columns
中指定的匹配输入列具有相同值和数据类型的关键字列。
所有树都会影响每个响应类的预测概率,选择概率最高的类。
语法
PREDICT_XGB_CLASSIFIER_CLASSES ( predictor‑columns)
USING PARAMETERS model_name = 'model‑name'
[, key_columns = 'key‑columns']
[, exclude_columns = 'excluded‑columns']
[, classes = 'classes']
[, match_by_pos = match‑by‑position]
[, probability_normalization = 'prob-normalization' ] )
OVER( [window-partition-clause] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
key_columns
用于标识输出行的预测工具列名称的逗号分隔列表。要排除这些和其他预测工具列用于预测,请将其包含在参数 exclude_columns
的实参列表中。
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
classes
- 以逗号分隔的模型类标签列表。分类器预测属于每个给定类的概率。值区分大小写。
match_by_pos
- 布尔值,指定预测指标列如何匹配模型特征:
-
false
(默认值):按名称匹配。
-
true
:按预测指标列列表中列的位置匹配。
probability_normalization
分类器的标准化方法,它可以是 logit``softmax
(多类分类器)或(二元分类器)。如果未指定,则使用默认的 logit
函数进行标准化。
示例
使用
XGB_CLASSIFIER
创建 XGBoost 分类器模型后,您可以使用 PREDICT_XGB_CLASSIFIER_CLASSES
查看每个分类的概率。在此示例中,XGBoost 分类器模型 "xgb_iris" 用于预测给定花属于“鸢尾 (iris)”属的概率:
=> SELECT PREDICT_XGB_CLASSIFIER_CLASSES(Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='xgb_iris') OVER (PARTITION BEST) FROM iris1;
predicted | probability
------------+-------------------
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.999911552783011
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
setosa | 0.9999650465368
versicolor | 0.99991871763563
.
.
.
(90 rows)
您还可以指定其他类。在此示例中,PREDICT_XGB_CLASSIFIER_CLASSES
与上一个示例进行相同的预测,但同样返回花属于指定的 classes
“北美车前 (virginica)”和“花叶芦竹 (versicolor)”的概率:
=> SELECT PREDICT_XGB_CLASSIFIER_CLASSES(Sepal_Length, Sepal_Width, Petal_Length, Petal_Width
USING PARAMETERS model_name='xgb_iris', classes='virginica,versicolor', probability_normalization='logit') OVER (PARTITION BEST) FROM iris1;
predicted | probability | virginica | versicolor
------------+-------------------+----------------------+----------------------
setosa | 0.9999650465368 | 1.16160301545536e-05 | 2.33374330460065e-05
setosa | 0.9999650465368 | 1.16160301545536e-05 | 2.33374330460065e-05
setosa | 0.9999650465368 | 1.16160301545536e-05 | 2.33374330460065e-05
.
.
.
versicolor | 0.99991871763563 | 6.45697562080953e-05 | 0.99991871763563
versicolor | 0.999967282051702 | 1.60052775404199e-05 | 0.999967282051702
versicolor | 0.999648819964864 | 0.00028366342010669 | 0.999648819964864
.
.
.
virginica | 0.999977039257386 | 0.999977039257386 | 1.13305901169304e-05
virginica | 0.999977085131063 | 0.999977085131063 | 1.12847163501674e-05
virginica | 0.999977039257386 | 0.999977039257386 | 1.13305901169304e-05
(90 rows)
3.25 - PREDICT_XGB_REGRESSOR
对输入关系应用 XGBoost 回归模型。 PREDICT_XGB_REGRESSOR
返回 FLOAT 数据类型,指定 XGBoost 模型的预测值:模型中每个树的贡献加权总和。
语法
PREDICT_XGB_REGRESSOR ( input‑columns
USING PARAMETERS model_name = 'model‑name' [, match_by_pos = match‑by‑position] )
参数
- input‑columns
- 输入关系中要使用的列的逗号分隔列表,或者使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
match_by_pos
该布尔值指定输入列如何与模型特征匹配:
-
false
(默认值):按名称匹配。
-
true
:按输入列列表中列的位置匹配。
示例
请参阅用于回归的 XGBoost。
3.26 - REVERSE_NORMALIZE
对标准化数据进行反向标准化转换,从而使标准化数据非标准化。如果您指定的列并非位于指定模型,则 REVERSE_NORMALIZE
会按原样返回该列。
语法
REVERSE_NORMALIZE ( input‑columns USING PARAMETERS model_name = 'model‑name' );
参数
- input‑columns
- 使用输入关系中的列,或使用星号 (*) 选择所有列。
参数
model_name
模型的名称(不区分大小写)。
示例
对表 mtcars
中的 hp
和 cyl
列使用 REVERSE_NORMALIZE
,其中 hp
位于标准化模型 mtcars_normfit
,cyl
并非位于标准化模型。
=> SELECT REVERSE_NORMALIZE (hp, cyl USING PARAMETERS model_name='mtcars_normfit') FROM mtcars;
hp | cyl
------+-----
42502 | 8
58067 | 8
26371 | 4
42502 | 8
31182 | 6
32031 | 4
26937 | 4
34861 | 6
34861 | 6
50992 | 8
50992 | 8
49577 | 8
25805 | 4
18447 | 4
29767 | 6
65142 | 8
69387 | 8
14768 | 4
49577 | 8
60897 | 8
94857 | 8
31182 | 6
31182 | 6
30899 | 4
69387 | 8
49577 | 6
18730 | 4
18730 | 4
74764 | 8
17598 | 4
50992 | 8
27503 | 4
(32 rows)
另请参阅
4 - 模型评估
一组 Vertica 机器学习函数评估训练模型生成的预测数据,或返回有关模型本身的信息。
4.1 - CONFUSION_MATRIX
使用响应变量的观察值和预测值计算表的混淆矩阵。 CONFUSION_MATRIX
生成具有以下尺寸的表格:
语法
CONFUSION_MATRIX ( targets, predictions [ USING PARAMETERS num_classes = num‑classes ] OVER()
参数
实参 targets 和 predictions 必须设置为数据类型相同的输入列,即以下之一:INTEGER、BOOLEAN 或 CHAR/VARCHAR。根据数据类型,这些列将按如所示标识类:
-
INTEGER:从零开始的连续整数(介于 0 和 (num-classes-1) 之间),其中 num-classes 为类数。例如,给定以下输入列值 — {0, 1, 2, 3, 4
} — Vertica 假定有五个类。
注意
如果输入列值不连续,Vertica 将插入缺失值。因此,给定以下输入值 — {0, 1, 3, 5, 6,}
— Vertica 假设有七个类。
-
BOOLEAN:“是”或“否”
-
CHAR/VARCHAR:类名。如果输入列的类型为 CHAR/VARCHAR 列,则还必须将参数 num_classes
设置为类数。
注意
Vertica 将类数计算为两个输入列中值的并集。例如,假如 targets 和 predictions 中的值集输入列为如下所示,则 Vertica 将计为四个类:
{'milk', 'soy milk', 'cream'}
{'soy milk', 'almond milk'}
参数
num_classes
一个整数 > 1,指定要传递给该函数的类数。
如果指定的输入列为 CHAR/VARCHAR 类型,则必须设置此参数。否则,该函数将根据列数据类型处理此参数:
示例
此示例计算逻辑回归模型的混淆矩阵,该模型将 mtcars
数据集中的汽车分为自动档或手动档。观察值在输入列 obs
中,而预测值在输入列 pred
中。因为这是一个二元分类问题,所以所有值都是 0 或 1。
在返回的表中,列 am
中值为 0 的所有 19 辆汽车都被 PREDICT_LOGISTIC_REGRESSION
正确预测其值为 0。在 am
列中值为 1 的 13 辆汽车中,12 辆被正确预测其值为 1,而 1 辆汽车被错误地分类为值 0:
=> SELECT CONFUSION_MATRIX(obs::int, pred::int USING PARAMETERS num_classes=2) OVER()
FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG(mpg, cyl, disp,drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel')AS PRED
FROM mtcars) AS prediction_output;
actual_class | predicted_0 | predicted_1 | comment
-------------+-------------+-------------+------------------------------------------
0 | 19 | 0 |
1 | 0 | 13 | Of 32 rows, 32 were used and 0 were ignored
(2 rows)
4.2 - CROSS_VALIDATE
使用输入关系对学习算法执行 k-fold 交叉验证,并对超参数执行网格搜索。输出是所选算法的平均性能指标。该函数支持 SVM 分类、朴素贝叶斯和逻辑回归。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
CROSS_VALIDATE ( 'algorithm', 'input‑relation', 'response‑column', 'predictor‑columns'
[ USING PARAMETERS
[exclude_columns = 'excluded‑columns']
[, cv_model_name = 'model']
[, cv_metrics = 'metrics']
[, cv_fold_count = num‑folds]
[, cv_hyperparams = 'hyperparams']
[, cv_prediction_cutoff = prediction‑cutoff] ] )
参数
- 算法
- 算法训练函数的名称,为以下之一:
- input‑relation
- 包含用于训练和测试的数据的表或视图。 如果输入关系在 Hive 中定义,请使用
SYNC_WITH_HCATALOG_SCHEMA
以同步 hcatalog
架构,然后运行机器学习功能。
- response‑column
- 包含响应的输入列的名称。
- predictor‑columns
输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns
的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。
参数
exclude_columns
- 要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
cv_model_name
- 允许您检索交叉验证过程结果的模型的名称。如果忽略此参数,则显示结果但不保存。如果将此参数设置为模型名称,则可以使用摘要函数
GET_MODEL_ATTRIBUTE
和
GET_MODEL_SUMMARY
检索结果
-
cv_metrics
- 用于评估算法的指标,指定为指标名称的逗号分隔列表或 JSON 数组。在这两种情况下,您都需要指定以下一个或多个指标名称:
-
accuracy
(默认值)
-
error_rate
-
TP
:真阳性,预测为 1 类的 1 类案例数
-
FP
:假阳性,预测为 1 类的 0 类案例数
-
TN
:真阴性,预测为 0 类的 0 类案例数
-
FN
:假阴性,预测 0 类的 1 类案例数
-
TPR
或 recall
:真阳性率,1 类中的正确预测
-
FPR
:假阳性率,0 类中的错误预测
-
TNR
:真阴性率,0 类中的正确预测
-
FNR
:假阴性率,1 类中的错误预测
-
PPV
或 precision
:阳性预测值,预测为 1 类案例中的正确预测
-
NPV
:阴性预测值,预测为 0 类案例中的正确预测
-
MSE
:均方误差
![](/images/machine-learning/mean-squared-error.png)
-
MAE
:平均绝对误差
![](/images/machine-learning/mean-absolute-error.png)
-
rsquared
:决定系数
![](/images/machine-learning/rsquared.png)
-
explained_variance
![](/images/machine-learning/explained-variance.png)
-
fscore
(1 + beta˄2) * precison * recall / (beta˄2 * precision + recall)
beta 默认等于 1
-
auc_roc
:使用指定数量 bin 的 ROC 的 AUC,默认为 100
-
auc_prc
:使用指定数量 bin 的 PRC 的 AUC,默认为 100
-
counts
:解析为其他四个指标的快捷方式:TP
、FP
、TN
和 FN
-
count
:仅在 JSON 语法中有效,计算由一个类 (case-class-label) 标记但预测为另一类 (predicted-class-label) 的案例数:
cv_metrics='[{"count":[case-class-label, predicted-class-label]}]'
cv_fold_count
- 拆分数据的折叠数。
默认值: 5
cv_hyperparams
- JSON 字符串,描述用于超参数网格搜索的参数组合。JSON 字符串包含成对的超参数名称。每个超参数的值可以指定为数组或序列。例如:
{"param1":[value1,value2,...], "param2":{"first":first_value, "step":step_size, "count":number_of_values} }
应使用 JSON 标准引用超参数名称和字符串值。这些参数被传递给训练函数。
cv_prediction_cutoff
- 传递给逻辑回归预测阶段的临界阈值,介于 0 和 1(不含)之间的 FLOAT
默认值: 0.5
模型属性
call_string
- 在调用
CROSS_VALIDATE
时指定的所有输入实参的值。
run_average
- 参数
cv_metrics
中指定的所有指标的所有折叠的平均值(如果指定);否则为平均精度。
fold_info
- 每个折叠的行数:
-
fold_id
:折叠的索引。
-
row_count
:折叠中为测试而保留的行数。
counters
- 该函数的所有计数器,包括:
-
accepted_row_count
:input_relation
中的总行数减去拒绝的行数。
-
rejected_row_count
:因包含无效值而跳过的 input_relation
行数。
-
feature_count
:输入到机器学习模型的特征数量。
run_details
- 有关每次运行的信息,其中运行意味着训练一个模型,然后在一个保留的折叠上测试该模型:
-
fold_id
:保留用于测试的折叠的索引。
-
iteration_count
:在非保留折叠的模型训练中使用的迭代数。
-
accuracy
:参数 cv_metrics
中指定的所有指标,或精度(如果未提供 cv_metrics
)。
-
error_rate
:参数 cv_metrics
中指定的所有指标,或精度(如果忽略该参数)。
特权
非超级用户:
在 JSON 中指定指标
参数 cv_metrics
可以将指标指定为 JSON 对象 的数组,其中每个对象指定一个指标名称。例如,以下表达式将 cv_metrics
设置为指定为 JSON 对象的两个指标,即 accuracy
和 error_rate
:
cv_metrics='["accuracy", "error_rate"]'
在下一个示例中,cv_metrics
设置为两个指标,即 accuracy
和 TPR
(真阳性率)。此处,TPR
指标被指定为一个 JSON 对象,它接受一个包含两个类标签实参(即 2 和 3)的数组:
cv_metrics='[ "accuracy", {"TPR":[2,3] } ]'
指定为 JSON 对象的指标可以接受参数。在以下示例中,fscore
指标指定参数 beta
,该参数设置为 0.5:
cv_metrics='[ {"fscore":{"beta":0.5} } ]'
参数支持对于某些指标特别有用。例如,指标 auc_roc
和 auc_prc
构建一条曲线,然后计算该曲线下的面积。对于 ROC
,曲线是通过绘制指标 TPR
与 FPR
而成的;对于 PRC
,通过绘制指标 PPV
(precision
) 与 TPR
(recall
) 而成。通过将参数 num_bins
设置为大于默认值 100 的值,可以提高此类曲线的精度。例如,以下表达式计算使用 1000 个 bin 构建的 ROC 曲线的 AUC:
cv_metrics='[{"auc_roc":{"num_bins":1000}}]'
将指标用于多类分类器函数
所有支持的指标均为二元分类器函数
LOGISTIC_REG
和
SVM_CLASSIFIER
而定义。对于
NAIVE_BAYES
等多类分类器函数,可以针对每个 one-versus-the-rest 二元分类器计算这些指标。使用实参请求每个分类器的指标。例如,如果训练数据具有整数类标签,您可以使用 precision
(PPV
) 指标设置 cv_metrics
,如下所示:
cv_metrics='[{"precision":[0,4]}]'
此设置指定返回为两个分类器计算精度的两列:
-
第 1 列:对 0 与非 0 进行分类
-
第 2 列:对 4 与非 4 进行分类
如果忽略类标签实参,则使用索引为 1 的类。不是为单个 one-versus-the-rest 分类器计算指标,而是以下列方式之一计算平均值:macro
、micro
或 weighted
(默认)。例如,以下 cv_metrics
设置返回按类大小加权的平均值:
cv_metrics='[{"precision":{"avg":"weighted"}}]'
可以采用类似方式为多类分类器定义 AUC 类型的指标。例如,以下 cv_metrics
设置计算每个 one-versus-the-rest 分类器的 ROC 曲线下面积,然后返回按类大小加权的平均值。
cv_metrics='[{"auc_roc":{"avg":"weighted", "num_bins":1000}}]'
示例
=> SELECT CROSS_VALIDATE('svm_classifier', 'mtcars', 'am', 'mpg'
USING PARAMETERS cv_fold_count= 6,
cv_hyperparams='{"C":[1,5]}',
cv_model_name='cv_svm',
cv_metrics='accuracy, error_rate');
CROSS_VALIDATE
----------------------------
Finished
===========
run_average
===========
C |accuracy |error_rate
---+--------------+----------
1 | 0.75556 | 0.24444
5 | 0.78333 | 0.21667
(1 row)
4.3 - ERROR_RATE
使用输入表返回一个计算错误分类率并将其显示为 FLOAT 值的表。 ERROR_RATE
返回具有以下维度的表:
语法
ERROR_RATE ( targets, predictions [ USING PARAMETERS num_classes = num‑classes ] ) OVER()
参数
实参 targets 和 predictions 必须设置为数据类型相同的输入列,即以下之一:INTEGER、BOOLEAN 或 CHAR/VARCHAR。根据数据类型,这些列将按如所示标识类:
-
INTEGER:从零开始的连续整数(介于 0 和 (num-classes-1) 之间),其中 num-classes 为类数。例如,给定以下输入列值 — {0, 1, 2, 3, 4
} — Vertica 假定有五个类。
注意
如果输入列值不连续,Vertica 将插入缺失值。因此,给定以下输入值 — {0, 1, 3, 5, 6,}
— Vertica 假设有七个类。
-
BOOLEAN:“是”或“否”
-
CHAR/VARCHAR:类名。如果输入列的类型为 CHAR/VARCHAR 列,则还必须将参数 num_classes
设置为类数。
注意
Vertica 将类数计算为两个输入列中值的并集。例如,假如 targets 和 predictions 中的值集输入列为如下所示,则 Vertica 将计为四个类:
{'milk', 'soy milk', 'cream'}
{'soy milk', 'almond milk'}
参数
num_classes
一个整数 > 1,指定要传递给该函数的类数。
如果指定的输入列为 CHAR/VARCHAR 类型,则必须设置此参数。否则,该函数将根据列数据类型处理此参数:
特权
非超级用户:模型所有者或模型的使用权限
示例
此示例说明如何对名为 mtcars
的输入表执行 ERROR_RATE 函数。obs
列中显示响应变量,而 pred
列中显示预测值。由于该示例是一个分类问题,因此所有的响应变量值和预测变量值都是 0 或 1,表示二元分类。
在函数返回的表中,第一列显示类 ID 列。第二列显示该类 ID 的相应错误率。第三列表示该函数成功使用了多少行以及是否忽略了任何行。
=> SELECT ERROR_RATE(obs::int, pred::int USING PARAMETERS num_classes=2) OVER()
FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel', type='response') AS pred
FROM mtcars) AS prediction_output;
class | error_rate | comment
-------+--------------------+---------------------------------------------
0 | 0 |
1 | 0.0769230797886848 |
| 0.03125 | Of 32 rows, 32 were used and 0 were ignored
(3 rows)
4.4 - LIFT_TABLE
返回一个对比机器学习模型的可预测质量的表。此函数也被称为提升图。
语法
LIFT_TABLE ( targets, probabilities
[ USING PARAMETERS [num_bins = num‑bins] [, main_class = class‑name ] ] )
OVER()
参数
参数
num_bins
该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。
默认值:100
main_class
仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。
示例
对输入表 mtcars
执行 LIFT_TABLE
。
=> SELECT LIFT_TABLE(obs::int, prob::float USING PARAMETERS num_bins=2) OVER()
FROM (SELECT am AS obs, PREDICT_LOGISTIC_REG(mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel',
type='probability') AS prob
FROM mtcars) AS prediction_output;
decision_boundary | positive_prediction_ratio | lift | comment
-------------------+---------------------------+------------------+---------------------------------------------
1 | 0 | NaN |
0.5 | 0.40625 | 2.46153846153846 |
0 | 1 | 1 | Of 32 rows, 32 were used and 0 were ignored
(3 rows)
第一列 decision_boundary
指示将响应值分类为 0 还是 1 的分界点。例如,对于每行,如果 prob
大于或等于 decision_boundary
,将响应值分类为 1。如果 prob
小于 decision_boundary
,将响应值分类为 0。
第二列中,positive_prediction_ratio
表示分类 1 中使用相应 decision_boundary
值进行争取分类的样本比例。
第三列中,lift
函数用正确或错误分类为类 1 的行百分比来除 positive_prediction_ratio
。
4.5 - MSE
返回一个表,其中显示机器学习模型中预测和响应列的均方误差。
语法
MSE ( targets, predictions ) OVER()
参数
- targets
- FLOAT 类型的模型响应变量。
- predictions
- 包含响应变量预测值的 FLOAT 输入列。
示例
对输入表 faithful_testing
执行 MSE 函数。obs
列中显示响应变量,而 prediction
列中显示预测值。
=> SELECT MSE(obs, prediction) OVER()
FROM (SELECT eruptions AS obs,
PREDICT_LINEAR_REG (waiting USING PARAMETERS model_name='myLinearRegModel') AS prediction
FROM faithful_testing) AS prediction_output;
mse | Comments
-------------------+-----------------------------------------------
0.252925741352641 | Of 110 rows, 110 were used and 0 were ignored
(1 row)
4.6 - PRC
返回一个表,其中显示了接收器 Precision Recall (PR) 曲线上的点。
语法
PRC ( targets, probabilities
[ USING PARAMETERS
[num_bins = num‑bins]
[, f1_score = return‑score ]
[, main_class = class‑name ] )
OVER()
参数
参数
num_bins
该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。
默认值:100
f1_score
- 一个布尔值,指定是否返回包含 f1 分数的列 - 精度和召回度量的调和平均值,其中 F1 分数在 1 处达到其最佳值(完美的精度和召回率),在 0 处达到最差值。
默认值:false
main_class
仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。
示例
对名为 mtcars
的输入表执行 PRC 函数。obs
列中显示响应变量,而 pred
列中显示预测变量。
=> SELECT PRC(obs::int, prob::float USING PARAMETERS num_bins=2, f1_score=true) OVER()
FROM (SELECT am AS obs,
PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS model_name='myLogisticRegModel',
type='probability') AS prob
FROM mtcars) AS prediction_output;
decision_boundary | recall | precision | f1_score | comment
------------------+--------+-----------+-------------------+--------------------------------------------
0 | 1 | 0.40625 | 0.577777777777778 |
0.5 | 1 | 1 | 1 | Of 32 rows, 32 were used and 0 were ignored
(2 rows)
第一列 decision_boundary
指示将响应值分类为 0 还是 1 的分界点。例如,在每行中,如果概率等于或大于 decision_boundary
,则将响应分类为 1。如果概率小于 decision_boundary
,则将响应分类为 0。
4.7 - READ_TREE
读取随机森林或 XGBoost 模型中树的内容。
语法
READ_TREE ( USING PARAMETERS model_name = 'model‑name' [, tree_id = tree‑id] [, format = 'format'] )
参数
model_name
- 标识作为训练结果存储的模型,其中 model‑name 符合标识符中描述的约定。 同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
tree_id
- 树标识符,0 到 n-1 之间的整数,其中 n 为随机森林或 XGBoost 模型中的树数。如果忽略此参数,则返回所有树。
format
- 返回树的输出格式,为以下之一:
特权
非超级用户:模型上的 USAGE 权限
示例
从 READ_TREE 获取随机森林模型的表格格式输出:
=> SELECT READ_TREE ( USING PARAMETERS model_name='myRFModel', tree_id=1 ,
format= 'tabular') LIMIT 2;
-[ RECORD 1 ]-------------+-------------------
tree_id | 1
node_id | 1
node_depth | 0
is_leaf | f
is_categorical_split | f
split_predictor | petal_length
split_value | 1.921875
weighted_information_gain | 0.111242236024845
left_child_id | 2
right_child_id | 3
prediction |
probability/variance |
-[ RECORD 2 ]-------------+-------------------
tree_id | 1
node_id | 2
node_depth | 1
is_leaf | t
is_categorical_split |
split_predictor |
split_value |
weighted_information_gain |
left_child_id |
right_child_id |
prediction | setosa
probability/variance | 1
从 READ_TREE 获取 graphviz 格式的输出:
=> SELECT READ_TREE ( USING PARAMETERS model_name='myRFModel', tree_id=1 ,
format= 'graphviz')LIMIT 1;
-[ RECORD 1 ]+-------------------------------------------------------------------
---------------------------------------------------------------------------------
tree_id | 1
tree_digraph | digraph Tree{
1 [label="petal_length < 1.921875 ?", color="blue"];
1 -> 2 [label="yes", color="black"];
1 -> 3 [label="no", color="black"];
2 [label="prediction: setosa, probability: 1", color="red"];
3 [label="petal_length < 4.871875 ?", color="blue"];
3 -> 6 [label="yes", color="black"];
3 -> 7 [label="no", color="black"];
6 [label="prediction: versicolor, probability: 1", color="red"];
7 [label="prediction: virginica, probability: 1", color="red"];
}
此输入呈现如下:
另请参阅
4.8 - RF_PREDICTOR_IMPORTANCE
使用平均减少杂质 (MDI) 方法衡量随机森林模型中预测工具的重要性。重要性向量被规范化为总和为 1。
语法
RF_PREDICTOR_IMPORTANCE ( USING PARAMETERS model_name = 'model‑name' [, tree_id = tree‑id] )
参数
model_name
- 标识作为训练结果存储的模型,其中 model‑name 必须为
rf_classifier
或 rf_regressor
类型。
tree_id
- 标识要处理的树,0 到 n-1 之间的整数,其中 n 为森林中树的数量。如果忽略此参数,该函数将使用所有树来测量重要性值。
特权
非超级用户:模型上的 USAGE 权限
示例
此示例说明如何使用 RF_PREDICTOR_IMPORTANCE 函数。
=> SELECT RF_PREDICTOR_IMPORTANCE ( USING PARAMETERS model_name = 'myRFModel');
predictor_index | predictor_name | importance_value
-----------------+----------------+--------------------
0 | sepal.length | 0.106763318092655
1 | sepal.width | 0.0279536658041994
2 | petal.length | 0.499198722346586
3 | petal.width | 0.366084293756561
(4 rows)
另请参阅
4.9 - ROC
返回表,其中显示了操作特征曲线的接收器上的点。在提高模型的鉴别阈值时,ROC
函数会告知分类模型的精度。
语法
ROC ( targets, probabilities
[ USING PARAMETERS
[num_bins = num‑bins]
[, AUC = output]
[, main_class = class‑name ] ) ] )
OVER()
参数
参数
num_bins
该整数值用于确定决策边界的数量。决策边界以 0 和 1(包含)之间的等距间隔设置。该函数在每个 num‑bin + 1 点处计算一次表。
默认值:100
更大的值会产生更精确的 AUC 近似值。
AUC
- 一个布尔值,指定是否输出曲线下面积 (AUC) 值。
默认值: True
main_class
仅当 targets 是 CHAR/VARCHAR 类型时使用,请指定要与 probabilities 实参关联的类。
示例
对输入表 mtcars
执行 ROC
。观察到的类标签在 obs
列中,预测类标签在 prob
列中:
=> SELECT ROC(obs::int, prob::float USING PARAMETERS num_bins=5, AUC = True) OVER()
FROM (SELECT am AS obs,
PREDICT_LOGISTIC_REG (mpg, cyl, disp, drat, wt, qsec, vs, gear, carb
USING PARAMETERS
model_name='myLogisticRegModel', type='probability') AS prob
FROM mtcars) AS prediction_output;
decision_boundary | false_positive_rate | true_positive_rate | AUC |comment
-------------------+---------------------+--------------------+-----+-----------------------------------
0 | 1 | 1 | |
0.5 | 0 | 1 | |
1 | 0 | 0 | 1 | Of 32 rows,32 were used and 0 were ignoreded
(3 rows)
该函数会返回包含以下结果的表:
-
decision_boundary
指示是否将响应分类为 0 或 1 的分界点。在每行中,如果 prob
等于或大于 decision_boundary
,则将响应分类为 1。如果 prob
小于 decision_boundary
,将响应值分类为 0。
-
false_positive_rate
显示了相应 decision_boundary
中的误报(当 0 被分类为 1 时)百分比。
-
true_positive_rate
显示了分类为 1 并且还属于类 1 的行的百分比。
4.10 - RSQUARED
返回一个表,其中包含回归模型中预测的 R 平方值。
语法
RSQUARED ( targets, predictions ) OVER()
重要
OVER()
子句必须为空。
参数
- targets
- 模型的 FLOAT 响应变量。
- predictions
- 一个 FLOAT 输入列,其中包含响应变量的预测值。
示例
此示例演示了如何对名为 faithful_testing
的输入表执行 RSQUARED
函数。obs
列中显示响应变量的观测值,而 pred
列中显示响应变量的预测值。
=> SELECT RSQUARED(obs, prediction) OVER()
FROM (SELECT eruptions AS obs,
PREDICT_LINEAR_REG (waiting
USING PARAMETERS model_name='myLinearRegModel') AS prediction
FROM faithful_testing) AS prediction_output;
rsq | comment
-------------------+-----------------------------------------------
0.801392981147911 | Of 110 rows, 110 were used and 0 were ignored
(1 row)
5 - 模型管理
Vertica 提供了管理模型的多种函数。
5.1 - EXPORT_MODELS
导出机器学习模型。Vertica 支持三种模型格式:
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
EXPORT_MODELS ( 'output-dir', 'export-target' [ USING PARAMETERS category = 'model-category' ] )
参数
-
output-dir
- 用于存储导出模型的输出目录的绝对路径。
-
export-target
- 指定要导出的模型,如下所示:
[schema.]{ model‑name | * }
其中 schema 指定从指定的架构导出模型(可选)。如果忽略,EXPORT_MODELS 使用默认架构。提供 *
(星号)以从架构中导出所有模型。
参数
category
- 要导出的模型类别,为以下之一:
-
VERTICA_MODELS
-
PMML
-
TENSORFLOW
EXPORT_MODELS 根据导出操作的范围导出指定类别的模型,即应用于单个模型,还是应用于架构中的所有模型。请参阅下面的导出范围和类别处理。
下文导出的文件描述了 EXPORT_MODELS 为每个类别导出的文件。
如果忽略此参数,EXPORT_MODELS 将根据模型类型导出模型或指定架构中的模型。
特权
超级用户
导出范围和类别处理
EXPORT_MODELS 根据以下参数设置执行:
-
导出操作的范围:单个模型,或给定架构中的所有模型
-
指定或忽略的类别
下表显示了这两个参数如何控制导出过程:
导出的文件
EXPORT_MODELS 为每个模型类别导出以下文件:
类别和兼容模型
如果 EXPORT_MODELS 指定单个模型并且还设置了 category
参数,则如果模型类型和类别兼容,则函数成功;否则,它会返回错误:
如果 EXPORT_MODELS 指定从架构中导出所有模型并设置类别,它会针对与该类别不兼容的每个模型发出警告消息。该函数随后继续处理该架构中的剩余模型。
EXPORT_MODELS 在
output-dir/export_log.json
中记录所有错误和警告。
示例
导出模型而不更改其类别:
-
导出模型 myschema.mykmeansmodel
而不更改其类别:
=> SELECT EXPORT_MODELS ('/home/dbadmin', 'myschema.mykmeansmodel');
EXPORT_MODELS
----------------
Success
(1 row)
-
导出架构 myschema
中的所有模型而不更改其类别:
=> SELECT EXPORT_MODELS ('/home/dbadmin', 'myschema.*');
EXPORT_MODELS
----------------
Success
(1 row)
导出与指定类别兼容的模型:
注意
当您导入在不同版本的 Vertica 中训练的 VERTICA_MODELS 类别模型时,Vertica 会自动升级模型版本以匹配数据库的版本。如果失败,您必须运行 UPGRADE_MODEL。
如果两种方法都失败,则该模型不能用于数据库内评分,也不能导出为 PMML 模型。
-
类别设置为 PMML。PMML 和 VERTICA_MODELS 类型的模型与 PMML 类别兼容,因此如果 my_keans
属于任一类型,则导出操作成功:
=> SELECT EXPORT_MODELS ('/tmp/', 'my_kmeans' USING PARAMETERS category='PMML');
-
类别设置为 VERTICA_MODELS。只有 VERTICA_MODELS 类型的模型与 VERTICA_MODELS 类别兼容,因此只有当 my_keans
属于该类型时,导出操作才会成功:
=> SELECT EXPORT_MODELS ('/tmp/', 'public.my_kmeans' USING PARAMETERS category='VERTICA_MODELS');
-
类别设置为 TENSORFLOW。只有 TensorFlow 类型的模型与 TENSORFLOW 类别兼容,因此模型 tf_mnist_keras
必须为 TensorFlow 类型:
=> SELECT EXPORT_MODELS ('/tmp/', 'tf_mnist_keras', USING PARAMETERS category='TENSORFLOW');
export_models
---------------
Success
(1 row)
导出 TensorFlow 模型 tf_mnist_keras 后,列出导出的文件:
$ ls tf_mnist_keras/
crc.json metadata.json mnist_keras.pb model.json tf_model_desc.json
另请参阅
IMPORT_MODELS
5.2 - GET_MODEL_ATTRIBUTE
从模型中提取某个特定属性或从模型中提取所有属性。使用此函数可查看属性列表和行数,或查看有关单个属性的详细信息。GET_MODEL_ATTRIBUTE 的输出是一种表格格式,用户可以在其中选择特定的列或行。
语法
GET_MODEL_ATTRIBUTE ( USING PARAMETERS model_name = 'model‑name' [, attr_name = 'attribute' ] )
参数
model_name
模型的名称(不区分大小写)。
attr_name
- 要提取的模型属性的名称。如果忽略,该函数将显示所有可用属性。属性名称区分大小写。
特权
非超级用户:模型所有者或模型的使用权限
示例
此示例返回所有模型属性的摘要。
=> SELECT GET_MODEL_ATTRIBUTE ( USING PARAMETERS model_name='myLinearRegModel');
attr_name | attr_fields | #_of_rows
-------------------+---------------------------------------------------+-----------
details | predictor, coefficient, std_err, t_value, p_value | 2
regularization | type, lambda | 1
iteration_count | iteration_count | 1
rejected_row_count | rejected_row_count | 1
accepted_row_count | accepted_row_count | 1
call_string | call_string | 1
(6 rows)
此示例从 myLinearRegModel
模型中提取 details
属性。
=> SELECT GET_MODEL_ATTRIBUTE ( USING PARAMETERS model_name='myLinearRegModel', attr_name='details');
coeffNames | coeff | stdErr | zValue | pValue
-----------+--------------------+---------------------+-------------------+-----------------------
Intercept | -1.87401598641074 | 0.160143331525544 | -11.7021169008952 | 7.3592939615234e-26
waiting | 0.0756279479518627 | 0.00221854185633525 | 34.0890336307608 | 8.13028381124448e-100
(2 rows)
5.3 - GET_MODEL_SUMMARY
返回模型的摘要信息。
语法
GET_MODEL_SUMMARY ( USING PARAMETERS model_name = 'model‑name' )
参数
- model_name
模型的名称(不区分大小写)。
特权
非超级用户:模型所有者或模型的使用权限
示例
此示例说明如何查看线性回归模型的摘要。
=> SELECT GET_MODEL_SUMMARY( USING PARAMETERS model_name='myLinearRegModel');
--------------------------------------------------------------------------------
=======
details
=======
predictor|coefficient|std_err |t_value |p_value
---------+-----------+--------+--------+--------
Intercept| -2.06795 | 0.21063|-9.81782| 0.00000
waiting | 0.07876 | 0.00292|26.96925| 0.00000
==============
regularization
==============
type| lambda
----+--------
none| 1.00000
===========
call_string
===========
linear_reg('public.linear_reg_faithful', 'faithful_training', '"eruptions"', 'waiting'
USING PARAMETERS optimizer='bfgs', epsilon=1e-06, max_iterations=100,
regularization='none', lambda=1)
===============
Additional Info
===============
Name |Value
------------------+-----
iteration_count | 3
rejected_row_count| 0
accepted_row_count| 162
(1 row)
5.4 - IMPORT_MODELS
将以下模型导入 Vertica:通过 EXPORT_MODELS 导出的 Vertica 模型,或预测模型标记语言 (PMML) 或 TensorFlow 格式的模型。您可以使用此函数在 Vertica 群集之间移动模型,或导入在其他地方训练的 PMML 和 TensorFlow 模型。
GET_MODEL_SUMMARY 和 GET_MODEL_ATTRIBUTE 等其他 Vertica 模型管理操作支持导入的模型。
当心
更改导出的模型文件会导致导入功能在尝试重新导入时失败。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
IMPORT_MODELS ( 'source'
[ USING PARAMETERS [ new_schema = 'schema‑name' ] [, category = 'model-category' ] ] )
参数
- 源
- 导入模型的位置的绝对路径,为以下之一:
-
单个模型的目录:
path/model-directory
-
多个模型目录的父目录:
parent-dir-path/*
参数
new_schema
- 导入机器学习模型的现有架构。如果忽略,模型将被导入默认架构。
IMPORT_MODELS 从其 metadata.json
文件中提取导入模型的名称(如果存在)。否则,该函数使用模型目录的名称。
category
- 指定要导入的模型的类别,为以下之一:
-
VERTICA_MODELS
-
PMML
-
TENSORFLOW
如果模型目录没有 metadata.json
文件,则需要此参数。如果以下情况之一为 true,则 IMPORT_MODELS 返回错误:
注意
如果类别为 TENSORFLOW,则 IMPORT_MODELS 仅从模型目录中导入以下文件:
特权
超级用户
要求和限制
以下要求和限制适用:
-
如果您导出模型,然后再次导入,则导出和导入模型目录名称必须匹配。如果发生命名冲突,请使用 new_schema
参数将模型导入不同的架构,然后重命名该模型。
-
机器学习配置参数 MaxModelSizeKB 设置可以导入 Vertica 的模型的最大大小。
-
目前不支持某些 PMML 功能和属性。有关详细信息,请参阅PMML 特征和属性。
-
如果您导入带有 metadata.json
和 crc.json
文件的 PMML 模型,则 CRC 文件必须包含元数据文件的 CRC 值。否则,导入操作会返回错误。
示例
将模型导入指定的架构:
在这两个示例中,都没有指定模型类别,因此 IMPORT_MODEL 使用模型的 metadata.json
文件来确定其类别:
-
将单个模型 mykmeansmodel
导入到 newschema
架构中:
=> SELECT IMPORT_MODELS ('/home/dbadmin/myschema/mykmeansmodel' USING PARAMETERS new_schema='newschema')
IMPORT_MODELS
----------------
Success
(1 row)
-
将 myschema
目录中的所有模型导入到 newschema
架构中:
=> SELECT IMPORT_MODELS ('/home/dbadmin/myschema/*' USING PARAMETERS new_schema='newschema')
IMPORT_MODELS
----------------
Success
(1 row)
指定要导入的模型类别:
在前两个示例中,IMPORT_MODELS 只有在指定的模型和类别匹配时才返回成功;否则,它会返回错误:
-
导入 kmeans_pmml
作为 PMML 模型:
SELECT IMPORT_MODELS ('/root/user/kmeans_pmml' USING PARAMETERS category='PMML')
import_models
---------------
Success
(1 row)
-
导入 tf_mnist_estimator
作为 TensorFlow 模型:
=> SELECT IMPORT_MODELS ( '/path/tf_models/tf_mnist_estimator' USING PARAMETERS category='TENSORFLOW');
import_models
---------------
Success
(1 row)
-
从指定目录导入所有 TensorFlow 模型:
=> SELECT IMPORT_MODELS ( '/path/tf_models/*' USING PARAMETERS category='TENSORFLOW');
import_models
---------------
Success
(1 row)
另请参阅
EXPORT_MODELS
5.5 - UPGRADE_MODEL
升级之前的 Vertica 版本中的模型。如果您运行 IMPORT_MODELS 函数,Vertica 会在数据库升级期间自动运行此函数。备份或还原后手动调用该函数升级模型。
如果 UPGRADE_MODEL 未能升级模型并且模型属于 VERTICA_MODELS 类别,则它不能用于数据库内评分,也不能作为 PMML 模型导出。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变
语法
UPGRADE_MODEL ( [ USING PARAMETERS [model_name = 'model‑name'] ] )
参数
model_name
- 要升级的模型的名称。如果您忽略此参数,Vertica 会升级您拥有权限的所有模型。
特权
非超级用户:仅升级用户拥有的模型。
示例
升级模型 myLogisticRegModel
:
=> SELECT UPGRADE_MODEL( USING PARAMETERS model_name = 'myLogisticRegModel');
UPGRADE_MODEL
----------------------------
1 model(s) upgrade
(1 row)
升级用户拥有的所有模型:
=> SELECT UPGRADE_MODEL();
UPGRADE_MODEL
----------------------------
20 model(s) upgrade
(1 row)