効率的なオンライン線形回帰


53

私は通常の線形回帰を実行したいいくつかのデータを分析していますが、入力データの連続ストリーム(メモリにはすぐに大きくなります)と必要なオンライン設定を扱っているため、これは不可能ですこれが消費されている間にパラメータ推定値を更新します。つまり、すべてをメモリにロードして、データセット全体に対して線形回帰を実行することはできません。

私は単純な線形多変量回帰モデル、すなわち、

y=Ax+b+e

線形回帰パラメータおよびbの継続的に更新される推定値を作成するための最適なアルゴリズムは何ですか?Ab

理想的には:

  • 私が最もあるアルゴリズムたい更新当たりの空間と時間の複雑さ、Nは、独立変数の次元である(X)とMは従属変数(の次元であるY)。O(NM)NxMy
  • 新しいサンプルごとにパラメーターが更新される量を決定するパラメーターを指定できるようにしたいと思います。たとえば、0.000001は、次のサンプルがパラメーター推定の100万分の1を提供することを意味します。これは、遠い過去のサンプルの効果に対してある種の指数関数的な減衰を与えます。

2
(1)柔軟な線形回帰、(2)カルマンフィルターを検索します。
ジェイス

回答:


31

Maindonaldは、Givensの回転に基づくシーケンシャルな方法について説明しています。(Aギブンス回転は2つのベクトルの直交変換であるベクターの1つで指定されたエントリアウトゼロます)が分解している前工程で設計行列 三角行列にTを直交変換を介してQので、Q X = T0 '。(三角行列から回帰結果を取得するのは高速で簡単です。)Xの下の新しい行vに隣接すると、効果的にT0 )を拡張しますXTQQX=(T,0)vXゼロ以外の行で、あまりにも、と言うトンを。タスクは、エントリを T対角線の位置に保ちながら、この行をゼロにすることです。Givens回転のシーケンスはこれを行います。Tの最初の行での回転は tの最初の要素をゼロにします。次に、 Tの2行目で回転すると、2番目の要素がゼロになります。効果は、直交性を変更しない一連の回転で Qを事前に乗算することです。(T,0)tTTtTQ

設計行列に列がある場合(p変数と定数で回帰する場合)、必要な回転数はp + 1を超えず、各回転は2つのp + 1-ベクトルを変更します。Tに必要なストレージはO p + 1 2です。したがって、このアルゴリズムの計算コストは、時間と空間の両方でO p + 1 2です。p+1pp+1p+1TO((p+1)2)O((p+1)2)

同様のアプローチにより、行の削除の回帰への影響を判断できます。マインドナルドは数式を提供します。ベルズリー、クー、ウェールズ同様です。したがって、回帰用の移動ウィンドウを探している場合、新しいデータに隣接し、更新ごとに古いデータを削除して、循環バッファ内にウィンドウのデータを保持できます。これにより、更新時間が2倍になり、幅kのウィンドウに追加のストレージが必要になります。と思われる1 / kは影響パラメータのアナログだろう。O(k(p+1))k1/k

指数関数的な減衰の場合、(推測的に)このアプローチを重み付き最小二乗に適用して、各新しい値に1より大きい重みを与えることができると思います。以前の値のバッファを維持したり、古いデータを削除したりする必要はありません。

参照資料

JH Maindonald、統計計算。 J.ワイリー&サンズ、1984年。第4章。

DA Belsley、E。Kuh、RE Welsch、回帰診断:影響力のあるデータと共線性の原因の特定。 J.ワイリー&サンズ、1980年。


1
Maindonaldが記述する方法は、紳士のアルゴリズムに関連するものですか、それとも同じですか?jstor.org/stable/2347147
ワンストップ

6
その場合は、Alan Miller jstor.org/stable/2347583による拡張も参照してください。彼のFortranソフトウェアサイトのアーカイブは現在jblev​​ins.org/mirror/amillerにあります
ワンストップ

5
pの下部に明示的なアルゴリズムが表示されます。4 saba.kntu.ac.ir/eecd/people/aliyari/NN%20%20files/rls.pdf。これは、グーグルの「再帰的最小二乗」によって見つけることができます。紳士/マインドナルドのアプローチの改善のようには見えませんが、少なくとも明確かつ明示的に説明されています。
whuber

