1

出力yを与える一連の入力(x1、x2、...、xn)があるとします。目標はまだ見えなかったx1 ... xnの値からyを予測することです。この問題は機械学習の領域で回帰問題としてモデル化することができます。機械学習における連続回帰

ただし、データは引き続き送信されます。 x1 ... xnからyを予測することができます。さらに、その予測が良いかどうかを後で確認することができます。それが良いものだったなら、すべてが問題ありません。一方、予測が実数から大きく外れる場合は、モデルを更新したいと思います。私が見ることの1つの方法は、この新しいデータをトレーニングセットに挿入し、回帰アルゴリズムを再び訓練することです。それには2つの問題があります。まず、私のモジュールを時折ゼロから再計算する余裕があります。第二に、私はトレーニングデータにあまりにも多くのデータを持っているので、新しいデータは無視できるほどです。ただし、新しいデータは、問題の性質上、古いデータよりも多くのデータがインポートされる可能性があります。

古いデータよりも新しいデータに関連した一種の連続的な回帰を計算するのが良い解決策であるようです。私はそのようなアプローチを探しましたが、関連するものは何も見つかりませんでした。おそらく私は間違った方向を見ているでしょう。誰かがそれを行う方法の手掛かりを持っていますか?

+1

サンプルウェイトを使用しているだけではありません(多くの[libs]でサポートされています(http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html#sklearn.linear_model.LinearRegression 。フィット))? – sascha

+0

それは "私のモジュールを時々スクラッチから再計算する余裕がある以上のコスト"に分類されませんか? –

+0

あなたが解決したモデル*解決方法* *どのような種類のデータサイズ*を処理するか、重要な情報は与えられていません。 – sascha

答えて

1

新しいデータをより重要視したい場合は、ウェイトを使用する必要があります。通常、それは()関数

sample_weight

フィットで呼ばれscikit-学ぶ(あなたはこのライブラリを使用している場合)。

重みは、1 /(この現在の観測からの時間経過)として定義できます。

今、第2の問題についてです。再計算に時間がかかる場合は、観測結果をカットして最新のものを使用することができます。あなたのモデルをデータ全体と新鮮なものと古いデータの一部に合わせて、あなたの体重がどのくらい変化しているかチェックしてください。あなたが実際に{x_i}と{y}の間に依存関係がある場合は、データセット全体が必要ないと思います。

それ以外の場合は、もう一度ウェイトを使用できます。 W1 * X1 + W2 * X2 + ...新しいデータのための

モデル::〜W1 * X1 +〜W2 *古いデータの

モデル:しかし、今のところ、あなたはモデルに重みを重み付けします×2 + ...

共通モデル:(W1 * A1_1 +〜W1 * a1_2)*×1 +(W2 * A2_1 +〜W2 * a2_2)* X2 +ここA1_1 ...

、 a2_1は古いモデルの重み、a2_1、a2_2 - 古いモデルのw1、w2 - 係数、新しいモデルのw1、w2 - の係数です。

パラメータ{a}は最初の箇条書きのように推定できますが、別の線形モデルを作成して推定することもできます。しかし、私のアドバイス:{a}には非線形回帰を使わないでください。