stochasticLinearRegression
この関数は、確率的線形回帰を実装しています。学習率、L2正則化係数、ミニバッチサイズのカスタムパラメータをサポートしており、重みを更新するためのいくつかのメソッドを持っています(Adam(デフォルトで使用)、simple SGD、Momentum、およびNesterov)。
パラメータ
カスタマイズ可能なパラメータは4つあります。これらは関数に順次渡されますが、4つすべてを渡す必要はありません。デフォルト値が使用されますが、良いモデルを得るためには、いくつかのパラメータ調整が必要です。
learning rate
は、勾配降下ステップが実行されるときのステップ長の係数です。学習率が大きすぎると、モデルの重みが無限大になる可能性があります。デフォルトは0.00001
です。- 過学習を防ぐために役立つ可能性のある
l2 regularization coefficient
です。デフォルトは0.1
です。 mini-batch size
は、勾配が計算され、合計されて1ステップの勾配降下を実行するための要素の数を設定します。純粋な確率的降下は1つの要素を使用しますが、小さなバッチ(約10要素)を持つことで勾配ステップがより安定します。デフォルトは15
です。- 重みを更新するための
method for updating weights
です。これらはAdam
(デフォルト)、SGD
、Momentum
、およびNesterov
です。Momentum
とNesterov
は、少し多くの計算とメモリを必要としますが、収束速度や確率的勾配法の安定性の観点で役立ちます。
使用法
stochasticLinearRegression
は、モデルのフィッティングと新しいデータに対する予測の2ステップで使用されます。モデルをフィットさせ、後で使用するためにその状態を保存するために、-State
コンビネータを使用します。これにより、状態(例えば、モデルの重み)が保存されます。
予測を行うためには、状態を引数として受け取り、予測するための特徴を受け取る関数 evalMLMethod を使用します。
1. フィッティング
このようなクエリを使用できます。
ここでは、train_data
テーブルにデータを挿入する必要があります。パラメータの数は固定されておらず、linearRegressionState
に渡された引数の数に依存します。すべてが数値である必要があります。
ターゲット値(予測したい値)を持つカラムは最初の引数として挿入されます。
2. 予測
テーブルに状態を保存した後、それを複数回使用して予測したり、他の状態とマージして新しい、さらに良いモデルを作成することができます。
このクエリは予測された値のカラムを返します。evalMLMethod
の最初の引数は AggregateFunctionState
オブジェクトであり、次の引数は特徴のカラムです。
test_data
は train_data
と同様のテーブルですが、ターゲット値を含まない場合があります。
注意事項
-
2つのモデルをマージするためにユーザーがこのようなクエリを作成できます:
sql SELECT state1 + state2 FROM your_models
ここで、your_models
テーブルは両方のモデルを含みます。このクエリは新しいAggregateFunctionState
オブジェクトを返します。 -
ユーザーは、モデルを保存しないで作成したモデルの重みを取り出すことができます。ただし、
-State
コンビネータが使用されていない場合に限ります。sql SELECT stochasticLinearRegression(0.01)(target, param1, param2) FROM train_data
このようなクエリはモデルをフィットさせ、その重みを返します。最初の値はモデルのパラメータに対応する重みであり、最後の値はバイアスです。したがって、上記のクエリは3つの値を持つカラムを返します。
参照