2
最後のリンクは、私が提案する方法のように見えます。彼らが使用するマトリックスアイデンティティは、他の場所ではシャーマン-モリソン-ウッドベリーアイデンティティとして知られています。また、実装するのは非常に数値的に効率的ですが、ギブンズ回転ほど安定していない場合があります。
枢機

2
@suncoolsuうーん... Maindonaldの本は、私が使い始めたときに新しく出版されました:-)。
whuber

8

線形回帰モデルを状態空間モデルに再キャストすることで、目的を達成できると思います。Rを使用する場合 は、パッケージdlmを使用して、Petris et al。のコンパニオンブックをご覧ください。


多分私は混乱していますが、これは時系列モデルを参照しているように見えますか?私のモデルは、サンプルが時系列ではないという点で実際に単純です(事実上、それらは独立した(x-> y)サンプルであり、時間とともに大量に蓄積されるだけです)
mikera

1
はい、一般的な場合、これは非独立の観測値を含む時系列に使用されます。ただし、連続する観測値の間には常に相関関係があると想定できるため、興味のある特別な場合があります。
F.チューセル

7

EW

E(i;W)W

WjWj+αE(i;W)Wj

α

これは非常に効率的であり、ニューラルネットワークの一般的なトレーニング方法です。大量のサンプル(100個程度)を効率的に並列処理できます。

もちろん、より高度な最適化アルゴリズム(運動量、共役勾配など)を適用できます。


この論文と非常によく似ているようですeprints.pascal-network.org/archive/00002147/01/…。jubatusと呼ばれるオープンソースプロジェクトで実装されています。
サッカリン

3

驚いたことに、これまで誰もこれに触れていない。線形回帰には2次の目的関数があります。したがって、出発点からのニュートンラフソンのステップは、あなたをまっすぐ最適な状態に導きます。さて、すでに線形回帰を行ったとしましょう。目的関数は次のとおりです。

L(β)=(yXβ)t(yXβ)
L(β)=2Xt(yXβ)
2L(β)=XtX

βxnew,ynew

Lnew(β)=2xnew(ynewxnewTβ)

2Lnew=xnewxnewT

これを上記の古いヘシアンに追加します。次に、ニュートンラフソンの一歩を踏み出します。

βnew=βold+(2L)1Lnew

これで完了です。


1
Lnewp,O(p3)

O(p3)p(IA)1=I+A+A2+

2

標準最小二乗近似は回帰係数を提供します

β=(XTX)1XTY

β

XTXXTYM2+Mβ

たとえば、M = 1の場合、1つの係数は

β=i=1Nxiyii=1Nxi2

そのため、新しいデータポイントを取得するたびに、両方の合計を更新して比率を計算し、更新された係数を取得します。

XTXXTY(1λ)λ


2
β

XTXXTY

6
XX

1
C1xCxzt+1=zt+xCztzC1xt

1

問題を少し書き直すと、問題はより簡単に解決されます。

Y = y

X = [x、1]

それから

Y = A * X

ワンタイムソリューションは、計算することによって見つけられます

V = X '* X

そして

C = X '* Y

VのサイズはN行N列で、CのサイズはN行M列でなければなりません。探しているパラメーターは次のように与えられます:

A = inv(V)* C

VとCはデータを合計することで計算されるため、新しいサンプルごとにAを計算できます。ただし、これにはO(N ^ 3)の時間の複雑さがあります。

Vは正方で半正定値であるため、LU分解が存在し、Vを数値的に安定させることができます。行列の逆行列に対してランク1の更新を実行するアルゴリズムがあります。それらを見つけて、探している効率的な実装を手に入れましょう。

ランク1更新アルゴリズムは、Golubとvan Loanによる「マトリックス計算」に記載されています。それは難しい素材ですが、そのようなアルゴリズムの包括的な概要を持っています。

注:上記の方法では、各ステップで最小二乗推定値が得られます。XとYの更新に重みを簡単に追加できます。XとYの値が大きくなりすぎると、結果に影響を与えずに単一のスカラーでスケーリングできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.