lm()
을 2 개의 예측 변수가있는 50M + 관측치가있는 큰 데이터 세트에 실행하고 싶습니다. 분석은 데이터 저장을위한 10GB 만있는 원격 서버에서 실행됩니다. 데이터에서 샘플링 된 10K 관측치에서 'lm() '을 테스트했으며 결과 객체의 크기는 2GB +였습니다.클래스 "lm"의 객체 크기를 최소화하는 방법 predict()에 전달되는 것을 손상시키지 않고
나는 ONLY 모델 (summary(lm_object)
)의 요약 통계를 생산하고 (predict(lm_object)
를) 예측을 할 lm()
에서 반환 된 클래스 "LM"의 목적을해야합니다.
model, x, y, qr
이 lm
인 일부 실험을 수행했습니다. 내가 FALSE
에 그들 모두를 설정하면 나는
library(MASS)
fit1=lm(medv~lstat,data=Boston)
size1 <- object.size(fit1)
print(size1, units = "Kb")
# 127.4 Kb bytes
fit2=lm(medv~lstat,data=Boston,model=F,x=F,y=F,qr=F)
size2 <- object.size(fit2)
print(size2, units = "Kb")
# 78.5 Kb Kb bytes
- ((as.integer(size1) - as.integer(size2))/as.integer(size1)) * 100
# -38.37994
하지만
summary(fit2)
# Error in qr.lm(object) : lm object does not have a proper 'qr' component.
# Rank zero or should not have used lm(.., qr=FALSE).
predict(fit2,data=Boston)
# Error in qr.lm(object) : lm object does not have a proper 'qr' component.
# Rank zero or should not have used lm(.., qr=FALSE).
가 분명히 나는 기본 객체와 비교하면 9 %로 객체의 크기를 줄일 수 qr=TRUE
을 유지할 필요가 38 %로 크기를 줄일
fit3=lm(medv~lstat,data=Boston,model=F,x=F,y=F,qr=T)
size3 <- object.size(fit3)
print(size3, units = "Kb")
# 115.8 Kb
- ((as.integer(size1) - as.integer(size3))/as.integer(size1)) * 100
# -9.142752
어떻게 메모리와 저장에 불필요한 많은 정보를 덤핑없이 최소로 "LM"개체의 크기를 가지고 있습니까?
+1 흥미로운 질문입니다. 아직 각 옵션을 직접 사용하지 않으려하지 않으셨습니까? 그런데 TRUE와 FALSE를 쓰는 것이 더 안전합니다. 나중에 이름을 잊어 버리고 변수를 만들 수 있습니다. – Frank
답변을 찾을 수 있으리라 확신합니다. http://stackoverflow.com/questions/15260429/is-there-a-way-to-compress-an-lm-class-for-later-prediction/15260950#15260950 또는 거기에 링크되어있는 질문들 중 하나 – mnel
단지 l00만이 1 천만 개의 관측치를 사용하여 2GB 객체가 될 수있는 것을 보지 못했습니다.데이터 집합에 몇 개의 열이 있습니까? –