http://www.johndcook.com/standard_deviation.htmlの論文「実行中の分散を正確に計算する」 は、実行中の平均、分散、標準偏差を計算する方法を示しています。
新しいトレーニングレコードが提供されるたびに、線形またはロジスティック回帰モデルのパラメーターを同様に「動的に」更新できるアルゴリズムはありますか?
http://www.johndcook.com/standard_deviation.htmlの論文「実行中の分散を正確に計算する」 は、実行中の平均、分散、標準偏差を計算する方法を示しています。
新しいトレーニングレコードが提供されるたびに、線形またはロジスティック回帰モデルのパラメーターを同様に「動的に」更新できるアルゴリズムはありますか?
回答:
線形回帰係数である= C O V (X 、Y )/ V R (X )及びB = mは電子N (Y )- ⋅ mは電子N (Xが)。
したがって、本当に必要なのは、を計算するためのインクリメンタルな方法だけです。この値との分散、およびとの両方の平均から、パラメーターと計算できます。以下に示す擬似コードでわかるように、増分計算は増分計算に非常に似ています。これは驚くべきことではありません。
おそらく探している擬似コードは次のとおりです。
init(): meanX = 0, meanY = 0, varX = 0, covXY = 0, n = 0
update(x,y):
n += 1
dx = x - meanX
dy = y - meanY
varX += (((n-1)/n)*dx*dx - varX)/n
covXY += (((n-1)/n)*dx*dy - covXY)/n
meanX += dx/n
meanY += dy/n
getA(): return covXY/varX
getB(): return meanY - getA()*meanX
として多変量回帰をインクリメンタルに計算する同等のアルゴリズムを探しているときにこの質問を見つけたので、
あなたの2つの特定の例:
線形回帰アレクサンダー・ストレールとマイケル・リットマンによる 論文「オンライン線形回帰とそのモデルベースの強化学習への応用」は、インクリメンタル更新を使用した線形回帰ソリューションへの近似を提供する「KWIK線形回帰」(アルゴリズム1を参照)と呼ばれるアルゴリズムについて説明しています。これは正規化されていないことに注意してください(つまり、リッジ回帰ではありません)。Strehl&Littmanの方法はその設定にまで拡張できないと確信しています。
ロジスティック回帰
このスレッドは、問題にいくつかの光を当てます。引用:
正則化制約がなくても、ロジスティック回帰は非線形最適化の問題です。すでにこれには分析ソリューションがありません。これは通常、更新ソリューションを導出するための前提条件です。正則化制約では、制約付き最適化問題になります。これにより、制約のない問題がすでに抱えていたものに加えて、まったく新しい非分析的合併症が導入されます。
ただし、他のオンライン(またはインクリメンタル)回帰方法を検討することをお勧めします。たとえば、局所加重投影回帰(LWPR)
一般原則として:
0)十分な統計と現在のML推定値を保持します
1)新しいデータを取得したら、十分な統計と推定値を更新します
2)十分な統計がない場合は、すべてのデータを使用する必要があります。
3)通常、閉形式のソリューションはありません。以前のMLEを開始点として使用し、便利な最適化手法を使用してそこから新しい最適なものを見つけます。特定の種類の問題インスタンスに対して、どのアプローチが最良のトレードオフになるかを見つけるために、少し実験する必要がある場合があります。
問題に特別な構造がある場合、おそらくそれを悪用することができます。
いくつかの値を持っている場合と持っていない場合があるいくつかの潜在的な参照:
McMahan、HB and M. Streeter(2012)、
Open Problem:Better Bounds for Online Logistic Regression、
JMLR:Workshop and Conference Proceedings、vol 23、44.1-44.3
ペニー、WDおよびSJロバーツ(1999)、
ダイナミックロジスティック回帰、
Proceedings IJCNN '99
tdcの答えに加えて、反復ごとに一定の時間だけで、任意の時点で係数の正確な推定値を計算する既知の方法はありません。ただし、合理的で興味深いいくつかの選択肢があります。
最初に確認するモデルは、オンライン学習の設定です。この設定では、世界は最初にxの値をアナウンスし、アルゴリズムはyの値を予測し、世界は真の値y 'をアナウンスし、アルゴリズムは損失l(y、y')を被ります。この設定では、単純なアルゴリズム(勾配降下法と指数勾配法など)が準線形後悔を達成することが知られています。つまり、より多くの例を見ると、可能な限り最良の線形予測子と比較した場合、アルゴリズムが犯す余分なミスの数は、例の数に応じて増えません。これは、敵対的な設定でも機能します。これらの後悔の限界を証明する一般的な戦略の1つを説明する優れた論文があります。Shai Shalev-Schwartzの講義ノートも役立ちます。
オンライン学習設定には、バンディット設定と呼ばれる拡張機能があり、アルゴリズムには、それがどれだけ間違っているかを表す数値のみが与えられます(正しい答えへのポインターはありません)。印象的なことに、オンライン学習の多くの結果はこの設定に引き継がれますが、ここでは、探索と悪用を余儀なくされ、あらゆる種類の興味深い課題につながります。
他の答えは機械学習の世界を指しており、それは確かにこの問題が対処されている1つの場所です。
ただし、ニーズにより適した別のアプローチは、低ランクの更新でQR分解を使用することです。これを実行し、それを使用して最小二乗問題を解決する方法を以下に示します。
HammerlingとLucasによるQR分解と最小二乗問題の更新。
これは、@ chmikeの回答に追加することです。
この方法は、BP Welfordの標準偏差のオンラインアルゴリズムに似ており、平均も計算します。ジョンクックはここで良い説明をします。2009年のトニーフィンチは、指数移動平均と標準偏差の方法を提供します。
diff := x – mean
incr := alpha * diff
mean := mean + incr
variance := (1 - alpha) * (variance + diff * incr)
以前に投稿された答えをじっくりと見て、指数関数的な移動ウィンドウを含めるように拡張します。
init():
meanX = 0, meanY = 0, varX = 0, covXY = 0, n = 0,
meanXY = 0, varY = 0, desiredAlpha=0.01 #additional variables for correlation
update(x,y):
n += 1
alpha=max(desiredAlpha,1/n) #to handle initial conditions
dx = x - meanX
dy = y - meanY
dxy = (x*y) - meanXY #needed for cor
varX += ((1-alpha)*dx*dx - varX)*alpha
varY += ((1-alpha)*dy*dy - varY)*alpha #needed for corXY
covXY += ((1-alpha)*dx*dy - covXY)*alpha
#alternate method: varX = (1-alpha)*(varX+dx*dx*alpha)
#alternate method: varY = (1-alpha)*(varY+dy*dy*alpha) #needed for corXY
#alternate method: covXY = (1-alpha)*(covXY+dx*dy*alpha)
meanX += dx * alpha
meanY += dy * alpha
meanXY += dxy * alpha
getA(): return covXY/varX
getB(): return meanY - getA()*meanX
corXY(): return (meanXY - meanX * meanY) / ( sqrt(varX) * sqrt(varY) )
上記の「コード」では、desiredAlphaを0に設定することができ、その場合、コードは指数的な重み付けなしで動作します。移動するウィンドウのサイズに対してModified_moving_averageが示唆するように、desiredAlphaを1 / desiredWindowSizeに設定することをお勧めします。
副次的な質問:上記の代替計算のうち、精度の観点からより良いコメントはありますか?
参照:
chmike(2013)https://stats.stackexchange.com/a/79845/70282
クック、ジョン(nd)実行分散を正確に計算するhttp://www.johndcook.com/blog/standard_deviation/
フィンチ、トニー。(2009)加重平均と分散の増分計算。https://fanf2.user.srcf.net/hermes/doc/antiforgery/stats.pdf
ウィキペディア。(nd)ウェルフォードのオンラインアルゴリズムhttps://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm