stochasticLinearRegression
stochasticLinearRegression
導入バージョン: v20.1
この関数は確率的線形回帰を実装します。 以下のカスタムパラメーターをサポートします:
- 学習率
- L2 正則化係数
- ミニバッチサイズ
また、重みを更新するための手法をいくつか提供します:
- Adam(デフォルト)
- 単純 SGD
- Momentum
- Nesterov
使用方法
この関数は 2 段階で使用します。モデルのフィッティングと、新しいデータに対する予測です。
- フィッティング
フィッティングには、次のようなクエリを使用できます:
ここでは、train_data テーブルにもデータを挿入する必要があります。
パラメータ数は固定ではなく、linearRegressionState に渡す引数の数だけに依存します。
それらはすべて数値である必要があります。
目的値(予測対象として学習したい値)を格納するカラムは、最初の引数として渡す点に注意してください。
- 予測
状態をテーブルに保存した後は、その状態を予測に複数回利用したり、他の状態とマージして新たな、さらに優れたモデルを作成したりできます。
このクエリは予測値からなるカラムを返します。
evalMLMethod の最初の引数は AggregateFunctionState オブジェクトであり、以降の引数が特徴量のカラムです。
test_data は train_data と同様のテーブルですが、目的変数を含まない場合があります。
注意事項
- 2つのモデルをマージするには、次のようなクエリを作成できます:
ここで、your_models テーブルには両方のモデルが格納されています。
このクエリは新しい AggregateFunctionState オブジェクトを返します。
-Stateコンビネータが使用されていない場合、モデルを保存せずに、任意の用途のために作成したモデルの重みだけを取得することができます。
このようなクエリを実行すると、モデルが当てはめられ、その重みが返されます。最初の値はモデルのパラメータに対応する重みで、最後の値はバイアスです。 したがって上記の例では、そのクエリは 3 つの値を持つカラムを返します。
構文
引数
learning_rate— 勾配降下法のステップを実行する際のステップ幅に掛ける係数。学習率が大きすぎると、モデルの重みが無限大になる可能性があります。デフォルトは0.00001。Float64l2_regularization_coef— 過学習の防止に役立つ可能性がある L2 正則化係数。デフォルトは0.1。Float64mini_batch_size— 勾配降下法の 1 ステップを実行するために、勾配を計算して合計する要素数を設定します。純粋な確率的勾配降下法では 1 要素を使用しますが、小さなバッチ(約 10 要素)にすると、勾配ステップがより安定します。デフォルトは15。UInt64method— 重みを更新するためのメソッド:Adam(デフォルト)、SGD、Momentum、Nesterov。MomentumとNesterovはわずかに多くの計算とメモリを必要としますが、確率的勾配法の収束速度と安定性の観点で有用な場合があります。const Stringtarget— 予測対象となる値(従属変数)。数値でなければなりません。Float*x1, x2, ...— 特徴量の値(独立変数)。すべて数値でなければなりません。Float*
返される値
学習済み線形回帰モデルの重みを返します。先頭の値がモデルのパラメータに対応し、最後の 1 つがバイアスです。予測には evalMLMethod を使用します。Array(Float64)
使用例
モデルの学習
予測の実行
モデルの重みの取得
参照