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

stochasticLinearRegression

導入バージョン: v20.1.0 この関数は、確率的線形回帰を実装します。 次の項目について、カスタムパラメータをサポートしています。
  • 学習率
  • L2 正則化係数
  • ミニバッチサイズ
また、重みを更新するための手法もいくつか用意されています。
  • Adam (デフォルト)
  • 単純な SGD
  • Momentum
  • Nesterov
使用方法 この関数の使用は、モデルの学習と新しいデータに対する予測の 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
stochasticLinearRegressionState(0.1, 0.0, 5, 'SGD')(target, x1, x2)
AS state FROM train_data;
ここでは、train_data テーブルにもデータを挿入する必要があります。 パラメータの数は固定ではなく、linearRegressionState に渡す引数の数によってのみ決まります。 これらはすべて数値でなければなりません。 予測するよう学習させたい目的値を持つカラムは、最初の引数として挿入されることに注意してください。
  1. 予測
状態をテーブルに保存した後は、それを予測に何度も使用したり、他の状態とマージして、さらに優れた新しいモデルを作成したりできます。
WITH (SELECT state FROM your_model) AS model SELECT
evalMLMethod(model, x1, x2) FROM test_data
このクエリは、予測値のカラムを返します。 evalMLMethod の最初の引数は AggregateFunctionState オブジェクトで、その後に特徴量のカラムが続くことに注意してください。 test_datatrain_data と同様のテーブルですが、目的変数を含まない場合があります。 注記
  1. 2 つのモデルをマージするには、次のようなクエリを作成できます。
SELECT state1 + state2 FROM your_models
ここで、your_models テーブルには両方のモデルが含まれています。 このクエリは新しい AggregateFunctionState オブジェクトを返します。
  1. -State combinator を使用しない場合は、モデルを保存しなくても、作成したモデルの重みを必要に応じて取得できます。
SELECT stochasticLinearRegression(0.01)(target, param1, param2)
FROM train_data
このようなクエリを実行すると、モデルが学習され、その重みが返されます。最初の値はモデルのパラメータに対応する重みで、最後の 1 つはバイアスです。 したがって、上記の例では、このクエリは 3 つの値を持つカラムを返します。 構文
stochasticLinearRegression([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 はやや多くの計算量とメモリを必要としますが、収束速度と確率的勾配法の安定性の面で有用です。const String
  • target — 予測対象として学習する目的変数です。数値である必要があります。Float*
  • x1, x2, ... — 特徴量の値 (独立変数) です。すべて数値である必要があります。Float*
戻り値 学習済みの線形回帰モデルの重みを返します。先頭の値はモデルのパラメータに対応し、最後の 1 つはバイアスです。予測には evalMLMethod を使用します。Array(Float64) モデルの学習
Query
CREATE TABLE your_model
ENGINE = Memory
AS SELECT
stochasticLinearRegressionState(0.1, 0.0, 5, '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 stochasticLinearRegression(0.01)(target, x1, x2) FROM train_data
Response
状態を保存せずにモデルの重みを返します
関連項目
最終更新日 2026年6月10日