Passer au contenu principal

stochasticLogisticRegression

Introduit dans : v20.1.0 Cette fonction implémente une régression logistique stochastique. Elle peut être utilisée pour un problème de classification binaire, prend en charge les mêmes paramètres personnalisés que stochasticLinearRegression et fonctionne de la même manière. Utilisation La fonction s’utilise en deux étapes :
  1. Ajustement
Pour l’ajustement, vous pouvez utiliser une requête comme celle-ci :
CREATE TABLE IF NOT EXISTS train_data
(
    param1 Float64,
    param2 Float64,
    target Float64
) ENGINE = Memory;

CREATE TABLE your_model ENGINE = Memory AS SELECT
stochasticLogisticRegression(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
Ici, nous devons également insérer des données dans la table train_data. Le nombre de paramètres n’est pas fixe : il dépend uniquement du nombre d’arguments passés à logisticRegressionState. Ils doivent tous être des valeurs numériques. Notez que la colonne contenant la valeur cible (celle que nous voulons apprendre à prédire) est passée en premier argument. Les étiquettes prédites doivent être comprises dans [-1, 1].
  1. Prédiction
À partir de l’état enregistré, nous pouvons prédire la probabilité qu’un objet ait l’étiquette 1.
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
La requête renverra une colonne de probabilités. Notez que le premier argument de evalMLMethod est un objet AggregateFunctionState ; les suivants sont des colonnes de variables. Nous pouvons également définir un seuil de probabilité, qui attribue les éléments à différentes étiquettes.
SELECT result < 1.1 AND result > 0.5 FROM
(WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) AS result FROM test_data)
Le résultat sera alors des étiquettes. test_data est une table comme train_data, mais peut ne pas contenir de valeur cible. Syntaxe
stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
Arguments
  • learning_rate — Coefficient de longueur de pas utilisé lors d’une étape de descente de gradient. Un taux d’apprentissage trop élevé peut entraîner des poids infinis pour le modèle. La valeur par défaut est 0.00001. Float64
  • l2_regularization_coef — Coefficient de régularisation L2 pouvant aider à éviter le surapprentissage. La valeur par défaut est 0.1. Float64
  • mini_batch_size — Définit le nombre d’éléments pour lesquels les gradients sont calculés et additionnés afin d’effectuer une étape de descente de gradient. La descente stochastique pure utilise un seul élément, mais l’utilisation de petits lots (environ 10 éléments) rend les étapes de gradient plus stables. La valeur par défaut est 15. UInt64
  • method — Méthode de mise à jour des poids : Adam (par défaut), SGD, Momentum, Nesterov. Momentum et Nesterov demandent un peu plus de calculs et de mémoire, mais ils peuvent être utiles en termes de vitesse de convergence et de stabilité des méthodes de gradient stochastique. String
  • target — Étiquettes cibles de classification binaire. Elles doivent être comprises dans l’intervalle [-1, 1]. Float
  • x1, x2, ... — Valeurs des caractéristiques (variables indépendantes). Elles doivent toutes être numériques. Float
Valeur renvoyée Renvoie les poids du modèle de régression logistique entraîné. Utilisez evalMLMethod pour effectuer des prédictions ; cette méthode renvoie les probabilités qu’un objet ait l’étiquette 1. Array(Float64) Exemples Entraînement d’un modèle
Query
CREATE TABLE your_model
ENGINE = MergeTree
ORDER BY tuple()
AS SELECT
stochasticLogisticRegressionState(1.0, 1.0, 10, 'SGD')(target, x1, x2)
AS state FROM train_data
Response
Saves trained model state to table
Effectuer des prédictions
Query
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Response
Returns probability values for test data
Classification par seuil
Query
SELECT result < 1.1 AND result > 0.5
FROM (
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) AS result FROM test_data)
Response
Returns binary classification étiquettes using probability threshold
Voir aussi
Dernière modification le 25 juin 2026