evalMLMethod
A previsão com modelos de regressão ajustados usa a funçãoevalMLMethod. Veja o link em linearRegression.
stochasticLinearRegression
A função de agregação stochasticLinearRegression implementa o método de descida estocástica do gradiente usando um modelo linear e a função de perda MSE. UsaevalMLMethod para fazer previsões em novos dados.
stochasticLogisticRegression
A função de agregação stochasticLogisticRegression implementa o método de descida de gradiente estocástico para o problema de classificação binária. UsaevalMLMethod para fazer previsões com novos dados.
naiveBayesClassifier
Classifica o texto de entrada usando um modelo Naive Bayes com n-gramas e Laplace smoothing. O modelo deve ser configurado no ClickHouse antes de ser usado. Sintaxemodel_name— Nome do modelo pré-configurado. String O modelo deve estar definido nos arquivos de configuração do ClickHouse (veja abaixo).input_text— Texto a ser classificado. String A entrada é processada exatamente como foi fornecida (com maiúsculas/minúsculas e pontuação preservadas).
- ID da classe prevista como um inteiro sem sinal. UInt32 Os IDs de classe correspondem às categorias definidas durante a criação do modelo.
0 pode representar inglês, enquanto 1 pode indicar francês — o significado das classes depende dos seus dados de treinamento.
Detalhes de implementação
Algoritmo Utiliza o algoritmo de classificação Naive Bayes com suavização de Laplace para lidar com n-gramas não observados, com base nas probabilidades de n-gramas descritas neste documento. Principais recursos- Suporta n-gramas de qualquer tamanho
- Três modos de tokenização:
byte: Opera sobre bytes brutos. Cada byte é um token.codepoint: Opera sobre valores escalares Unicode decodificados de UTF‑8. Cada ponto de código é um token.token: Separa por sequências de espaços em branco Unicode (regex \s+). Os tokens são substrings sem espaços em branco; a pontuação faz parte do token se estiver adjacente (por exemplo, “you?” é um único token).
Configuração do modelo
Você pode encontrar aqui um exemplo de código-fonte para criar um modelo Naive Bayes para detecção de idioma. Além disso, aqui estão disponíveis modelos de exemplo e seus respectivos arquivos de configuração. Veja abaixo um exemplo de configuração para um modelo Naive Bayes no ClickHouse:
Guia de Treinamento do Modelo
Formato do Arquivo
Em formato legível por humanos, para
n=1 e o modo token, o modelo pode se parecer com isto:
n=3 e o modo codepoint, pode ser assim:
class_idde 4 bytes (UInt, little-endian)- comprimento, em bytes, do
n-gramde 4 bytes (UInt, little-endian) - bytes brutos do
n-gram countde 4 bytes (UInt, little-endian)
mode e n. As etapas a seguir descrevem esse pré-processamento:
-
Adicione marcadores de delimitação no início e no fim de cada documento com base no modo de tokenização:
- Byte:
0x01(início),0xFF(fim) - Codepoint:
U+10FFFE(início),U+10FFFF(fim) - Token:
<s>(início),</s>(fim)
(n - 1)tokens são adicionados tanto no início quanto no fim do documento. - Byte:
-
Exemplo para
n=3no modotoken:- Documento:
"ClickHouse is fast" - Processado como:
<s> <s> ClickHouse is fast </s> </s> - Trigramas gerados:
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- Documento:
byte e codepoint, pode ser conveniente primeiro tokenizar o documento em tokens (uma lista de bytes para o modo byte e uma lista de codepoints para o modo codepoint). Em seguida, acrescente n - 1 tokens de início no início e n - 1 tokens de fim no final do documento. Por fim, gere os n-gramas e grave-os no arquivo serializado.
assignCentroid
Introduzido em: v26.8.0 Retorna o id do centróide mais próximo (L2) de um vetor. Os centróides são fornecidos como uma matriz constante de matrizes de números de ponto flutuante, em que o id é a posição, começando em 0, nessa matriz, ou como o nome de umDicionário que contém os atributos cid e vec, em que o id é cid.
Esta função não é determinística: pode retornar resultados diferentes para os mesmos argumentos.
vec— Vetor a ser atribuído. Sua dimensão deve corresponder à dimensão dos centroides. Tipos diferentes deFloat32são convertidos paraFloat32, que é o tipo usado pelo kernel de pontuação.Array(Float32)ouArray(Float64)ouArray(BFloat16)centroids— Os centroides em relação aos quais a pontuação é calculada, que devem ser constantes. Podem ser fornecidos como um array de arrays de números de ponto flutuante não vazios e de mesmo tamanho; nesse caso, o id é a posição baseada em 0 nesse array. Também podem ser fornecidos como o nome de umDicionáriocom um atributocidde tipo inteiro sem sinal compatível comUInt32e um atributovecdo tipoArray(Float32); nesse caso, o id écid. O dicionário é lido uma vez e armazenado em cache até ser recarregado.Array(Array(Float32))ouArray(Array(Float64))ouArray(Array(BFloat16))ouString
UInt32
Exemplos
Centroides inline
Query
Response
evalMLMethod
Introduzido em: v20.1.0 Aplica um modelo de machine learning treinado às features de entrada para gerar previsões. Sintaxemodel— O modelo de machine learning treinado.AggregateFunctionStatex1, x2, ...— Valores das características para a predição.Float*ou(U)Int*
Float64
Exemplos
Exemplo de uso
Query
Response
naiveBayesClassifier
Introduzido em: v25.11.0 Classifica o texto de entrada usando umNAIVE_BAYES Dicionário. Retorna o mesmo valor de classe previsto por dictGet(dictionary_name, class_attribute, input_text), em que class_attribute é o nome do atributo do rótulo de classe configurado no layout do dicionário. Diferentemente de dictGet, o tipo do resultado é sempre UInt32, em vez do tipo declarado do atributo de classe, e input_text deve ser uma String (nenhuma conversão do tipo de chave é aplicada).
Esta função é não determinística: pode retornar resultados diferentes para os mesmos argumentos.
dictionary_name— Nome de um dicionário com o layout NAIVE_BAYES.Stringinput_text— Texto a ser classificado.String
UInt32
Exemplos
Classificação de texto
Query
Response
naiveBayesClassifierWithAllProbs
Introduzido em: v26.7.0 Classifica o texto de entrada usando um dicionárioNAIVE_BAYES e retorna todas as classes com suas probabilidades, em ordem da mais provável para a menos provável.
Esta função é não determinística: pode retornar resultados diferentes para os mesmos argumentos.
dictionary_name— Nome de um dicionário com o layout NAIVE_BAYES.Stringinput_text— Texto a ser classificado.String
(class_id, probability) ordenadas da mais provável para a menos provável. Array(Tuple(UInt32, Float64))
Exemplos
Todas as probabilidades de classe
Query
Response
naiveBayesClassifierWithProb
Introduzido em: v26.7.0 Classifica o texto de entrada usando um dicionárioNAIVE_BAYES e retorna a classe predita com sua probabilidade.
Esta função é não determinística: pode retornar resultados diferentes para os mesmos argumentos.
dictionary_name— Nome de um dicionário com o layout NAIVE_BAYES.Stringinput_text— Texto a ser classificado.String
Tuple(UInt32, Float64)
Exemplos
Classificação com probabilidade
Query
Response