[R] online updating problem

2023. 10. 21. 21:38R, 빅데이터 분석 실험

기존의 값으로 선형 회귀 분석을 끝냈다.

하지만 빅데이터는 계속 쌓이는데 이걸 실시간으로 업데이트 할 수는 없는걸까?

가능하다!

 

이전 massive data problem을 풀며 X^tX , X^ty 를 모아 한번에 계산하면 분할해서 합치는 것이나 한번에 하는것이나 동일함을

알아보았다.

 

A와 B 행렬을 정의하고 해당 행렬에 각각 X^tX , X^ty 모아둔다.

그후 기존에 A,B 와 new X^tX , X^ty 를 각각 더한다.

A,B 로 다시 선형회귀를 진행하면 된다.

 

예시로 주식에 대해 생각해보자

1년동안 주식 데이터를 모아 이를 통해 선형 회귀 분석을 하고 1년주기로 A와 B행렬을 업데이트하며 다시 분석하면 된다.

install.packages("quantmod")
library(quantmod)
A = matrix(0,3,3)
B = matrix(0,3,1)
start <- as.Date("2020-01-01")
end <- as.Date("2021-01-01")
getSymbols("MSFT",src="yahoo",from=start ,to=end)
y <- as.numeric(MSFT[,4])
n<-length(y)
X<-as.matrix(cbind(rep(1,n),MSFT[,1:2]))
A <- A + t(X)%*%X
B <- B + t(X)%*%y
start <- as.Date("2021-01-01")
end <- as.Date("2022-01-01")
getSymbols("MSFT",src="yahoo",from=start ,to=end)
y <- as.numeric(MSFT[,4])
n<-length(y)
X<-as.matrix(cbind(rep(1,n),MSFT[,1:2]))
A <- A + t(X)%*%X
B <- B + t(X)%*%y
start <- as.Date("2022-01-01")
end <- as.Date("2023-01-01")
getSymbols("MSFT",src="yahoo",from=start ,to=end)
y <- as.numeric(MSFT[,4])
n<-length(y)
X<-as.matrix(cbind(rep(1,n),MSFT[,1:2]))
A <- A + t(X)%*%X
B <- B + t(X)%*%y
start <- as.Date("2023-01-01")
end <- as.Date("2023-09-01")
getSymbols("MSFT",src="yahoo",from=start ,to=end)
y <- as.numeric(MSFT[,4])
n<-length(y)
X<-as.matrix(cbind(rep(1,n),MSFT[,1:2]))
A <- A + t(X)%*%X
B <- B + t(X)%*%y
r = solve(A) %*% B
r

 

해당 결과를 확인 할 수 있다.