효율적인 온라인 선형 회귀


53

일반적인 선형 회귀를 수행하려는 일부 데이터를 분석하고 있지만 연속 입력 데이터 스트림 (메모리에 비해 너무 커짐)을 사용하여 온라인 설정을 처리하고 있기 때문에 불가능합니다. 소비되는 동안 모수 추정값을 업데이트합니다. 즉, 모든 것을 메모리에로드하고 전체 데이터 세트에서 선형 회귀를 수행 할 수는 없습니다.

간단한 선형 다변량 회귀 모델을 가정합니다.

y=Ax+b+e

선형 회귀 모수 및 의 지속적으로 업데이트되는 추정치를 작성하는 가장 좋은 알고리즘은 무엇입니까 ?bAb

이상적으로 :

  • 업데이트 당 가장 공간 및 시간 복잡도 인 알고리즘을 원합니다 . 여기서 은 독립 변수의 차원 ( )이고 은 종속 변수의 차원입니다 ( ).N x M yO(NM)NxMy
  • 각 새로운 샘플에 의해 얼마나 많은 파라미터가 업데이트되는지 결정하기 위해 일부 파라미터를 지정할 수 있기를 원합니다. 예를 들어 0.000001은 다음 샘플이 백만 분의 1의 파라미터 추정치를 제공한다는 것을 의미합니다. 이것은 먼 과거에 샘플의 효과에 대해 일종의 지수 붕괴를 제공합니다.

2
(1) 유연한 선형 회귀, (2) 칼만 필터를 찾습니다.
Jase

답변:


31

Maindonald는 Givens 회전을 기반으로 한 순차적 인 방법을 설명합니다 . (주석 회전은 벡터 중 하나에서 주어진 항목을 0으로 만드는 두 벡터의 직교 변환입니다.) 이전 단계에서 설계 행렬 을 삼각 행렬 로 분해했습니다 . 직교 변환 그래서 . (삼각형 행렬에서 회귀 결과를 빠르고 쉽게 얻을 수 있습니다.) 아래에 새 행 를 접하면 이 아닌 행으로 을 효과적으로 확장 할 수 있습니다 , 라고도T Q Q X = ( T , 0 ) v X ( T , 0 ) t T T t T QXTQQX=(T,0)vX(T,0)t. 태스크는 대각선 위치에 항목을 유지하면서이 행을 제로화하는 것 입니다. 주어진 일련의 회전은 다음을 수행합니다. 의 첫 번째 행을 사용한 회전 은 의 첫 번째 요소를 0으로합니다 . 그런 다음 의 두 번째 행을 사용한 회전 은 두 번째 요소를 0으로합니다. 그 효과는 직교성을 바꾸지 않는 일련의 회전에 의해 를 미리 곱하는 것 입니다.TTtTQ

설계 행렬에 열이있는 경우 ( 변수에 상수를 더한 상수 인 경우), 필요한 회전 수는 초과하지 않으며 각 회전마다 두 개의 벡터가 변경 됩니다. 필요한 스토리지 는 입니다. 따라서이 알고리즘은 시간과 공간 모두에서 계산 비용이 입니다.p+1p + 1 p + 1 T O ( ( p + 1 ) 2 ) O ( ( p + 1 ) 2 )pp+1p+1TO((p+1)2)O((p+1)2)

비슷한 접근 방식을 사용하면 행 삭제의 회귀에 미치는 영향을 결정할 수 있습니다. Maindonald는 공식을 제공합니다. Belsley, Kuh, & Welsh마찬가지 입니다. 따라서 회귀를위한 이동 창을 찾는 경우 원형 버퍼 내에 창에 대한 데이터를 유지하여 새 데이텀에 인접하고 각 업데이트마다 이전 데이텀을 삭제합니다. 업데이트 시간을 두 배로 늘리고 너비 의 창에 대해 추가 스토리지가 필요합니다 . 가 영향 매개 변수의 아날로그 인 것으로 보입니다 .(K) 1 / KO(k(p+1))k1/k

지수 붕괴의 경우 (추론 적으로)이 접근법을 가중 최소 제곱에 적용하여 각 새 값에 1보다 큰 가중치를 부여 할 수 있다고 생각합니다. 이전 값의 버퍼를 유지하거나 이전 데이터를 삭제할 필요는 없습니다.

참고 문헌

JH Maindonald, 통계 계산. J. Wiley & Sons, 1984. 제 4 장.

DA Belsley, E. Kuh, RE Welsch, 회귀 진단 : 영향력있는 데이터 및 공선 성의 출처 식별. J. Wiley & Sons, 1980.


