这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

机器学习算法

Vertica 支持各种机器学习函数,这些函数使用一组数据训练模型,并返回可进行保存以用于稍后执行的模型。

这些函数要求非超级用户具有以下权限:

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

  • 对输入关系的 SELECT 权限

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
用于处理缺失值的方法,为以下之一:
  • drop:忽略缺失值。

  • error:缺失值会引发错误。

  • zero:将缺失值替换为 0。

  • linear_interpolation:将缺失值替换为基于缺失值前后最近的有效条目的线性插值。这意味着如果数据集中第一个或最后一个值缺失,会将其直接删除。

默认值: linear_interpolation

regularization
拟合数据时使用的正则化方法,为以下之一:
  • L2:权重正则化项,即惩罚权重的平方值

默认值:

lambda
[0, 100000] 范围内的 FLOAT,正则化值 lambda。

默认值: 1.0

compute_mse
BOOLEAN,是否计算并输出均方误差 (MSE)。

默认值: False

示例

请参阅自回归模型示例

另请参阅

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
用于选择要进行二等分/拆分的群集的方法,为以下之一:
  • size:选择最大群集进行二等分。

  • sum_squares:选择群集内平方和最大的群集进行二等分。

默认值: 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 均值方法,为以下之一:
  • kmeanspp (默认):kmeans++ 算法

  • pseudo:使用 Spark 所用的“伪中心”方法,将给定中心二等分,但不迭代点

distance_method
两个数据点之间的距离测量。目前仅支持欧氏距离。

默认值: euclidean

output_view
保存分配到群集的每个点的视图名称。您必须对视图架构具有 CREATE 权限。
key_columns
用于标识输出行的列名称的逗号分隔列表。列必须位于 input-columns 实参列表中。要防止算法使用这些和其他输入列,请将其列在参数 exclude_columns 中。

模型属性

centers
K 个质心的中心列表。
hierarchy
K 个群集的层次结构,包括:
  • ParentCluster:每个质心的父群集质心 — 即基于其通过二等分得到一个群集的群集质心。

  • LeftChildCluster:每个质心的左子群集质心 — 即将一个群集二等分后得到的第一个子群集的质心。

  • RightChildCluster:每个质心的右子群集质心 — 即将一个群集二等分得到的第二个子群集的质心。

  • BisectionLevel:指定通过其得到一个群集的二等分步骤。

  • WithinSS:当前群集的群集内平方和

  • TotalWithinSS:迄今为止获得的叶群集的群集内总平方和。

metrics
与群集质量相关的几个指标,包括
  • 总平方和

  • 群集内总平方和

  • 群集间总平方和

  • 群集间平方和/总平方和

  • 群集 x、center_id y[...] 的平方和

示例

SELECT BISECTING_KMEANS('myModel', 'iris1', '*', '5'
       USING PARAMETERS exclude_columns = 'Species,id', split_method ='sum_squares', output_view = 'myBKmeansView');

另请参阅

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

参数

exclude_columns

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

max_iterations
算法执行的最大迭代数。如果该值小于收敛所需要的迭代数,则算法无法进行收敛。

默认值: 10

epsilon
确定算法是否收敛。自上一次迭代后,如果中心移动的距离小于
'epsilon',则认为该算法已收敛。

默认值: 1e-4

init_method
用于找到初始群集中心的方法,为以下之一:
  • random

  • kmeanspp (默认):kmeans++ 算法

    如果 k 值过高,可能会占用大量内存。如果函数返回错误,提示可用内存不足,请减小 k 值或使用 random 方法。

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 并将其应用于输入表 iris1APPLY_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)

另请参阅

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;否则模型无效。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
optimizer
用于训练模型的优化器方法,为以下之一:
  • 牛顿
  • BFGS
  • CGD

默认值: 如果 regularization-method 设置为 L1ENet,则为 CGD,否则将为 Newton

regularization
正则化方法,为以下之一:
  • None (默认值)

  • L1

  • L2

  • ENet

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)

另请参阅

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;否则模型无效。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
optimizer
用于训练模型的优化器方法,为以下之一:
  • Newton
  • BFGS
  • CGD

默认值: 如果 regularization-method 设置为 L1ENet,则为 CGD,否则将为 Newton

regularization
正则化方法,为以下之一:
  • None (默认值)

  • L1

  • L2

  • ENet

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)

另请参阅

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
用于处理缺失值的方法,为以下之一:
  • drop:忽略缺失值。

  • error:缺失值会引发错误。

  • zero:将缺失值替换为 0。

  • linear_interpolation:将缺失值替换为基于缺失值前后最近的有效条目的线性插值。这意味着如果数据集中第一个或最后一个值缺失,会将其直接删除。

默认值: linear_interpolation

regularization
拟合数据时使用的正则化方法,为以下之一:
  • L2:权重正则化项,即惩罚权重的平方值

默认值:

lambda
[0, 100000] 范围内的 FLOAT,正则化值 lambda。

