I am building an app to optimize video packet sharing between users that are watching the same video stream at the same time. I do not want to have to guess the number of clusters up front because I don't think I can create a quality guess for that.
I want to create peer groups that are defined by this single constraint:
-> no user is more than 1,000 miles from another in the peer group
The problem is of course that user A may be 1,000 miles from user B, who is 1,000 miles from user C, but user A is 2,000 miles from user C. This is why I need an iterative clustering algorithm that will try different guesses for the number of clusters and the member list for each cluster. The desired result being that I end up with the optimal number of clusters and the member lists for each cluster as a result of the operation.
I found this post:
Fixing the maximum distance within a cluster
But the answer is given using SciPi using Python, and my app is a Node.js app. Therefore I have two questions:
- What clustering algorithm can do what I need to do, and is optimized for clustering data points where physical distance is the focus of the operation?
- If I can't find a Node.js package that does exactly that, where can I find a paper/tutorial that will explain the steps well enough I can code it myself in Javascript? Note, I am by far, not a math wizard.
- Should I consider Fuzzy C-Means clustering, since it allows elements to be members of more than one cluster? Or will I get low quality results for my geospatial clustering use case?