evalMLMethod
Для получения прогноза с помощью обученных регрессионных моделей используется функцияevalMLMethod. См. ссылку в linearRegression.
stochasticLinearRegression
Агрегатная функция stochasticLinearRegression реализует метод стохастического градиентного спуска с использованием линейной модели и функции потерь MSE. Для предсказания на новых данных используетсяevalMLMethod.
stochasticLogisticRegression
Агрегатная функция stochasticLogisticRegression реализует метод стохастического градиентного спуска для решения задачи бинарной классификации. Для прогнозирования на новых данных используетсяevalMLMethod.
naiveBayesClassifier
Классифицирует входной текст с помощью модели Naive Bayes, использующей n-граммы и сглаживание Лапласа. Перед использованием модель необходимо настроить в ClickHouse. Синтаксисmodel_name— Имя предварительно настроенной модели. String Модель должна быть определена в файлах конфигурации ClickHouse (см. ниже).input_text— Текст для классификации. String Текст обрабатывается в точности в том виде, в котором он передан (с сохранением регистра и пунктуации).
- Идентификатор предсказанного класса в виде беззнакового целого числа. UInt32 Идентификаторы классов соответствуют категориям, заданным при построении модели.
0 может соответствовать английскому, а 1 — французскому; значения классов зависят от ваших обучающих данных.
Подробности реализации
Алгоритм Использует алгоритм классификации Naive Bayes со сглаживанием Лапласа для обработки ранее не встречавшихся n-грамм, опираясь на вероятности n-грамм, как описано здесь. Ключевые возможности- Поддерживает n-граммы любого размера
- Три режима токенизации:
byte: Работает с сырыми байтами. Каждый байт — один токен.codepoint: Работает со скалярными значениями Unicode, декодированными из UTF‑8. Каждая кодовая точка — один токен.token: Разбивает по последовательностям пробельных символов Unicode (регулярное выражение\s+). Токены — это подстроки без пробельных символов; знаки пунктуации входят в токен, если примыкают к нему (например, “you?” — это один токен).
Конфигурация модели
Пример исходного кода для создания модели Naive Bayes для определения языка можно найти здесь. Кроме того, здесь доступны примеры моделей и связанные с ними файлы конфигурации. Ниже приведен пример конфигурации модели Naive Bayes в ClickHouse:
Руководство по обучению модели
Формат файла
В человекочитаемом формате для
n=1 и режима token модель может выглядеть так:
n=3 в режиме codepoint это может выглядеть так:
- 4-байтовый
class_id(UInt, little-endian) - 4-байтовая длина
n-gramв байтах (UInt, little-endian) - Необработанные байты
n-gram - 4-байтовый
count(UInt, little-endian)
mode и n. Ниже описаны шаги предварительной обработки:
-
Добавьте маркеры границ в начало и конец каждого документа в зависимости от режима токенизации:
- Byte:
0x01(начало),0xFF(конец) - Codepoint:
U+10FFFE(начало),U+10FFFF(конец) - Token:
<s>(начало),</s>(конец)
(n - 1)токенов добавляются и в начало, и в конец документа. - Byte:
-
Пример для
n=3в режимеtoken:- Документ:
"ClickHouse is fast" - После обработки:
<s> <s> ClickHouse is fast </s> </s> - Сгенерированные триграммы:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- Документ:
byte и codepoint, бывает удобно сначала разбить документ на токены (список byte для режима byte и список codepoint для режима codepoint). Затем добавьте n - 1 начальных токенов в начало документа и n - 1 конечных токенов — в его конец. Наконец, сгенерируйте n-граммы и запишите их в сериализованный файл.
assignCentroid
Добавлено в: v26.8.0 Возвращает идентификатор ближайшего к вектору центроида (L2). Центроиды задаются в виде константного массива массивов чисел с плавающей точкой, где идентификатор — это индекс в этом массиве, начиная с 0, либо в виде именисловаря, содержащего атрибуты cid и vec, где идентификатором является cid.
Эта функция недетерминированная: она может возвращать разные результаты для одних и тех же аргументов.
vec— Назначаемый вектор. Его размерность должна совпадать с размерностью центроидов. Значения с разрядностью, отличной отFloat32, преобразуются вFloat32, поскольку именно этот тип использует ядро вычисления оценок.Array(Float32)илиArray(Float64)илиArray(BFloat16)centroids— Центроиды, для которых вычисляется оценка; должны быть константными. Задаются либо как массив непустых массивов чисел с плавающей точкой одинакового размера, где id — индекс в этом массиве, начиная с 0, либо как имясловаряс атрибутомcidбеззнакового целочисленного типа, помещающегося вUInt32, и атрибутомvecтипаArray(Float32), где id — значениеcid. Словарь считывается один раз и кэшируется до перезагрузки.Array(Array(Float32))илиArray(Array(Float64))илиArray(Array(BFloat16))илиString
UInt32
Примеры
Встроенные центроиды
Query
Response
evalMLMethod
Добавленный в: v20.1.0 Применяет обученную модель машинного обучения к входным признакам, чтобы получить прогнозы. Синтаксисmodel— Обученная модель машинного обучения.AggregateFunctionStatex1, x2, ...— Значения признаков для прогнозирования.Float*или(U)Int*
Float64
Примеры
Пример использования
Query
Response
naiveBayesClassifier
Добавленный в: v25.11.0 Классифицирует входной текст с помощью словаряNAIVE_BAYES. Возвращает то же предсказанное значение класса, что и dictGet(dictionary_name, class_attribute, input_text), где class_attribute — имя атрибута метки класса, заданного в структуре словаря. В отличие от dictGet, тип результата всегда UInt32, а не объявленный тип атрибута класса, и input_text должен иметь тип String (преобразование типа ключа не выполняется).
Эта функция является недетерминированной: она может возвращать разные результаты для одних и тех же аргументов.
dictionary_name— Имя словаря со структурой NAIVE_BAYES.Stringinput_text— Текст для классификации.String
UInt32
Примеры
Классификация текста
Query
Response
naiveBayesClassifierWithAllProbs
Добавленный в: v26.7.0 Классифицирует входной текст с помощью словаряNAIVE_BAYES и возвращает все классы с их вероятностями, в порядке от наиболее вероятных к наименее вероятным.
Эта функция недетерминированна: она может возвращать разные результаты для одних и тех же аргументов.
dictionary_name— Название словаря со структурой NAIVE_BAYES.Stringinput_text— Текст для классификации.String
Array(Tuple(UInt32, Float64))
Примеры
Вероятности для всех классов
Query
Response
naiveBayesClassifierWithProb
Добавленный в: v26.7.0 Классифицирует входной текст с помощью словаряNAIVE_BAYES и возвращает предсказанный класс и вероятность.
Эта функция недетерминированная: она может возвращать разные результаты для одних и тех же аргументов.
dictionary_name— Имя словаря со структурой NAIVE_BAYES.Stringinput_text— Текст для классификации.String
(class_id, probability). Tuple(UInt32, Float64)
Примеры
Классификация с вероятностью
Query
Response