Verimli çevrimiçi doğrusal regresyon


53

Sıradan doğrusal regresyon yapmak istediğim bazı verileri analiz ediyorum, ancak sürekli veri girişi akışı (çevrimiçi olarak bellek için çok büyük olacak) ve ihtiyaç duyulan çevrimiçi bir ayar ile uğraşırken bu mümkün değil tüketilirken parametre tahminlerini güncellemek için. yani hepsini hafızaya yükleyemiyorum ve veri setinin tamamında doğrusal regresyon yapamıyorum.

Basit bir doğrusal çok değişkenli regresyon modelini, yani

y=Ax+b+e

Doğrusal regresyon parametrelerinin ve sürekli güncellenen bir tahminini oluşturmak için en iyi algoritma nedir ?bAb

İdeal:

  • Güncelleme başına en çok alan ve zaman karmaşıklığı olan bir algoritma istiyorum ; burada , bağımsız değişkenin boyutsallığıdır ( ) ve , bağımlı değişkenin boyutluluğudur ( ).N x M yO(NM)NxMy
  • Her yeni örnek tarafından parametrelerin ne kadar güncellendiğini belirlemek için bazı parametreler belirleyebilmek istiyorum, örneğin 0.000001, bir sonraki örneğin parametre tahmininin milyonda birini sağlayacağı anlamına gelir. Bu, uzak geçmişte örneklerin etkisi için bir çeşit üstel bozulma sağlayacaktır.

2
(1) Esnek doğrusal regresyon (2) Kalman Filtreleri.
Jase

Yanıtlar:


31

Maindonald, Givens rotasyonlarına dayanan sıralı bir yöntemi açıklar . (Bir Givens dönüşü, vektörlerden birinde belirli bir girişi sıfırlayan iki vektörün ortogonal bir dönüşümüdür.) Önceki adımda, tasarım matrisini bir matris ile bir matris ortogonal dönüşüm böylece . (Bu üçgen matrisinden regresyon sonuçları elde etmek için hızlı ve kolaydır.) Yeni bir satır bitişik üzerine altında , etkili uzanır sıfır olmayan bir satırdaki da sayT S S X = ( T , 0 ) ' v X, ( T , 0 ) ' t T , T , T , T SXTQQX=(T,0)vX(T,0)t. Görev, girişleri diyagonal konumunda tutarken bu satırı sıfırlamaktır . Bir Givens dönüşleri dizisi bunu yapar: nin ilk satırındaki dönüş ilk elemanını sıfırlar ; daha sonra, nin ikinci satırındaki dönüş , ikinci elemanı sıfırlar ve benzerleri. Bunun etkisi, ortogonalitesini değiştirmeyen bir dizi döndürmeyle önceden ortaya koymak dır .TTtTQ

Tasarım matrisi sütunlara sahipse ( değişkenlerine artı bir sabit gerileme uygulandığı zaman ), gereken rotasyon sayısı geçmez ve her rotasyon iki -vektör değiştirir. İçin gerekli depolama olduğu . Bu nedenle, bu algoritma hem zaman hem de uzaydaki hesaplamalı maliyetine sahiptir .p p + 1 p + 1 T O ( ( p + 1 ) 2 ) O ( ( p + 1 ) 2 )p+1pp+1p+1TO((p+1)2)O((p+1)2)

Benzer bir yaklaşım, bir satır silme işleminin regresyon üzerindeki etkisini belirlemenizi sağlar. Maindonald formül verir; öyleyse Belsley, Kuh ve Welsh . Bu nedenle, regresyon için hareketli bir pencere arıyorsanız, pencerenin verilerini dairesel bir arabellek içinde tutabilir, yeni veriye bitişik hale getirebilir ve eskisini her güncellemeyle bırakabilirsiniz. Bu güncelleştirme süresini iki katına ve ek gerektirir eni bir pencere için depolama . Görünüşe göre , darbe parametresinin analogu gibi görünüyor .k 1 / kO(k(p+1))k1/k

Üstel çürüme için, (spekülatif), bu yaklaşımı ağırlıklı en küçük karelere uyarlayabileceğinizi, her yeni değere 1'den daha büyük bir ağırlık verebileceğinizi düşünüyorum. Önceki değerleri içeren bir arabellek tutmaya veya eski verileri silmeye gerek olmamalıdır.

Referanslar

JH Maindonald, İstatistiksel Hesaplama. J. Wiley & Sons, 1984. Bölüm 4.

DA Belsley, E. Kuh, RE Welsch, Regresyon Teşhisleri: Etkili Verilerin ve Yeterlilik Kaynaklarının Belirlenmesi. J. Wiley ve Sons, 1980.


1
Maindonald'ın tarif ettiği yöntem Gentleman algoritmasıyla ilgili veya aynı mı? jstor.org/stable/2347147
46'da

6
Bu durumda ayrıca Alan Miller jstor.org/stable/2347583 adresindeki uzantılara bakın . Fortran yazılım sitesinin bir arşivi şimdi jblevins.org/mirror/amiller adresinde
05