1
Maindonald가 설명하는 방법이 Gentleman의 알고리즘과 관련이 있거나 동일합니까? jstor.org/stable/2347147
의 OneStop

6
이 경우 Alan Miller jstor.org/stable/2347583 의 확장 기능도 참조하십시오 . 그의 포트란 소프트웨어 사이트의 아카이브에서 지금 jblevins.org/mirror/amiller
의 OneStop

5
p의 맨 아래에 명시 적 알고리즘이 나타납니다. 4 saba.kntu.ac.ir/eecd/people/aliyari/NN%20%20files/rls.pdf . 이것은 인터넷 검색 "재귀 최소 제곱"에 의해 찾을 수 있습니다. Gentleman / Maindonald 접근 방식에서는 개선 된 것처럼 보이지 않지만 최소한 명확하고 명시 적으로 설명되어 있습니다.
whuber

2
마지막 링크는 내가 제안하려고했던 방법처럼 보입니다. 그들이 사용하는 매트릭스 정체성은 다른 곳에서 셔먼-모리슨-우드버리 정체성으로 알려져 있습니다. 구현하는 것도 상당히 효율적이지만 Givens 회전만큼 안정적이지 않을 수 있습니다.
추기경

2
@suncoolsu Hmm ... Maindonald의 책은 내가 그것을 사용하기 시작할 때 새로 출판되었다 ​​:-).
whuber

8

선형 회귀 모델을 상태 공간 모델 로 다시 캐스팅하면 나중의 결과를 얻을 수 있다고 생각합니다 . 당신은 R을 사용하는 경우, 패키지 사용할 수 있습니다 DLM을 하고, 한 번 봐 가지고 동반자 책 Petris의 외 알에 의해합니다.


어쩌면 혼란 스럽지만 시계열 모델을 나타내는 것으로 보입니까? 내 모델은 실제로 샘플이 시계열이 아니라는 점에서 더 단순합니다 (효과적으로 독립적 (x-> y) 샘플이며 시간이 지남에 따라 대량으로
축적됨

1
그렇습니다. 일반적인 경우에 이것은 독립적이지 않은 관찰과 시계열에 사용됩니다. 그러나 당신은 항상 당신에게 특별한 관심사를주는 연속적인 관측들 사이의 상관 관계를 가정 할 수 있습니다.
F. Tusell

7

모델 의 매개 변수로 제곱 비용 의 합으로 항상 경사 하강을 수행 할 수 있습니다 . 그냥 그레디언트를 취하고 닫힌 양식 솔루션은 사용하지 말고 검색 방향으로 이동하십시오.EW

하자 훈련 샘플 i 번째 주어진 매개 변수의 비용이 될 . j 번째 매개 변수에 대한 업데이트는WE(i;W)W

WjWj+αE(i;W)Wj

여기서 는 단계 속도이며 교차 검증 또는 적절한 측정을 통해 선택해야합니다.α

이것은 매우 효율적이며 신경망이 일반적으로 훈련되는 방식입니다. 많은 샘플을 병렬 (예 : 100 정도)로 효율적으로 처리 할 수 ​​있습니다.

물론보다 정교한 최적화 알고리즘 (모멘텀, 켤레 기울기 등)을 적용 할 수 있습니다.


이 백서 eprints.pascal-network.org/archive/00002147/01/… 와 매우 유사합니다 . Jubatus라는 오픈 소스 프로젝트에서 구현되었습니다.
saccharine

3

지금까지 아무도 다른 사람을 만지지 않았습니다. 선형 회귀에는 2 차 목적 함수가 있습니다. 따라서 시작점에서 뉴턴 라프 슨 단계를 거치면 바로 최적 상태로 연결됩니다. 이제 선형 회귀 분석을 수행했다고 가정 해 봅시다. 목적 함수는 다음과 같습니다.

L(β)=(yXβ)t(yXβ)
그라디언트는 그리고 hessian :
L(β)=2Xt(yXβ)
2L(β)=XtX

이제 과거 데이터를 얻었고 선형 회귀를 수행했으며 매개 변수 ( ) 와 함께 앉아 있습니다 . 이 점에서의 기울기는 정의상 0입니다. 헤 시안은 위와 같습니다. 새로운 데이터 포인트 ( )가 도착합니다. 다음을 통해 새 포인트의 그라디언트를 계산하면됩니다.βxnew,ynew

Lnew(β)=2xnew(ynewxnewTβ)
이며 전체 데이터의 기울기가됩니다 (기존 데이터의 기울기가 0이므로) . 새로운 데이터 포인트에 대한 헤 시안은 다음과 같습니다.

2Lnew=xnewxnewT
.

위에 주어진 오래된 헤 시안에게 이것을 추가하십시오. 그런 다음 Newton Raphson 단계를 수행하십시오.

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

그리고 당신은 끝났습니다.


1
나는 그 단순성에 대한 아이디어를 좋아하지만 (a) 혼란스러워하는 독자들을 위해 " "에 대한 명확한 정의를보고 (b) 그래디언트를 정확하게 계산해야한다고 생각하거나 2의 요인에 의해 꺼져있는 것은 중요하지 않습니다). 이것이 올바른지 보여주는 작은 예를들 수 있다면 더 설득력이있을 것입니다. 더 큰 경우 계산 노력을 추정하는 것이 좋습니다. Hessian을 뒤집는 데 시간이 걸리지 않습니까? Lnewp,O(p3)
whuber

