51468

Cluster similar curves considering “belongingness”?

Question:

Currently, I have 6 curves shown in 6 different colors as below. <img alt="enter image description here" class="b-lazy" data-src="https://i.stack.imgur.com/AXflS.png" data-original="https://i.stack.imgur.com/AXflS.png" src="https://etrip.eimg.top/images/2019/05/07/timg.gif" /> The 6 curves are in fact generated by 6 trials of <strong>one same experiment</strong>. That means, ideally they should be the same curve, but due to the noise and different trial participants, they just look similar but not exactly the same.

Now I wish to create an algorithm that is able to identify that the 6 curves are essentially the same and cluster them together into one cluster. <strong>What similarity metrics should I use?</strong>

<strong>Note:</strong>

<ol><li>The x-axis does <strong>NOT</strong> matter at all! I simply align them together for visual purpose. Thus, feel free to left/right shift the curves, if doing so helps.</li> <li>"Sub-curves" that are part of the curves may appear. The "belongingness" is important and thus needs identifying as well. But again, left/right shifting is allowed.</li> </ol>

I have attemped to learn some of the clustering algorithm, such as DBSCAN, K-means, Fuzzy C-means, etc. But I don't see their appropriateness in this case, because the "belongingness" needs to be spotted!

<em>Any suggestions or comments are well welcomed. I understand that it is hard to give some exact solutions to this question. I am only expecting some enlightening suggestions here.</em>

Answer1:

Have a look at <strong>time series similarity functions</strong>, such as dynamic time warping.

They can be used with e.g. DBSCAN but NOT with k-means (you cannot compute a reasonable "mean" for these distances; k-means is really designed for squared Euclidean distances).

Recommend

  • R Compare each data value of a column to rest of the values in the column?
  • How to do un-normalized 2D Cross Correlation in IPP
  • CoffeeScript, Node.js, MongoDB and JasperReports, is it possible?
  • How do I retrieve table names in Cassandra using Java?
  • Cluster markers with osmdroid
  • Hierarchical Clustering Large Sparse Distance Matrix R
  • How to increase the python speed over loops?
  • Qt - Cannot get lambda to work [duplicate]
  • How do one only submit click event (div), when using jquery live function?
  • TCPDF's getNumLines() is sometimes wrong
  • Read stdin in chunks in Bash pipe
  • How to display attributed text in a UITextView with NSTextContainer and NSTextStorage
  • Keep same scale in different graphs ggplot2
  • Play Framework nested form errors missing
  • JFreechart X and Y axis scaling
  • IOS > Open URL in Safari with POST
  • Quick Question About Get and Set
  • Find VMID for running instance
  • Java : How to tint this PNG programmatically?
  • How gzip file gets stored in HDFS
  • Count New Lines in Text File
  • How to request unsampled report from Google Analytics Management API using Google Apps Script?
  • android Navigation Bar hiding and persantage of usable screen overlap
  • Plotting densities in R
  • HttpListener.IsSupported is false on XP SP3
  • Clarification on min distance on LocationManager.requestLocationUpdates method, min Distance paramet
  • Breaking out column by groups in Pandas
  • WPF ICommand CanExecute(): RaiseCanExecuteChanged() or automatic handling via DispatchTimer?
  • How solve “Qt: Untested Windows version 10.0 detected!”
  • jQuery ready not fired after rails link_to is clicked
  • How would I use PHP exceptions to define a redirect?
  • How to add a column to a Pandas dataframe made of arrays of the n-preceding values of another column
  • Javascript Callbacks with Object constructor
  • Validaiting emails with Net.Mail MailAddress
  • Which linear programming package should I use for high numbers of constraints and “warm starts” [clo
  • How can I use Kendo UI with Razor?
  • Javascript + PHP Encryption with pidCrypt
  • Convert array of 8 bytes to signed long in C++
  • NSLayoutConstraint that would pin a view to the bottom edge of a superview
  • How to CLICK on IE download dialog box i.e.(Open, Save, Save As…)