The following content of this documentation page has been machine-translated. But unlike other websites, it is not done on the fly. This translated text lives on GitHub repository alongside main ClickHouse codebase and waits for fellow native speakers to make it more human-readable.
Help ClickHouse documentation by editing this page
在ClickHouse中应用Catboost模型
CatBoost 是一个自由和开源的梯度提升库开发 用于机器学习。
通过此指令,您将学习如何通过从SQL运行模型推理在ClickHouse中应用预先训练好的模型。
在ClickHouse中应用CatBoost模型:
- 创建表.
- .
- 将CatBoost集成到ClickHouse中 (可选步骤)。
- .
有关训练CatBoost模型的详细信息,请参阅 培训和应用模型.
如果你没有 然而,安装它。
注
Docker 是一个软件平台,允许您创建容器,将CatBoost和ClickHouse安装与系统的其余部分隔离。
在应用CatBoost模型之前:
1. 拉 从注册表:
此Docker映像包含运行CatBoost和ClickHouse所需的所有内容:代码、运行时、库、环境变量和配置文件。
2. 确保已成功拉取Docker映像:
REPOSITORY TAG IMAGE ID CREATED SIZE
yandex/tutorial-catboost-clickhouse latest 622e4d17945b 22 hours ago 1.37GB
3. 基于此映像启动一个Docker容器:
$ docker run -it -p 8888:8888 yandex/tutorial-catboost-clickhouse
1. 在交互模式下启动ClickHouse控制台客户端:
$ clickhouse client
注
ClickHouse服务器已经在Docker容器内运行。
2. 使用以下命令创建表:
3. 从ClickHouse控制台客户端退出:
:) exit
插入数据:
1. 运行以下命令:
$ clickhouse client --host 127.0.0.1 --query 'INSERT INTO amazon_train FORMAT CSVWithNames' < ~/amazon/train.csv
2. 在交互模式下启动ClickHouse控制台客户端:
$ clickhouse client
3. 确保数据已上传:
注
可选步骤。 Docker映像包含运行CatBoost和ClickHouse所需的所有内容。
CatBoost集成到ClickHouse步骤:
1. 构建评估库。
评估CatBoost模型的最快方法是编译 libcatboostmodel.<so|dll|dylib>
图书馆. 有关如何构建库的详细信息,请参阅 CatBoost文件.
3. 例如,在任何地方和任何名称为config model创建一个新目录, models
.
4. 创建具有任意名称的模型配置文件,例如, models/amazon_model.xml
.
5. 描述模型配置:
<models>
<model>
<!-- Model type. Now catboost only. -->
<!-- Model name. -->
<name>amazon</name>
<!-- Path to trained model. -->
<!-- Update interval. -->
<lifetime>0</lifetime>
</model>
</models>
6. 将CatBoost的路径和模型配置添加到ClickHouse配置:
<!-- File etc/clickhouse-server/config.d/models_config.xml. -->
<catboost_dynamic_library_path>/home/catboost/data/libcatboostmodel.so</catboost_dynamic_library_path>
<models_config>/home/catboost/models/*_model.xml</models_config>
对于测试模型,运行ClickHouse客户端 $ clickhouse client
.
让我们确保模型正常工作:
:) SELECT
modelEvaluate('amazon',
RESOURCE,
MGR_ID,
ROLE_ROLLUP_1,
ROLE_ROLLUP_2,
ROLE_DEPTNAME,
ROLE_TITLE,
ROLE_FAMILY_DESC,
ROLE_CODE) > 0 AS prediction,
FROM amazon_train
LIMIT 10
注
功能 返回带有多类模型的每类原始预测的元组。
让我们预测一下:
注
更多信息 exp() 功能。
让我们计算样本的LogLoss:
:) SELECT -avg(tg * log(prob) + (1 - tg) * log(1 - prob)) AS logloss
FROM
(
SELECT
modelEvaluate('amazon',
RESOURCE,
MGR_ID,
ROLE_ROLLUP_1,
ROLE_ROLLUP_2,
ROLE_DEPTNAME,
ROLE_TITLE,
ROLE_FAMILY_DESC,
ROLE_FAMILY,
ROLE_CODE) AS prediction,
1. / (1. + exp(-prediction)) AS prob,
ACTION AS tg
注
更多信息 和 日志() 功能。