メインコンテンツへスキップ

stochasticLogisticRegression

導入バージョン: v20.1.0 この関数は、確率的ロジスティック回帰を実装します。 二値分類の問題に使用でき、stochasticLinearRegression と同じカスタムパラメータをサポートし、同様に動作します。 使用方法 この関数は次の 2 つの手順で使用します。
  1. 学習
学習には、次のようなクエリを使用できます。
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;
ここでは、train_dataテーブルにもデータを挿入する必要があります。 パラメータの数は固定ではなく、logisticRegressionState に渡す引数の数にのみ依存します。 これらはすべて数値でなければなりません。 予測したい目的値を持つカラムは、最初の引数として挿入することに注意してください。 予測されるラベルは [-1, 1] の範囲内でなければなりません。
  1. 予測
保存された状態を使用すると、あるオブジェクトがラベル 1 を持つ確率を予測できます。
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, param1, param2) FROM test_data
このクエリは、確率のカラムを返します。 evalMLMethod の最初の引数は AggregateFunctionState オブジェクトで、その後に特徴量のカラムが続きます。 確率のしきい値を設定して、要素を異なるラベルに割り当てることもできます。
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)
その場合、結果はラベルになります。 test_datatrain_data と同様のテーブルですが、目的値を含まない場合があります。 構文
stochasticLogisticRegression([learning_rate, l2_regularization_coef, mini_batch_size, method])(target, x1, x2, ...)
引数
  • learning_rate — 勾配降下法の各ステップにおけるステップ長の係数です。学習率が大きすぎると、モデルの重みが無限大になる可能性があります。デフォルトは 0.00001 です。Float64
  • l2_regularization_coef — 過学習の防止に役立つ場合がある L2 正則化係数です。デフォルトは 0.1 です。Float64
  • mini_batch_size — 勾配降下法の 1 ステップを実行する際に、勾配を計算して合計する要素数を設定します。純粋な確率的勾配降下法では 1 つの要素を使用しますが、小さなバッチ (約 10 要素) を使うと勾配ステップがより安定します。デフォルトは 15 です。UInt64
  • method — 重みの更新方法です: Adam (デフォルト) 、SGDMomentumNesterovMomentumNesterov は計算量とメモリ消費がやや増えますが、収束速度と確率的勾配法の安定性の面で有用です。String
  • target — 二値分類のターゲットラベルです。範囲 [-1, 1] に含まれている必要があります。Float
  • x1, x2, ... — 特徴量の値 (独立変数) です。すべて数値である必要があります。Float
戻り値 学習済みロジスティック回帰モデルの重みを返します。予測には evalMLMethod を使用します。この関数は、オブジェクトがラベル 1 を持つ確率を返します。Array(Float64) モデルの学習
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
学習済みモデルの状態をテーブルに保存します
予測する
Query
WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Response
テストデータの確率値を返します
閾値による分類
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
確率閾値を使用して二値分類ラベルを返します
関連項目
最終更新日 2026年6月10日