Tengo una secuencia binaria como 11111011011110101100000000000100101011011111101111100000000000011010100000010000000011101111
Donde los grupos de la mayoría de los 1 son seguidos por un mayor número de ceros, como en la imagen a continuación (el negro representa 1):
Me gustaría aplicar una técnica (preferiblemente en R o en Python) donde pueda detectar automáticamente estos grupos de 1 y producir tramos (denotados como líneas rojas en la imagen). Sé que uno podría hacer esto con un umbral, es decir, decir que dos grupos deben estar separados por al menos n 0 para ser grupos, pero me pregunto si hay otros métodos establecidos que no utilicen umbrales predefinidos .
¿Alguna idea?
La referencia 1 en las páginas 49-55 tiene una buena sección sobre métodos basados en el núcleo que podrían ser útiles aquí. Si lo estuviera haciendo, vería una suma ponderada de los valores reales y su primera derivada porque podría ser un mejor indicador de "información".
Referencia: http://amzn.com/0198538642 "Redes neuronales para el reconocimiento de patrones" por Christopher Bishop. (1995)
fuente
El problema tiene cierta similitud con el procesamiento de imágenes. Tiene una imagen binaria con una altura de un píxel y desea lograr algún tipo de segmentación .
La naturaleza de la imagen de entrada sugiere un filtro morfológico para suavizar las regiones, por ejemplo, cierre . Debería elegir el elemento de estructuración que determina la "vinculación" de los clústeres. Al final, esto es bastante similar a su enfoque. También puede suavizar la imagen con filtros de convolución, por ejemplo, con desenfoque o núcleo gaussiano y aplicar un umbral elegido para volver a binarizarlo.
Si puede tratar cada
1
punto como un punto, su posición en la secuencia como una coordenada, y puede completar alguna métrica de distancia, podría usar casi todos los algoritmos de agrupamiento estándar que existen. Por ejemplo, podría usar la agrupación jerárquica (elija un criterio de vinculación y un umbral), podría usar k-means o un EM con un modelo de mezcla gaussiana (elija la cantidad de grupos que está buscando).Pero no creo que eventualmente pueda escapar sin tener que predefinir la sensibilidad del algoritmo al menos.
fuente