"실행"선형 또는 로지스틱 회귀 매개 변수를 계산하는 알고리즘이 있습니까?


32

http://www.johndcook.com/standard_deviation.html의 "정확하게 실행 분산 계산"이라는 논문 은 실행 평균, 분산 및 표준 편차를 계산하는 방법을 보여줍니다.

선형 또는 로지스틱 회귀 모델의 매개 변수가 각각의 새로운 훈련 레코드가 제공 될 때 유사하게 "동적으로"업데이트 될 수있는 알고리즘이 있습니까?


1
거대한 트레이닝 세트 또는 연속적인 입력 데이터 스트림을 사용하면 Stochastic Gradient Descent와 같은 반복 알고리즘을 사용하고 이동하면서 입력을 작은 배치로 가져올 수 있습니다. 그게 당신이 요구 한 것입니까?
andreister

1
조회 RLS 알고리즘 및 해당 변형 en.wikipedia.org/wiki/Recursive_least_squares_filter
Memming

답변:


20

의 선형 회귀 계수 y=ax+b 이다 = C O V ( X , Y ) / V R ( X )(B) = m은 전자 N ( Y ) - m은 전자 N ( X를 ) .a=cov(x,y)/var(x)b=mean(y)amean(x)

따라서 실제로 필요한 것은 cov(x,y) 를 계산하는 증분 방법 입니다. 이 값과 x 의 분산 및 yx 의 평균 에서 모수 ab 계산할 수 있습니다 . 아래 의사 코드에서 알 수 있듯이 기음영형V(엑스,와이) 증분 계산은 V에이아르 자형(엑스) 의 증분 계산과 매우 유사합니다 . v a r 이기 때문에 이것은 놀라운 일이 아닙니다.V에이아르 자형(엑스)=기음영형V(엑스,엑스) 입니다.

찾고있는 의사 코드는 다음과 같습니다.

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

증분 같은 다중 변량 회귀 계산 등가 알고리즘을 검색하는 동안이 문제를 발견 아르 자형=(엑스'엑스)1엑스'와이 되도록 엑스아르 자형=와이+ϵ


4
당신의 기여에 감사드립니다! 선형 회귀에 대한 질문의 일부는 실제로 stats.stackexchange.com/questions/6920/… 의 복제본입니다 . 그 답변은 다중 선형 회귀 모델을 업데이트하는 방법을 보여줍니다. 문제의 로지스틱 회귀 부분이 독립적으로 관심이 있기 때문에 현재 스레드가 유효합니다 . 실제로 물류 부분조차도 stats.stackexchange.com/questions/59174/… 에 복제되었습니다 .
whuber

1
나는이 답변이 질문에 주어진 참고 문헌을 고려할 때 유용 할 것이라고 생각했습니다. 링크 주셔서 감사합니다. 그러나 그것은 내가 찾고있는 것이 아닙니다. 내 유스 케이스는 분명히 특별합니다.
chmike

3
나는 그것이 유용 할 수 있다고 생각하고 작업 코드를 제공하는 데 독창적입니다.
whuber

왜 dx * dy times (n-1) / n을 허용합니까?
FavorMylikes

p- 값을 계산하기 위해 코드를 개선 할 수 있습니까?
Nathan

12

두 가지 구체적인 예를 들면 다음과 같습니다.

선형 회귀 분석 Alexander Strehl와 Michael Littman의 "온라인 선형 회귀 분석 및 모델 기반 강화 학습에의 응용" 논문 은 "KWIK 선형 회귀"(알고리즘 1 참조)라는 알고리즘에 대해 설명합니다. . 이것은 정규화되지 않았습니다 (즉, 리지 회귀 분석이 아님). Strehl & Littman의 방법이 해당 설정으로 확장 될 수 없다고 확신합니다.

로지스틱 회귀

이 실은 그 문제에 약간의 빛을 비 춥니 다. 인용 :

정규화 제약이 없어도 로지스틱 회귀는 비선형 최적화 문제입니다. 이미 여기에는 분석 솔루션이 없으며, 일반적으로 업데이트 솔루션을 도출하기위한 전제 조건입니다. 정규화 제약 조건에서는 제한적인 최적화 문제가됩니다. 이것은 제한되지 않은 문제가 이미 가지고 있었던 것 외에 완전히 새로운 비 분석적 합병증을 소개합니다.

그러나 LWPR (Locally Weighted Projection Regression )과 같은 다른 온라인 (또는 증분) 회귀 분석 방법이 있습니다.


로지스틱 회귀 분석에 대해서는 불필요하게 비관적이라고 생각합니다. 로지스틱 회귀 분석은 다른 방법과 공유 공분산을 사용하여 각 클래스 가우시안이 분포 된 2 클래스 문제에 대한 사후 클래스 확률을 계산하는 것과 같습니다. 공분산에 대한 MLE는 클래스 별 공분산의 가중 합계이므로 충분한 통계는 클래스 당 개수, 합 및 제곱합입니다. 충분한 통계를 사용하여 정확한 업데이트를 쉽게 얻을 수 있습니다.
Robert Dodier

3
@RobertDodier 로지스틱 회귀 분석이 아니라 선형 판별 분석에 대해 설명했습니다. 소개 섹션의 마지막 단락은 여기 의 관계를 명확하게.
ahfoss

@ahfoss 클래스 별 데이터가 정규 분포를 따르지 않아도 클래스 별 공분산을 통해 로지스틱 회귀에 해당하는 모델을 구성 할 수 있습니다.
Robert Dodier

1
@RobertDodier 동등한 모델은 무엇입니까? 실제로 어려운 문제에 대한 확실한 해결책이 있음을 암시하는 것 같습니다. 귀하의 솔루션은 귀하가 생각하는 것보다 더 훌륭하거나 훨씬 적습니다.
ahfoss

11

일반적인 원칙으로 :

0) 충분한 통계와 현재 ML 추정값을 유지합니다

