evalMLMethod
La prédiction à l’aide de modèles de régression ajustés s’effectue avec la fonctionevalMLMethod. Voir le lien sous linearRegression.
stochasticLinearRegression
La fonction d’agrégation stochasticLinearRegression implémente la méthode de descente de gradient stochastique à l’aide d’un modèle linéaire et de la fonction de perte MSE. Elle utiliseevalMLMethod pour effectuer des prédictions sur de nouvelles données.
stochasticLogisticRegression
La fonction d’agrégation stochasticLogisticRegression implémente une méthode de descente de gradient stochastique pour un problème de classification binaire. Elle utiliseevalMLMethod pour effectuer des prédictions sur de nouvelles données.
naiveBayesClassifier
Classe le texte d’entrée à l’aide d’un modèle Naive Bayes utilisant des n-grams et le lissage de Laplace. Le modèle doit être configuré dans ClickHouse avant d’être utilisé. Syntaxemodel_name— Nom du modèle préconfiguré. String Le modèle doit être défini dans les fichiers de configuration de ClickHouse (voir ci-dessous).input_text— Texte à classer. String L’entrée est traitée exactement telle qu’elle est fournie (casse et ponctuation préservées).
- ID de classe prédit, sous la forme d’un entier non signé. UInt32 Les ID de classe correspondent aux catégories définies lors de la création du modèle.
0 peut correspondre à l’anglais, tandis que 1 peut correspondre au français - la signification de ces classes dépend de vos données d’entraînement.
Détails d’implémentation
Algorithme Utilise l’algorithme de classification Naive Bayes avec le lissage de Laplace pour gérer les n-grammes non observés, en s’appuyant sur des probabilités de n-grammes comme décrit ici. Fonctionnalités clés- Prend en charge des n-grammes de toute taille
- Trois modes de tokenisation :
byte: fonctionne sur des octets bruts. Chaque octet constitue un token.codepoint: fonctionne sur des valeurs scalaires Unicode décodées à partir de l’UTF‑8. Chaque point de code constitue un token.token: découpe selon des séquences d’espaces blancs Unicode (regex \s+). Les tokens sont des sous-chaînes sans espace ; la ponctuation fait partie du token si elle est adjacente (par exemple, “you?” constitue un seul token).
Configuration du modèle
Vous trouverez ici un exemple de code source permettant de créer un modèle Naive Bayes pour la détection de langue. En outre, des exemples de modèles ainsi que leurs fichiers de configuration associés sont disponibles ici. Voici un exemple de configuration pour un modèle Naive Bayes dans ClickHouse :
Guide d’entraînement du modèle
Format de fichier
En format lisible par l’humain, pour
n=1 et le mode token, le modèle peut ressembler à ceci :
n=3 et le mode codepoint, on peut obtenir quelque chose comme :
class_idsur 4 octets (UInt, little-endian)- longueur en octets du
n-gramsur 4 octets (UInt, little-endian) - octets bruts du
n-gram countsur 4 octets (UInt, little-endian)
mode et n. Les étapes suivantes décrivent ce prétraitement :
-
Ajouter des marqueurs de début et de fin au début et à la fin de chaque document selon le mode de tokenisation :
- Byte :
0x01(début),0xFF(fin) - Codepoint :
U+10FFFE(début),U+10FFFF(fin) - Token :
<s>(début),</s>(fin)
(n - 1)tokens sont ajoutés au début comme à la fin du document. - Byte :
-
Exemple pour
n=3en modetoken:- Document :
"ClickHouse is fast" - Prétraité comme suit :
<s> <s> ClickHouse is fast </s> </s> - Trigrammes générés :
<s> <s> ClickHouse<s> ClickHouse isClickHouse is fastis fast </s>fast </s> </s>
- Document :
byte et codepoint, il peut être utile de commencer par tokeniser le document en tokens (une liste de bytes pour le mode byte et une liste de codepoints pour le mode codepoint). Ajoutez ensuite n - 1 tokens de début au début du document et n - 1 tokens de fin à la fin du document. Enfin, générez les n-grammes et enregistrez-les dans le fichier sérialisé.
assignCentroid
Introduite dans : v26.8.0 Renvoie l’identifiant du centroïde (L2) le plus proche d’un vecteur. Les centroïdes sont fournis sous la forme d’un tableau constant de tableaux de nombres à virgule flottante, l’identifiant correspondant à la position d’indice 0 dans ce tableau, ou sous la forme du nom d’unDictionary contenant les attributs cid et vec, auquel cas l’identifiant est cid.
Cette fonction est non déterministe : elle peut renvoyer des résultats différents pour les mêmes arguments.
vec— Vecteur à affecter. Sa dimension doit correspondre à celle des centroïdes. Les types autres queFloat32sont convertis enFloat32, utilisé par le kernel de calcul des scores.Array(Float32)ouArray(Float64)ouArray(BFloat16)centroids— Centroïdes par rapport auxquels calculer les scores, qui doivent être constants. Ils peuvent être fournis sous forme d’un tableau de tableaux de flottants non vides et de même taille, l’identifiant étant alors la position à partir de 0 dans ce tableau, ou sous forme du nom d’unDictionaryavec un attributcidde type entier non signé compatible avecUInt32et un attributvecde typeArray(Float32), l’identifiant étant alorscid. Le dictionnaire est lu une fois et mis en cache jusqu’à son rechargement.Array(Array(Float32))ouArray(Array(Float64))ouArray(Array(BFloat16))ouString
UInt32
Exemples
Centroïdes intégrés
Query
Response
evalMLMethod
Introduit dans : v20.1.0 Applique un modèle d’apprentissage automatique entraîné aux variables d’entrée afin de générer des prédictions. Syntaxemodel— Le modèle d’apprentissage automatique entraîné.AggregateFunctionStatex1, x2, ...— Valeurs des caractéristiques pour la prédiction.Float*ou(U)Int*
Float64
Exemples
Exemple d’utilisation
Query
Response
naiveBayesClassifier
Introduit dans : v25.11.0 Classe le texte d’entrée à l’aide d’un dictionnaireNAIVE_BAYES. Renvoie la même valeur de classe prédite que dictGet(dictionary_name, class_attribute, input_text), où class_attribute est le nom de l’attribut de libellé de classe configuré dans le layout du dictionnaire. Contrairement à dictGet, le type de résultat est toujours UInt32 plutôt que le type déclaré de l’attribut de classe, et input_text doit être une String (aucune conversion de type de clé n’est appliquée).
Cette fonction est non déterministe : elle peut renvoyer des résultats différents pour les mêmes arguments.
dictionary_name— Nom d’un dictionnaire avec le layout NAIVE_BAYES.Stringinput_text— Texte à classer.String
UInt32
Exemples
Classer un texte
Query
Response
naiveBayesClassifierWithAllProbs
Introduit dans : v26.7.0 Classe le texte d’entrée à l’aide d’un dictionnaireNAIVE_BAYES et renvoie toutes les classes avec leurs probabilités, classées de la plus probable à la moins probable.
Cette fonction est non-déterministe : elle peut renvoyer des résultats différents pour les mêmes arguments.
dictionary_name— Nom d’un dictionnaire utilisant le layout NAIVE_BAYES.Stringinput_text— Texte à classer.String
Array(Tuple(UInt32, Float64))
Exemples
Toutes les probabilités de classe
Query
Response
naiveBayesClassifierWithProb
Introduit dans : v26.7.0 Classe le texte d’entrée à l’aide d’un dictionnaireNAIVE_BAYES et renvoie la classe prédite ainsi que sa probabilité.
Cette fonction est non déterministe : elle peut renvoyer des résultats différents pour les mêmes arguments.
dictionary_name— Nom d’un dictionnaire avec le layout NAIVE_BAYES.Stringinput_text— Texte à classer.String
Tuple(UInt32, Float64)
Exemples
Classer avec probabilité
Query
Response