> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Cette fonction implémente une régression logistique stochastique. Elle peut être utilisée pour des problèmes de classification binaire, prend en charge les mêmes paramètres personnalisés que stochasticLinearRegression et fonctionne de la même façon.

# stochasticLogisticRegression

<div id="stochasticLogisticRegression">
  ## stochasticLogisticRegression
</div>

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`](/fr/reference/functions/aggregate-functions/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 :

```sql theme={null}
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].

2. Prédiction

À partir de l’état enregistré, nous pouvons prédire la probabilité qu’un objet ait l’étiquette `1`.

```sql theme={null}
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.

```sql theme={null}
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**

```sql theme={null}
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`](/fr/reference/data-types/float)
* `l2_regularization_coef` — Coefficient de régularisation L2 pouvant aider à éviter le surapprentissage. La valeur par défaut est `0.1`. [`Float64`](/fr/reference/data-types/float)
* `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`](/fr/reference/data-types/int-uint)
* `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`](/fr/reference/data-types/string)
* `target` — Étiquettes cibles de classification binaire. Elles doivent être comprises dans l’intervalle \[-1, 1]. [`Float`](/fr/reference/data-types/float)
* `x1, x2, ...` — Valeurs des caractéristiques (variables indépendantes). Elles doivent toutes être numériques. [`Float`](/fr/reference/data-types/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)`](/fr/reference/data-types/array)

**Exemples**

**Entraînement d’un modèle**

```sql title=Query theme={null}
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 title=Response theme={null}
Saves trained model state to table
```

**Effectuer des prédictions**

```sql title=Query theme={null}
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
```

```response title=Response theme={null}
Returns probability values for test data
```

**Classification par seuil**

```sql title=Query theme={null}
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 title=Response theme={null}
Returns binary classification étiquettes using probability threshold
```

**Voir aussi**

* [stochasticLinearRegression](/fr/reference/functions/aggregate-functions/stochasticLogisticRegression)
* [Différence entre la régression linéaire et la régression logistique.](https://stackoverflow.com/questions/12146914/what-is-the-difference-between-linear-regression-and-logistic-regression)
