stochasticLinearRegression
この関数は、確率的線形回帰を実装しています。学習率、L2正則化係数、ミニバッチサイズのカスタムパラメータをサポートし、重みを更新するためのいくつかの方法(Adam(デフォルトで使用)、シンプル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つの値のカラムを返します。
参照
