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를 ) .
따라서 실제로 필요한 것은 를 계산하는 증분 방법 입니다. 이 값과 의 분산 및 와 의 평균 에서 모수 와 계산할 수 있습니다 . 아래 의사 코드에서 알 수 있듯이 증분 계산은 의 증분 계산과 매우 유사합니다 . v a r 이기 때문에 이것은 놀라운 일이 아닙니다. 입니다.
찾고있는 의사 코드는 다음과 같습니다.
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
증분 같은 다중 변량 회귀 계산 등가 알고리즘을 검색하는 동안이 문제를 발견 되도록
두 가지 구체적인 예를 들면 다음과 같습니다.
선형 회귀 분석 Alexander Strehl와 Michael Littman의 "온라인 선형 회귀 분석 및 모델 기반 강화 학습에의 응용" 논문 은 "KWIK 선형 회귀"(알고리즘 1 참조)라는 알고리즘에 대해 설명합니다. . 이것은 정규화되지 않았습니다 (즉, 리지 회귀 분석이 아님). Strehl & Littman의 방법이 해당 설정으로 확장 될 수 없다고 확신합니다.
로지스틱 회귀
이 실은 그 문제에 약간의 빛을 비 춥니 다. 인용 :
정규화 제약이 없어도 로지스틱 회귀는 비선형 최적화 문제입니다. 이미 여기에는 분석 솔루션이 없으며, 일반적으로 업데이트 솔루션을 도출하기위한 전제 조건입니다. 정규화 제약 조건에서는 제한적인 최적화 문제가됩니다. 이것은 제한되지 않은 문제가 이미 가지고 있었던 것 외에 완전히 새로운 비 분석적 합병증을 소개합니다.
그러나 LWPR (Locally Weighted Projection Regression )과 같은 다른 온라인 (또는 증분) 회귀 분석 방법이 있습니다.
일반적인 원칙으로 :
0) 충분한 통계와 현재 ML 추정값을 유지합니다
1) 새 데이터를 받으면 충분한 통계와 추정치를 업데이트하십시오.
2) 통계가 충분하지 않으면 모든 데이터를 사용해야합니다.
3) 일반적으로 폐쇄 형 솔루션이 없습니다. 이전 MLE를 시작점으로 사용하고 편리한 최적화 방법을 사용하여 새로운 최적 위치를 찾으십시오. 특정 종류의 문제 인스턴스에 가장 적합한 절충 방법을 찾기 위해 약간의 실험이 필요할 수 있습니다.
문제의 구조가 특수한 경우 문제를 악용 할 수 있습니다.
가치가 있거나 없을 수있는 몇 가지 잠재적 참조 :
McMahan, HB 및 M. Streeter (2012),
개방형 문제 : 온라인 로지스틱 회귀를위한 더 나은 경계 ,
JMLR : 워크샵 및 회의 진행 , vol 23, 44.1–44.3
페니, WD 및 SJ Roberts (1999),
동적 로지스틱 회귀 분석 ,
절차 IJCNN '99
tdc의 답에 덧붙여서, 일정한 반복 시간으로 특정 시점에서 계수의 정확한 추정치를 계산하는 알려진 방법은 없습니다. 그러나 합리적이고 흥미로운 대안이 있습니다.
가장 먼저 볼 모델은 온라인 학습 설정입니다. 이 설정에서 세계는 먼저 x의 값을 발표하고 알고리즘은 y에 대한 값을 예측하고 세계는 실제 값 y '를 발표하며 알고리즘은 손실 l (y, y')을 겪습니다. 이 설정에 대해 간단한 알고리즘 (그라디언트 디센트 및 지수 그라디언트)이 하위 선형 후회를 달성하는 것으로 알려져 있습니다. 즉, 더 많은 예제를 볼수록 알고리즘에서 발생하는 추가 실수의 수가 (최선의 선형 예측 변수와 비교할 때) 예제 수에 따라 증가하지 않습니다. 이것은 대적 설정에서도 작동합니다. 이 후회 경계를 증명하는 인기있는 전략 중 하나를 설명 하는 좋은 논문 이 있습니다 . Shai Shalev-Schwartz의 강의 노트 도 유용합니다.
산적 설정이라는 온라인 학습 설정의 확장이 있으며 알고리즘에는 알고리즘의 잘못된 정도를 나타내는 숫자 만 제공됩니다 (올바른 답변에 대한 포인터는 없음). 놀랍게도 온라인 학습의 많은 결과는이 설정으로 이어집니다. 단, 여기에는 악용뿐만 아니라 탐색도 강요되어 모든 종류의 흥미로운 도전이 있습니다.
다른 답변은 머신 러닝의 세계를 지적했으며, 분명히이 문제가 해결 된 곳입니다.
그러나 귀하의 요구에 더 적합한 다른 접근 방식은 낮은 순위 업데이트로 QR 인수 분해를 사용하는 것입니다. 이 작업을 수행하고 최소 제곱 문제를 해결하기 위해 사용하는 방법은 다음과 같습니다.
Hammerling과 Lucas에 의해 QR 인수 분해 및 최소 제곱 문제 를 업데이트합니다 .
이것은 @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