训练和评估模型
KaiwuDB 预测分析引擎支持用户使用训练流水线训练导入的模型,也支持用户使用训练流水线训练、生成新的模型。
训练模型
前提条件
- 已经将训练流水线导入到数据库中。
- 非三权分立模式下,用户为 Admin 用户、训练流水线的创建者、或者是拥有训练流水线的 TRAIN 权限。
- 三权分立模式下,用户是
sysadmin
角色的成员、训练流水线的创建者、或者是拥有训练流水线 TRAIN 权限的普通用户。默认情况下,sysroot
用户属于sysadmin
角色。 - 如果引用的数据源为表或视图,用户拥有目标表或视图的 SELECT 权限。
- 如果引用的数据源为 SQL 查询语句,用户拥有目标对象的 QUERY 权限和 SELECT 权限。
语法格式
SELECT kwdbml.train_model(<pipeline_name>,<model_name>, <train_data>,<new_version_if_exists>,
<immediately_deploy>);
参数说明
参数 | 类型 | 描述 |
---|---|---|
pipeline_name | STRING | 导入的训练流水线的名称。支持两级结构名称:模式名.对象名。如未指定前缀模式名,默认使用当前模式。 |
model_name | STRING | 导入的模型的名称或者用户自定义的新的模型名称。支持两级结构名称:模式名.对象名。如未指定前缀模式名,默认使用当前模式。 |
train_data | STRING | 训练数据集,KaiwuDB 支持以下两种数据集形式: - Table/View:指定表名或者视图名。KaiwuDB 支持三级结构名称: 数据库名.模式名.对象名 。如果只有单个前缀,首先尝试在当前数据库中查找具有前缀名称的模式。如果失败,在具有前缀名称的数据库里查找 public 模式中的对象名。如果没有前缀,使用当前数据库的搜索路径。- Query:通过 SQL 查询语句指定数据范围。 |
new_version_if_exists | Boolean | 当且仅当模型已经存在数据库中并且生效。 - true :当模型已经存在数据库中并且当前模型与训练得到的新模型的输入输出保持一致时,训练得到的新模型将成为当前模型的新版本。- false :若数据库中存在相同名称的模型,系统返回模型名称重复的错误。 |
immediately_deploy | Boolean | 如果当前模型没有任何版本,此参数无效。训练得到的新模型自动成为活跃版本。 - true :当训练得到的新模型成为当前模型的新版本时,该新版本立即成为模型的活跃版本。- false :当训练得到的新模型成为当前模型的新版本时,不改变模型的当前活跃版本。 |
返回字段说明
参数 | 类型 | 描述 |
---|---|---|
kwdbml.train_model | STRING | 训练任务的任务标识。 |
语法示例
SELECT kwdbml.train_model('DEMP.PowerGen', 'Tom.PowerGen', 'defaultdb.public.power_hist', true, true);
执行成功后,控制台输出以下信息:
kwdbml.train_model
+--------------------------+
1dc46a55-36b7-4da5-aff1-1bf6b4c9bf3b
(1 row)
评估模型
KaiwuDB 支持对已上传或者已训练的模型进行评估。
前提条件
- 已经将模型导入到数据库中。
- 非三权分立模式下,用户为 Admin 用户、模型的创建者、或者是拥有模型的 EVALUATE 权限。
- 三权分立模式下,用户是
sysadmin
角色的成员、模型的创建者、或者是拥有模型 EVALUATE 权限的普通用户。默认情况下,sysroot
用户属于sysadmin
角色。 - 如果引用的数据源为表或视图,用户拥有目标表或视图的 SELECT 权限。
- 如果引用的数据源为 SQL 查询语句,用户拥有目标对象的 QUERY 权限和 SELECT 权限。
语法格式
SELECT kwdbml.evaluate_model(<pipeline_name>, <model_name>, <model_version>, <evaluate_data>, <objectives>)
参数说明
参数 | 类型 | 描述 |
---|---|---|
pipeline_name | STRING | 训练流水线的名称。支持两级结构名称:模式名.对象名。如未指定前缀模式名,默认使用当前模式。 |
model_name | STRING | 模型的名称。支持两级结构名称:模式名.对象名。如未指定前缀模式名,默认使用当前模式。 |
model_version | INT | 模型版本。 |
evaluate_data | STRING | 评估数据集,KaiwuDB 支持以下两种数据集形式: - Table/View:指定表名或者视图名。KaiwuDB 支持三级结构名称: 数据库名.模式名.对象名 。如果只有单个前缀,首先尝试在当前数据库中查找具有前缀名称的模式。如果失败,在具有前缀名称的数据库里查找 public 模式中的对象名。如果没有前缀,使用当前数据库的搜索路径。- Query:通过 SQL 查询语句指定数据范围。 |
objectives | STRING | 性能评估指标。当前支持的评估指标包括: 回归问题 - mse - rmse - mae 二分类问题 - precision - recall - f1 - auc 多分类问题 - precision - recall - f1 若有多组指标,多组指标之间使用管道符号(|)连接成字符串。每组指标可以包含多个指标,指标之间用逗号( , )连接成字符串。 |
返回字段说明
参数 | 类型 | 描述 |
---|---|---|
kwdbml.evaluate_model | STRING | 评估任务的任务标识。 |
语法示例
SELECT kwdbml.evaluate_model('DEMP.PowerGen','Tom.PowerGen', 2, 'defaultdb.public.power_aug', 'f1');
执行成功后,控制台输出以下信息:
kwdbml.evaluate_model
+--------------------------+
1dc46a55-36b7-4da5-aff1-1bf6b4c9bf3b
(1 row)