È possibile utilizzare biglm
per adattarsi ai modelli, un oggetto modello biglm
è minore di un oggetto modello lm. È possibile utilizzare predict.biglm
per creare una funzione a cui è possibile passare la matrice di design newdata, che restituisce i valori previsti.
Un'altra opzione è utilizzare saveRDS
per salvare i file, che sembrano essere leggermente più piccoli, in quanto hanno meno overhead, essendo un singolo oggetto, non come il salvataggio che può salvare più oggetti.
library(biglm)
m <- lm(log(Volume)~log(Girth)+log(Height), trees)
mm <- lm(log(Volume)~log(Girth)+log(Height), trees, model = FALSE, x =FALSE, y = FALSE)
bm <- biglm(log(Volume)~log(Girth)+log(Height), trees)
pred <- predict(bm, make.function = TRUE)
save(m, file = 'm.rdata')
save(mm, file = 'mm.rdata')
save(bm, file = 'bm.rdata')
save(pred, file = 'pred.rdata')
saveRDS(m, file = 'm.rds')
saveRDS(mm, file = 'mm.rds')
saveRDS(bm, file = 'bm.rds')
saveRDS(pred, file = 'pred.rds')
file.info(paste(rep(c('m','mm','bm','pred'),each=2) ,c('.rdata','.rds'),sep=''))
# size isdir mode mtime ctime atime exe
# m.rdata 2806 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:23 2013-03-07 11:29:30 no
# m.rds 2798 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# mm.rdata 2113 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:28 2013-03-07 11:29:30 no
# mm.rds 2102 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# bm.rdata 592 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:34 2013-03-07 11:29:30 no
# bm.rds 583 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:29:30 2013-03-07 11:29:30 no
# pred.rdata 1007 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:24:40 2013-03-07 11:29:30 no
# pred.rds 995 FALSE 666 2013-03-07 11:29:30 2013-03-07 11:27:30 2013-03-07 11:29:30 no
Inoltre, nello spirito di [questo] (http://stackoverflow.com/questions/2929776/how-to-save-a-fitted-r-model-for-later-use?rq= 1) domanda, ho provato a impostare 'model = FALSE' ma non ha avuto alcun effetto notevole. –
Se i big data stanno causando il tuo problema allora 'biglm' potrebbe essere la risposta. Un oggetto della classe 'biglm' è più piccolo di' lm', e ci sono altri 'efficienze grandi data' – mnel
In realtà il problema non è la dimensione dei dati in memoria, è la velocità che cercavo con la previsione() funzione. Il mio script stava creando un modello aggiornato di notte che veniva chiamato tramite RPy2 per fare previsioni per gli utenti finali. Con il modello 142mb, ci voleva del tempo per caricare ogni richiesta. –