Ich habe eine binäre Sequenz wie 11111011011110101100000000000100101011011111101111100000000000011010100000010000000011101111
Wo auf Cluster von meistens Einsen eine größere Anzahl von Nullen folgt, wie im Bild unten (Schwarz steht für 1):
Ich möchte eine Technik anwenden (vorzugsweise in R oder in Python), bei der ich diese Cluster von Einsen automatisch erkennen und Bereiche erzeugen kann (im Bild als rote Linien bezeichnet). Ich weiß, dass man dies mit einem Schwellenwert tun könnte, dh dass zwei Cluster durch mindestens n Nullen getrennt sein müssen, um Cluster zu sein, aber ich frage mich, ob es andere etablierte Methoden gibt, die keine vordefinierten Schwellenwerte verwenden.
Irgendeine Idee?
Referenz 1 auf den Seiten 49-55 enthält einen schönen Abschnitt zu kernelbasierten Methoden, die hier hilfreich sein können. Wenn ich es tun würde, würde ich mir eine gewichtete Summe der tatsächlichen Werte und ihrer ersten Ableitung ansehen, da dies ein besserer Indikator für "Informationen" sein könnte.
Referenz: http://amzn.com/0198538642 "Neuronale Netze zur Mustererkennung" von Christopher Bishop (1995)
quelle
Das Problem hat eine gewisse Ähnlichkeit mit der Bildverarbeitung. Sie haben ein Binärbild mit einer Höhe von einem Pixel und möchten eine Art Segmentierung erreichen .
Die Art des Eingabebildes legt einen morphologischen Filter nahe, um die Bereiche zu glätten, z . B. das Schließen . Sie müssten das Strukturierungselement auswählen, das dadurch die "Verknüpfung" der Cluster bestimmt. Am Ende ist dies Ihrem Ansatz ziemlich ähnlich. Sie können das Bild auch mithilfe von Faltungsfiltern glätten, z. B. mithilfe von Unschärfe oder Gauß-Kernel, und einen ausgewählten Schwellenwert anwenden, um es erneut zu binarisieren.
Wenn Sie jeden
1
Punkt als Punkt behandeln können, seine Position in der Sequenz als Koordinate, und eine Entfernungsmetrik bilden können, können Sie so ziemlich jeden Standard-Clustering-Algorithmus verwenden, den es gibt. Sie könnten beispielsweise hierarchisches Clustering verwenden (wählen Sie ein Verknüpfungskriterium und einen Schwellenwert), Sie könnten k-means oder ein EM mit einem Gaußschen Mischungsmodell verwenden (wählen Sie die Anzahl der gesuchten Cluster).Aber ich glaube nicht, dass Sie irgendwann davonkommen können, ohne zumindest die Empfindlichkeit des Algorithmus vordefinieren zu müssen.
quelle