Esiste un modo per inviare dati per addestrare un modello in Vowpal Wabbit senza scriverlo su disco?Leggi i dati dalla memoria in Vowpal Wabbit?
Ecco cosa sto cercando di fare. Ho un dataset relativamente grande in csv (circa 2gb) che si adatta alla memoria senza problemi. Lo carico in R in un frame di dati, e ho una funzione per convertire i dati in quel dataframe in formato VW.
Ora, per addestrare un modello, devo prima scrivere i dati convertiti in un file e poi inviarlo a VW. E la scrittura su disco parte troppo tempo, soprattutto perché voglio provare diversi modelli con diverse trasformazioni di funzionalità, e quindi devo scrivere i dati su disco più volte.
Quindi, supponendo che io sia in grado di creare un vettore di caratteri in R, in cui ogni elemento è una riga di dati in formato VW, come potrei inserirlo in VW senza scriverlo su disco?
Ho considerato l'utilizzo della modalità daemon e la scrittura del vettore di caratteri su una connessione localhost, ma non ho potuto ottenere VW a treno in modalità daemon: non sono sicuro che ciò sia possibile.
Sono disposto a utilizzare C++ (tramite il pacchetto Rcpp) se necessario per farlo funzionare.
Grazie mille in anticipo.
UPDATE:
Grazie a tutti per il vostro aiuto. Nel caso in cui qualcuno è interessato, ho appena convogliato l'output a VW come suggerito nella risposta, in questo modo:
# Two sample rows of data
datarows <- c("1 |name 1:1 2:4 4:1", "-1 |name 1:1 4:1")
# Open connection to VW
con <- pipe("vw -f my_model.vw")
# Write to connection and close
writeLines(datarows, con)
close(con)
Grazie mille. Per chiarire, se uso il trucco di esempio fittizio "salva", il modello salvato sarà basato su tutti gli esempi inviati al demone fino a quel punto, giusto? – user3856970
Sì, il modello salvato sarà basato su tutti gli esempi inviati al demone fino a quel momento (e come al solito con l'apprendimento online, gli esempi successivi influenzano maggiormente il modello). –