メインコンテンツまでスキップ
メインコンテンツまでスキップ

stochasticLinearRegression

この関数は確率的線形回帰を実装します。学習率、L2正則化係数、ミニバッチサイズのカスタムパラメータをサポートし、重みの更新方法(Adam(デフォルトで使用)、simple SGDMomentum、および Nesterov)もいくつか用意されています。

パラメータ

カスタマイズ可能なパラメータは4つあります。これらは関数に順次渡されますが、4つすべてを渡す必要はありません - デフォルト値が使用されます。ただし、良好なモデルにはパラメータの調整が必要です。

  1. learning rate は勾配降下法のステップが行われる際のステップの長さの係数です。学習率が大きすぎると、モデルの重みが無限大になる可能性があります。デフォルトは 0.00001 です。
  2. l2 regularization coefficient は過学習を防ぐのに役立ちます。デフォルトは 0.1 です。
  3. mini-batch size は、勾配を計算し合計して1ステップの勾配降下を行う要素の数を設定します。純粋な確率的降下法では1つの要素を使用しますが、小さなバッチ(約10要素)を持つことで、勾配ステップがより安定します。デフォルトは 15 です。
  4. method for updating weights は次の通りです: Adam (デフォルト)、 SGDMomentum 、および Nesterov です。 MomentumNesterov は、計算とメモリを少し多く必要としますが、収束の速度と確率的勾配法の安定性の観点から便利です。

使用法

stochasticLinearRegression は、モデルのフィッティングと新しいデータに対する予測の2ステップで使用されます。モデルをフィッティングし、後で使用するためにその状態を保存するには、-State 組み合わせ子を使用します。この組み合わせ子は状態(例えば、モデルの重み)を保存します。予測を行うには、状態を引数として取る関数 evalMLMethod を使用します。

1. フィッティング

このようなクエリを使用できます。

ここでは、train_data テーブルにデータを挿入する必要があります。パラメータの数は固定されておらず、linearRegressionState に渡された引数の数によってのみ決まります。すべての値は数値である必要があります。 ターゲット値(予測するように学習したい値)を含むカラムは最初の引数として挿入されます。

2. 予測

状態をテーブルに保存した後、この状態を複数回使用して予測を行ったり、別の状態とマージして新しい、より良いモデルを作成したりできます。

このクエリは予測値のカラムを返します。evalMLMethod の最初の引数は AggregateFunctionState オブジェクトであり、次の引数は特徴のカラムです。

test_datatrain_data のようなテーブルですが、ターゲット値を含まない場合があります。

注意事項

  1. 2つのモデルをマージするには、ユーザーは次のようなクエリを作成できます:

    ここで、your_models テーブルには両方のモデルが含まれています。このクエリは新しい AggregateFunctionState オブジェクトを返します。

  2. ユーザーは、-State 組み合わせ子が使用されていない場合、保存せずに独自の目的のために作成されたモデルの重みを取得できます。

    このようなクエリはモデルをフィットさせ、その重みを返します - 最初の数値はモデルのパラメータに対応する重みであり、最後のものはバイアスです。したがって、上記のクエリは3つの値を持つカラムを返します。

関連情報