1) 새 데이터를 받으면 충분한 통계와 추정치를 업데이트하십시오.

2) 통계가 충분하지 않으면 모든 데이터를 사용해야합니다.

3) 일반적으로 폐쇄 형 솔루션이 없습니다. 이전 MLE를 시작점으로 사용하고 편리한 최적화 방법을 사용하여 새로운 최적 위치를 찾으십시오. 특정 종류의 문제 인스턴스에 가장 적합한 절충 방법을 찾기 위해 약간의 실험이 필요할 수 있습니다.

문제의 구조가 특수한 경우 문제를 악용 할 수 있습니다.

가치가 있거나 없을 수있는 몇 가지 잠재적 참조 :

McMahan, HB 및 M. Streeter (2012),
개방형 문제 : 온라인 로지스틱 회귀를위한 더 나은 경계 ,
JMLR : 워크샵 및 회의 진행 , vol 23, 44.1–44.3

페니, WD 및 SJ Roberts (1999),
동적 로지스틱 회귀 분석 ,
절차 IJCNN '99


충분한 통계를 유지한다는 아이디어에 동의하지만 (문제에 대한 통계가 존재하는 경우), 충분한 통계가 있어도 다른 것들이 불필요하지 않습니까? 통계가 충분하면 전체 데이터 세트를 사용한 것처럼 업데이트 된 매개 변수를 정확하게 계산할 수 있습니다. 현재 매개 변수를 고려할 필요가 없으며 최적화 방법을 실험 할 필요가 없습니다.
Robert Dodier

2
통계가 충분하다고해서 방정식에 대한 솔루션이 있음을 의미하지는 않습니다.
Glen_b-복지 주 모니카

8

tdc의 답에 덧붙여서, 일정한 반복 시간으로 특정 시점에서 계수의 정확한 추정치를 계산하는 알려진 방법은 없습니다. 그러나 합리적이고 흥미로운 대안이 있습니다.

가장 먼저 볼 모델은 온라인 학습 설정입니다. 이 설정에서 세계는 먼저 x의 값을 발표하고 알고리즘은 y에 대한 값을 예측하고 세계는 실제 값 y '를 발표하며 알고리즘은 손실 l (y, y')을 겪습니다. 이 설정에 대해 간단한 알고리즘 (그라디언트 디센트 및 지수 그라디언트)이 하위 선형 후회를 달성하는 것으로 알려져 있습니다. 즉, 더 많은 예제를 볼수록 알고리즘에서 발생하는 추가 실수의 수가 (최선의 선형 예측 변수와 비교할 때) 예제 수에 따라 증가하지 않습니다. 이것은 대적 설정에서도 작동합니다. 이 후회 경계를 증명하는 인기있는 전략 중 하나를 설명 하는 좋은 논문 이 있습니다 . Shai Shalev-Schwartz의 강의 노트 도 유용합니다.

산적 설정이라는 온라인 학습 설정의 확장이 있으며 알고리즘에는 알고리즘의 잘못된 정도를 나타내는 숫자 만 제공됩니다 (올바른 답변에 대한 포인터는 없음). 놀랍게도 온라인 학습의 많은 결과는이 설정으로 이어집니다. 단, 여기에는 악용뿐만 아니라 탐색도 강요되어 모든 종류의 흥미로운 도전이 있습니다.


6

다른 답변은 머신 러닝의 세계를 지적했으며, 분명히이 문제가 해결 된 곳입니다.

그러나 귀하의 요구에 더 적합한 다른 접근 방식은 낮은 순위 업데이트로 QR 인수 분해를 사용하는 것입니다. 이 작업을 수행하고 최소 제곱 문제를 해결하기 위해 사용하는 방법은 다음과 같습니다.

Hammerling과 Lucas에 의해 QR 인수 분해 및 최소 제곱 문제업데이트합니다 .


5

와이=β엑스+ε,β=β1+η
β=β1

와이=영형나는(β엑스+ε),β=β1+η

2

이것은 @chmike 답변에 추가하는 것입니다.

이 방법은 평균을 계산하는 표준 편차에 대한 BP Welford의 온라인 알고리즘과 유사한 것으로 보입니다. 존 쿡은 여기서 좋은 설명을한다 . 2009 년 Tony Finch는 지수 이동 평균 및 표준 편차에 대한 방법을 제공합니다.

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) )

위의 "code"에서 desiredAlpha는 0으로 설정 될 수 있으며, 그렇다면 지수 가중없이 코드가 작동합니다. 이동 창 크기에 대해 Modified_moving_average 에서 제안한대로 desiredAlpha를 1 / desiredWindowSize로 설정하도록 제안 할 수 있습니다 .

사이드 질문 : 위의 대안 계산 중 정밀한 관점에서 더 나은 의견이 있습니까?

참고 문헌 :

chmike (2013) https://stats.stackexchange.com/a/79845/70282

Cook, John (nd) 실행 분산을 정확하게 계산 http://www.johndcook.com/blog/standard_deviation/

핀치, 토니 가중 평균 및 분산의 증분 계산 (2009). https://fanf2.user.srcf.net/hermes/doc/antiforgery/stats.pdf

위키 백과. 웰 포드의 온라인 알고리즘 https://ko.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.