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

stochasticLogisticRegression

stochasticLogisticRegression

導入: v20.1

この関数は確率的ロジスティック回帰を実装しています。 二値分類問題に使用でき、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の第1引数は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.1Float64
  • mini_batch_size — 勾配降下の1ステップを実行するために、勾配を計算して合計する要素数を設定します。純粋な確率的勾配降下法では1要素のみを使用しますが、小さなバッチ(約10要素)を使用すると、勾配ステップがより安定します。デフォルト値は 15 です。UInt64
  • method — 重みを更新するためのメソッド: デフォルトは Adam で、他に SGDMomentumNesterov を指定できます。MomentumNesterov は計算量とメモリ使用量がやや増加しますが、確率的勾配法における収束速度と安定性の面で有用な場合があります。String
  • target — 目的変数となる二値分類ラベル。範囲は [-1, 1] でなければなりません。Float
  • x1, x2, ... — 特徴量(独立変数)の値。すべて数値型である必要があります。Float

返り値

学習済みロジスティック回帰モデルの重みを返します。予測にはevalMLMethodを使用します。これはオブジェクトがラベル1を持つ確率を返します。Array(Float64)

モデルの学習

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
Saves trained model state to table

予測の実行

WITH (SELECT state FROM your_model) AS model
SELECT
evalMLMethod(model, x1, x2)
FROM test_data
Returns probability values for test data

閾値による分類

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)
Returns binary classification labels using probability threshold

関連項目