2014-05-14 5 views
5

Ich suchte nach einer HMM-Implementierung in R, um Zustände in einer Zeichenfolge zu analysieren, und die HMM-Bibliothek scheint langsam zu laufen, dann verwende ich die RHmm-Bibliothek.r - viterbi RHmm Fehlerschutz Stapelüberlauf

Meine Daten ist eine Kette von 1.953.138 Symbole (U, D, N)

dies eine Probe meiner Daten:

string <- sample(c("D","U","N"),1953138,replace=T) 

Einpassen HMM

HMM <- HMMFit(string,dis="DISCRETE",nStates=3)$HMM 

läuft Viterbi und Hier bekomme ich den Fehler

viterbi_results <- viterbi(HMM,string) 
#Error: protect(): protection stack overflow 

Allerdings, wenn ich nur eine Teilmenge der Zeichenfolge Viterbi() verwenden, funktioniert gut:

viterbi_results <- viterbi(HMM,string[1:49963]) 

Eigentlich, wenn ich zu laufen versuchen:

viterbi_results <- viterbi(HMM,string[1:49964]) 
#Error: protect(): protection stack overflow 

ich den gleichen Stack-Überlauf-Fehler erhalten, dann 49964 Elemente im Vektor ist das Limit

Ich denke, das Problem kann mit der Tatsache zusammenhängen, dass die Standard-R-Option von --max-ppsize 50000 ist, aber die Änderung dieses Parameters auf sein Limit --max-ppsize 500000 nicht #das Problem lösen. Das Vektorlimit in viterbi() erhöht sich jedoch, es geht von 49964 Elementen zu etwa 499960 Elementen im Zeichenfolgenvektor.

Ich habe versucht, den Viterbi-Algorithmus in Chunks auszuführen. Erste splited ich die Zeichenfolge in Stücke von 49.960 Elemente und gelten Viterbi für jeden von ihnen, aber ich habe den gleichen Fehler

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 

hier in Stackoverflow ich ein ähnliches Problem mit dem einen fand ich LINK habe. Anscheinend war die Ursache des Problems ein PROTECT innerhalb einer Schleife, die nicht benötigt wird. Ich bin in den C++ - Quellcode der Viterbi-Funktion gesprungen, aber es gibt keinen einzigen PROTECT.

Ich habe auch versucht ulimit -s unlimited, aber ich bekomme den gleichen Fehler.

Ich arbeite an Unix mit 1009 GB RAM Speicher

Link zu dem RHmm package

Vielen Dank für die Hilfe!

+0

Im in das exakt gleiche Problem läuft außer mit einem Vektor mit Millionen von Beobachtungen - haben Sie jemals das Problem zu lösen? –

+0

Noch nicht, ich habe versucht, die Entwickler zu kontaktieren, aber bisher kein Glück. – Sierra

Antwort

0

Erhöhung Punkt Stapelgröße, wenn R beginnt:

R --max-pp-size=100000 
+0

Wie ich oben erwähnt habe, habe ich --max-ppsize 500000 verwendet, was das Limit in R ist. Trotzdem kommt der Fehler heraus. – Sierra