默认值: 1.0

compute_mse
BOOLEAN,是否计算并输出均方误差 (MSE)。

此参数仅接受“true”或“false”,不接受 BOOLEAN 的标准字面量等效项,如 1 或 0。

默认值: False

示例

请参阅移动平均模型示例

另请参阅

7 - NAIVE_BAYES

对输入关系执行朴素贝叶斯算法,并返回朴素贝叶斯模型。

根据数据类型处理列:

  • FLOAT:假定值遵循某种高斯分布。

  • INTEGER:假定值属于一个多项分布。

  • CHAR/VARCHAR:假定值遵循某种分类分布。这些列中存储的字符串值不得超过 128 个字符。

  • BOOLEAN:值被视为具有两个值的分类值。

这是元函数。您必须在顶级 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;否则模型无效。

predictor‑columns

输入关系中表示模型自变量的列的逗号分隔列表,或者使用星号 (*) 以选择所有列。如果选择所有列,则参数 exclude_columns 的实参列表必须包含 response‑column,以及任何无效的列作为预测工具列。

所有预测变量列的类型必须为数字、CHAR/VARCHAR 或 BOOLEAN;否则模型无效。BOOLEAN 列值在训练前转换为 FLOAT 值:0 表示 false,1 表示 true。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
alpha
浮点数,如果事件模型为分类式、多项式或伯努利式,则指定使用拉普拉斯平滑。

默认值: 1.0

模型属性

colsInfo
训练中使用的响应和预测变量列的信息:
  • index:训练中提供的列的索引(从 0 开始)。索引 0 用于响应列。

  • name:列的名称。

  • type:用于响应的标签,其值为 Gaussian、Multinominal、Categorical 或 Bernoulli。

alpha
平滑参数值。
prior
每个类在所有训练样本中的百分比:
  • label:类标签。

  • value:每个类的百分比。

nRowsTotal
数据集中接受用于训练的样本数。
nRowsRejected
拒绝用于训练的样本数。
callStr
用于复制训练的 SQL 语句。
Gaussian
高斯模型取决于由 class_name 指示的类:
  • index:预测变量列的索引。

  • mu:模型的平均值。

  • sigmaSq:模型的标准差平方。

Multinominal
多项式模型取决于由 class_name 指示的类:
  • index:预测变量列的索引。

  • prob:概率取决于由 class_name 指示的类。

Bernoulli
伯努利模型取决于由 class_name 指示的类:
  • index:预测变量列的索引。

  • probTrue:此预测变量列中值为 TRUE 的概率。

Categorical
高斯模型取决于由 class_name 指示的类:
  • category:预测变量名称中的值。

  • <class_name>:具有该值的概率取决于由 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)

另请参阅

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 类型的输入列,表示因变量。
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)

另请参阅

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)

另请参阅

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;否则模型无效。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
C
错误分类成本的权重。该算法最大限度降低了正则化成本和误分类成本。

默认值: 1.0

epsilon
用于控制精度。

默认值: 1e-3

max_iterations
算法执行的最大迭代数。

默认值: 100

class_weights
指定如何确定两个类的权重,选择以下方式之一:
  • None (默认值):不使用权重

  • value0value1:两个逗号分隔的字符串,指定两个正 FLOAT 值,其中 value0 将权重分配给类 0,value1 将权重分配给类 1。

  • auto:根据样本数量对每个类别进行加权。

intercept_mode
指定如何处理截距,选择以下方式之一:
  • regularized (默认值):适合截距并对其应用正则化。

  • unregularized:适合截距,但不包括在正则化中。

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)

另请参阅

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;否则模型无效。

参数

exclude_columns
要从处理中排除来自 predictor‑columns 列的逗号分隔列表。
error_tolerance
定义可接受的误差范围。此区域之外的任何数据点都会为成本函数增加罚分。

默认值: 0.1

C
错误分类成本的权重。该算法最大限度降低了正则化成本和误分类成本。

默认值: 1.0

epsilon
用于控制精度。

默认值: 1e-3

max_iterations
算法执行的最大迭代数。

默认值: 100

intercept_mode
指定如何处理截距的字符串,为以下之一
  • regularized (默认值):适合截距并对其应用正则化。

  • unregularized:适合截距,但不包括在正则化中。

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)

另请参阅

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.5col_sample_by_node=0.5col_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.5col_sample_by_node=0.5col_sample_by_tree 将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node 然后对剩余池的一半进行采样,因此每个节点采样 6 列。

此算法始终对至少一列进行采样。

默认值: 1

示例

请参阅XGBoost 用于分类

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.5col_sample_by_node=0.5col_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.5col_sample_by_node=0.5col_sample_by_tree 将采样 12 列。这样将可用的未采样列池减少到 12。 col_sample_by_node 然后对剩余池的一半进行采样,因此每个节点采样 6 列。

此算法始终对至少一列进行采样。

默认值: 1

示例

请参阅用于回归的 XGBoost