감사합니다. 오늘 조금 더 자세한 내용을 추가하겠습니다. 예, 헤 시안을 거꾸로 돌리려면 큰 가 걸립니다 . 또한 hessian 역을 시도하고 유지하고 power series ( )를 사용하여 직접 업데이트 할 수 있습니다 . 백만 개의 매개 변수가있는 경우 그래디언트 디센트는 거의 유일한 옵션입니다. O(p3)p(IA)1=I+A+A2+
ryu576

2

표준 최소 제곱 적합은 회귀 계수를 제공합니다.

β=(XTX)1XTY

여기서 X는 N 개의 데이터 점 각각에 대한 M 값의 행렬이며 크기는 NXM입니다. Y는 출력의 NX1 행렬입니다. 는 물론 MX1 계수 행렬입니다. (절편을 원하면 x 세트 중 하나를 항상 1과 동일하게 만드십시오.)β

온라인으로 만들려면 및 추적 하면되므로 MXM 행렬 하나와 MX1 행렬 하나만 추적하면 됩니다. 새로운 데이터 포인트를 얻을 때마다 해당 요소 를 업데이트 한 다음 다시 계산 하면 MXM 행렬 반전 및 MXM 행렬과 MX1 행렬의 곱셈이 발생합니다.XTXXTYM2+Mβ

예를 들어, M = 1 인 경우 하나의 계수는

β=i=1Nxiyii=1Nxi2

따라서 새로운 데이터 포인트를 얻을 때마다 두 합계를 업데이트하고 비율을 계산하고 업데이트 된 계수를 얻습니다.

초기 추정치를 기하학적으로 감추고 싶다면 새 용어를 추가하기 전에 매번 및 에 씩 가중치를 부여 할 수 있다고 가정합니다 . 여기서 는 약간의 숫자입니다.X T Y ( 1 λ ) λXTXXTY(1λ)λ


2
이 간단한 사례를 설명하는 것이 좋습니다. 그러나 다변량 회귀 에 대한 질문이 구체적으로 나타나는 것을 알았습니까? 이 경우 의 분모를 업데이트하는 것은 쉽지 않습니다 ! β
whuber

내 대답은 여전히 ​​작동한다고 생각합니다. 즉, MxM 행렬 및 Mx1 행렬 추적해야합니다 . 이러한 행렬의 각 요소는 M = 1 예제와 같은 합입니다. 아니면 뭔가 빠졌습니까? X T YXTXXTY
마크 히긴스

6
예 : 행렬 곱을 계산하고 벡터에 행렬을 적용하는 것 외에도 이제 각 단계에서 를 반전 합니다. 그건 비싸. 온라인 알고리즘의 요점은 값 비싼 단계를보다 저렴한 업데이트 절차로 대체하는 것입니다. XX
whuber

1
@whuber 그런데, 변화하는 행렬 와 벡터 대한 를 추정하는 빠른 온라인 방법 은 Schraudolph, NN (2002)에 의해 주어진다. 2 차 경사 하강을위한 빠른 곡률 매트릭스 벡터 제품. 본질적으로 , 를 . C x z t + 1 = z t + x C z t z C 1 x t C1xCxzt+1=zt+xCztzC1xt
Neil G

1

약간만 다시 작성하면 문제가 더 쉽게 해결됩니다.

Y = y

X = [x, 1]

그때

Y = A * X

한 번의 해결책은 다음과 같이 계산하여 구합니다.

V = X '* X

C = X '* Y

V의 크기는 NxN, C의 크기는 NxM이어야합니다. 원하는 매개 변수는 다음과 같습니다.

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.