Skip to main content

evalMLMethod

使用已拟合的回归模型进行预测时,可使用 evalMLMethod 函数。请参阅 linearRegression 中的链接。

stochasticLinearRegression

stochasticLinearRegression 聚合函数实现了基于线性模型和 MSE 损失函数的随机梯度下降方法。使用 evalMLMethod 对新数据进行预测。

stochasticLogisticRegression

stochasticLogisticRegression 聚合函数实现了用于二元分类问题的随机梯度下降方法。使用 evalMLMethod 对新数据进行预测。

naiveBayesClassifier

使用带有 n-gram 和拉普拉斯平滑的朴素贝叶斯模型对输入文本进行分类。该模型必须先在 ClickHouse 中配置后方可使用。 语法
参数
  • model_name — 预配置模型的名称。String 该模型必须在 ClickHouse 的配置文件中定义 (见下文) 。
  • input_text — 要分类的文本。String 输入会完全按原样处理 (保留大小写和标点) 。
返回值
  • 预测类别 ID,以无符号整数表示。UInt32 类别 ID 对应于模型构建时定义的类别。
示例 使用语言检测模型对文本进行分类:
结果 0 可能表示英语,而 1 可能表示法语——具体类别含义取决于你的训练数据。

实现细节

算法 使用朴素贝叶斯分类算法,并结合 拉普拉斯平滑 处理未见过的 n-gram;n-gram 概率的计算方法参考了这份资料 主要特性
  • 支持任意长度的 n-gram
  • 三种标记化模式:
    • byte:基于原始字节进行处理。每个字节都是一个标记。
    • codepoint:基于从 UTF‑8 解码得到的 Unicode 标量值进行处理。每个码点都是一个标记。
    • token:按连续的 Unicode 空白字符 (正则 \s+) 拆分。标记是非空白的子字符串;如果与标点符号相邻,标点符号也会被视为该标记的一部分 (例如,“you?” 是一个标记) 。

模型配置

你可以在这里找到用于创建语言检测朴素贝叶斯模型的示例源代码。 此外,这里还提供了示例模型及其对应的配置文件。 下面是 ClickHouse 中朴素贝叶斯模型的一个示例配置:
配置参数 模型训练指南 文件格式 在可读性较高的格式中,对于 n=1token 模式,模型可能如下所示:
n=3 且为 codepoint 模式时,可能如下所示:
ClickHouse 不会直接使用人类可读格式;必须先将其转换为下文所述的二进制格式。 二进制格式详情 每个存储的 n-gram 格式如下:
  1. 4 字节 class_id (UInt,小端序)
  2. 4 字节 n-gram 字节长度 (UInt,小端序)
  3. 原始 n-gram 字节
  4. 4 字节 count (UInt,小端序)
预处理要求 在根据文档语料库创建模型之前,必须先按照指定的 moden 对文档进行预处理,以提取 n-gram。以下步骤概述了预处理过程:
  1. 根据标记化模式,在每个文档的开头和结尾添加边界标记:
    • Byte0x01 (起始) ,0xFF (结束)
    • CodepointU+10FFFE (起始) ,U+10FFFF (结束)
    • Token<s> (起始) ,</s> (结束)
    注意: 文档开头和结尾各添加 (n - 1) 个标记。
  2. token 模式下 n=3 的示例:
    • 文档: "ClickHouse is fast"
    • 处理结果: <s> <s> ClickHouse is fast </s> </s>
    • 生成的三元组:
      • <s> <s> ClickHouse
      • <s> ClickHouse is
      • ClickHouse is fast
      • is fast </s>
      • fast </s> </s>
为简化 bytecodepoint 模式下的模型创建,可先将文档标记化为标记 (byte 模式下为 byte 列表,codepoint 模式下为 codepoint 列表) 。然后,在文档开头添加 n - 1 个起始标记,在文档末尾添加 n - 1 个结束标记。最后,生成 n-grams 并将其写入序列化文件。

evalMLMethod

首次引入于:v20.1.0 将训练好的机器学习模型应用于输入特征,生成预测结果。 语法
参数 返回值 返回基于训练后模型的预测值。Float64 示例 使用示例
Query
Response

naiveBayesClassifier

引入版本:v25.11.0 使用 NAIVE_BAYES 字典对输入文本进行分类。返回与 dictGet(dictionary_name, class_attribute, input_text) 相同的预测类别值,其中 class_attribute 是在字典 layout 中配置的类别标签属性名称。与 dictGet 不同,返回结果的类型始终为 UInt32,而不是类别属性的声明类型;并且 input_text 必须是 String (不进行键类型转换) 。
此函数是非确定性的:对于相同的参数,可能返回不同的结果。
语法
参数
  • dictionary_name — 使用 NAIVE_BAYES 布局的字典名称。String
  • input_text — 待分类的文本。String
返回值 预测的类别 ID。UInt32 示例 文本分类
Query
Response

naiveBayesClassifierWithAllProbs

Introduced in:v26.7.0 使用 NAIVE_BAYES 字典对输入文本进行分类,并返回所有类别及其对应的概率,按概率从高到低排列。
此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
Syntax
参数
  • dictionary_name — 采用 NAIVE_BAYES 布局的字典名称。String
  • input_text — 待分类的文本。String
返回值 由 (class_id, probability) Tuple 组成的数组,按概率从高到低排序。Array(Tuple(UInt32, Float64)) 示例 所有类别的概率
Query
Response

naiveBayesClassifierWithProb

Introduced in:v26.7.0 使用 NAIVE_BAYES 字典对输入文本进行分类,并返回预测类别及其概率。
此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
Syntax
参数
  • dictionary_name — 使用 NAIVE_BAYES 布局的字典名称。 String
  • input_text — 待分类的文本。 String
返回值 (class_id, probability) 组成的 Tuple。 Tuple(UInt32, Float64) 示例 输出分类及其概率
Query
Response
最后修改于 2026年7月23日