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
- 指定如何确定两个类的权重,选择以下方式之一:
-
None
(默认值):不使用权重 -
value0、value1:两个逗号分隔的字符串,指定两个正 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)