Stavo cercando un'implementazione HMM in R per analizzare gli stati in una stringa di caratteri e la libreria HMM sembra funzionare lentamente, quindi sto usando la libreria RHmm.r - viterbi RHmm Errore protezione stack overflow
miei dati è una stringa di 1953138 simboli (U, D, N)
questo è un esempio dei miei dati:
string <- sample(c("D","U","N"),1953138,replace=T)
raccordo HMM
HMM <- HMMFit(string,dis="DISCRETE",nStates=3)$HMM
esecuzione Viterbi e qui è dove ho l'errore
viterbi_results <- viterbi(HMM,string)
#Error: protect(): protection stack overflow
.210
Tuttavia, se io uso solo un sottoinsieme della Viterbi stringa() funziona bene:
viterbi_results <- viterbi(HMM,string[1:49963])
In realtà se si tenta di eseguire:
viterbi_results <- viterbi(HMM,string[1:49964])
#Error: protect(): protection stack overflow
ottengo lo stesso errore di overflow dello stack, quindi 49964 gli elementi nel vettore sono il limite
Penso che il problema potrebbe essere correlato al fatto che l'opzione R predefinita di --max-ppsize è 50000, ma cambiando questo parametro al suo limite --max-ppsize 500000 non lo fa #risolvi il problema. Tuttavia, il limite vettoriale in viterbi() aumenta, passa da 49964 elementi a qualcosa intorno a 499960 elementi nel vettore stringa.
Ho provato a eseguire l'algoritmo viterbi in blocchi. Per prima cosa ho splited la stringa in blocchi di 49960 elementi e applicare Viterbi a ciascuno di essi, ma ho ottenuto lo stesso errore
list_string <- split(string, ceiling(seq_along(string)/49960))
viterbi_results <- lapply(list_string,function(x) viterbi(HMM,x)$states)
#Error: protect(): protection stack overflow
Qui in StackOverflow ho trovato un problema simile a quello che sto avendo LINK. Apparentemente la fonte del problema era un PROTECT all'interno di un loop che non è necessario. Sono passato al codice sorgente C++ della funzione viterbi, ma non c'è un singolo PROTECT.
Ho anche provato ulimit -s unlimited
, ma sto ottenendo lo stesso errore.
Sto lavorando su UNIX con 1009 GB di memoria RAM
link per le RHmm package
Grazie mille per l'aiuto!
Im correre nello stesso problema se non con un vettore con milioni di osservazioni - hai mai risolvere il problema? –
Non ancora, ho provato a contattare gli sviluppatori ma finora non ho avuto fortuna. – Sierra