Veuillez voir mon commentaire ci-dessus et voici ma réponse selon ce que j'ai compris de votre question:
Comme vous l'avez correctement dit, vous n'avez pas besoin de clustering mais de segmentation . En effet, vous recherchez des points de changement dans votre série chronologique. La réponse dépend vraiment de la complexité de vos données. Si les données sont aussi simples que l'exemple ci-dessus, vous pouvez utiliser la différence de vecteurs qui dépasse les points de changement et définir un seuil détectant ces points comme ci-dessous:
Comme vous voyez par exemple un seuil de 20 (c'est-à-dire et ) détectera les points. Bien sûr, pour les données réelles, vous devez en savoir plus pour trouver les seuils.réx < - 20réx > 20
Prétraitement
Veuillez noter qu'il y a un compromis entre l'emplacement précis du point de changement et le nombre précis de segments, c'est-à-dire que si vous utilisez les données d'origine, vous trouverez les points de changement exacts mais toute la méthode est sensible au bruit mais si vous lissez vos signaux en premier, vous ne trouverez peut-être pas les changements exacts, mais l'effet de bruit sera beaucoup moins important, comme indiqué dans les figures ci-dessous:
Conclusion
Ma suggestion est de lisser d'abord vos signaux et d'opter pour un simple mthod de clustering (par exemple en utilisant des GMM ) pour trouver une estimation précise du nombre de segments dans les signaux. Compte tenu de ces informations, vous pouvez commencer à trouver des points de changement limités par le nombre de segments que vous avez trouvés dans la partie précédente.
J'espère que tout a aidé :)
Bonne chance!
MISE À JOUR
Heureusement, vos données sont assez simples et propres. Je recommande fortement les algorithmes de réduction de dimensionnalité (par exemple PCA simple ). Je suppose que cela révèle la structure interne de vos clusters. Une fois que vous avez appliqué PCA aux données, vous pouvez utiliser k-means beaucoup plus facilement et plus précisément.
Une solution sérieuse (!)
Selon vos données, je vois que la distribution générative des différents segments est différente, ce qui est une excellente occasion pour vous de segmenter votre série chronologique. Voir ceci (original , archive , autre source ) qui est probablement la meilleure solution et la plus avancée de votre problème. L'idée principale derrière cet article est que si différents segments d'une série chronologique sont générés par différentes distributions sous-jacentes, vous pouvez trouver ces distributions, définir tham comme vérité fondamentale pour votre approche de clustering et trouver des clusters.
Par exemple, supposons une longue vidéo dans laquelle les 10 premières minutes, quelqu'un fait du vélo, les 10 dernières minutes, il court et la troisième, il est assis. vous pouvez regrouper ces trois segments (activités) en utilisant cette approche.