5
P'nin altında açık bir algoritma belirir. 4 saba.kntu.ac.ir/eecd/people/aliyari/NN%20%20files/rls.pdf . Bu Googling "özyinelemeli en küçük kareler" tarafından bulunabilir. Gentleman / Maindonald yaklaşımında bir gelişme gibi görünmüyor, ancak en azından açıkça ve açıkça tanımlanmış.
whuber

2
Son bağlantı önereceğim yönteme benziyor. Kullandıkları matris kimliği, diğer yerlerde Sherman - Morrison - Woodbury kimliği olarak bilinir. Ayrıca uygulanması oldukça sayısal olarak etkilidir, ancak bir Givens rotasyonu kadar stabil olmayabilir.
kardinal

2
@suncoolsu Hmm ... Maindonald'ın kitabı, kullanmaya başladığımda yeni yayımlandı :-).
whuber

8

Doğrusal regresyon modelinizi bir durum-uzay modeline sokmak size neyin peşinde olduğunuzu verecektir. Eğer R kullanıyorsanız, dlm paketini kullanmak ve arkadaş kitabına Petris ve ark.


belki kafam karıştı ama bu bir zaman serisi modeline gönderme yapıyor gibi görünüyor? benim modelim aslında örneklerin bir zaman serisi olmadıklarından daha basit (etkili bir şekilde bağımsız (x-> y) örnekler, sadece zamanla büyük hacimlerde
toplanıyorlar

1
Evet, genel durumda bu bağımsız olmayan gözlemleri olan zaman serileri için kullanılır; ancak, her zaman sizin ilginizi çeken özel durum olan ardışık gözlemler arasında bir ilişki olduğunu varsayabilirsiniz.
F. Tusell

7

EW

E(i;W)W

WjWj+αE(i;W)Wj

α

Bu çok verimli ve sinir ağlarının tipik olarak eğitilme şekli. Çok sayıda örneği bile paralel olarak (örneğin 100 veya daha fazla) verimli bir şekilde işleyebilirsiniz.

Elbette daha sofistike optimizasyon algoritmaları (momentum, eşlenik gradyan, ...) uygulanabilir.


Bu makaleye çok benziyor eprints.pascal-network.org/archive/00002147/01/… . Jubatus adında açık kaynaklı bir projede uygulandı.
sakarin

3

Şu ana kadar kimsenin dokunmadığına şaşırdım. Doğrusal regresyonun ikinci dereceden bir nesnel işlevi vardır. Bu nedenle, herhangi bir başlangıç ​​noktasından itibaren yeni bir Raphson adımı sizi doğrudan optimaya yönlendirir. Şimdi, doğrusal regresyonunuzu zaten yaptınız diyelim. Amaç işlevi:

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

βxnew,ynew

Lnew(β)=2xnew(ynewxnewTβ)

2Lnew=xnewxnewT

Bunu yukarıda verilen eski kendir kuşuna ekleyin. O zaman sadece bir Newton Raphson adımı atın.

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

Ve bitti.


1
Lnewp,O(p3)

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

2

Standart en küçük karelere uyum regresyon katsayılarını verir

β=(XTX)1XTY

β

XTXXTYM2+Mβ

Örneğin, M = 1 ise, bir katsayısı

β=i=1Nxiyii=1Nxi2

böylece her yeni veri noktasını elde ettiğinizde hem toplamları günceller hem de oranı hesaplar ve güncellenmiş katsayıyı elde edersiniz.

XTXXTY(1λ)λ


2
β

XTXXTY

6
XX

1
C1xCxzt+1=zt+xCztzC1xt

1

Sorunları biraz yeniden yazdığınızda sorun daha kolay çözülür:

Y = y

X = [x, 1]

sonra

Y = A * X

Hesaplanarak tek bir çözüm bulundu

V = X '* X

ve

C = X '* Y

V'nin N'le N boyutuna ve C'ye N'le M boyutuna sahip olması gerektiğini unutmayın. Aradığınız parametreler daha sonra verilir:

A = inv (V) * C

Hem V hem de C, verilerinizi toplayarak hesaplandığından, her yeni örnekte A'yı hesaplayabilirsiniz. Bununla birlikte, bunun bir zaman karmaşıklığı vardır (N ^ 3).

V kare ve yarı kesin pozitif olduğundan, V'nin sayısal olarak daha stabil olmasını sağlayan bir LU ayrışması vardır. Bir matrisin tersine rank-1 güncellemelerini gerçekleştirecek algoritmalar vardır. Bunları bulun ve aradığınız etkin uygulamaya sahip olacaksınız.

Rank-1 güncelleme algoritmaları Golub ve van Loan tarafından "Matrix hesaplamaları" nda bulunabilir. Zorlu bir malzemedir, ancak bu tür algoritmalara kapsamlı bir bakış açısı vardır.

Not: Yukarıdaki yöntem, her adımda en az kareli bir tahmin sunar. X ve Y güncellemelerine kolayca ağırlık ekleyebilirsiniz. X ve Y değerleri çok büyüdüğünde, sonucu etkilemeden tek bir skalar ile ölçeklenebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.