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 の第1引数には 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このクエリはモデルを学習させ、その重みを返します。先頭の値はモデルのパラメータに対応する重みで、最後の1つはバイアスです。したがって上記の例では、このクエリは3つの値を持つカラムを返します。
参照