On the Moves app
In the last two posts I investigated the possibilities with location data and simple AI techniques. In this post I discuss the app Moves for iPhone and Android, and how I think it works.
Clustering in real-time
In my last post I used a clustering technique called Mean-Shift. This is an so-called offline technique, like most clustering techniques. This means that to use additional data the technique has to run all over again, with all previous data. This is in contrast to online techniques that can update their output without requiring previous data.
For a smartphone app an online technique would be preferred, so that it can update its view instantly and require a roughly equal amount of computing power throughout its lifetime (Offline techniques will get more power hungry with each added point).
An online technique for location data is proposed in the paper "Extracting Places from Traces of Locations" by J.H. Kang et al, published in the Proceedings of the 2nd ACM international workshop on Wireless mobile applications and services on WLAN hotspots in the year 2004.
The proposed technique is a bit different from Mean-Shift. When using Mean-Shift we discard the time data and focus purely on finding areas with a high density of location points. The proposed technique remembers only the last few location points. When a new location point is available, the last point in the history is replaced with the new point. Then the center of those points is computed, and the distance to all points from the center. If the largest distance between the points and the center is below a threshold the location is marked as a cluster, if there is already a cluster marked there the new point is added to the cluster.
With this technique two parameters are required: amount of points required for a cluster (history size) and maximum distance to be called a cluster.
How would I code the Moves app?
I'm not trivializing the work that has gone into the Moves app. I'm thinking out loud how I would create something like it. Because it seems that could very well be the technique described above, with a possibility to easily annotate the locations.
The app also shows if you have walked, jogged, cycled or took alternate transportation to get from location to location. This can easily be estimated from the speed between location points. Walking is below ~7kmh, running below ~14kmh and cycling below ~30kmh. If you went faster than that it gets more tricky to estimate so it just calls it "transportation".
The app could try to disaggregate between types of transportation, where flying is typified by being at an airport and jumping location quite quickly. Trains could be typified by moving along rails, and so on. Busses and trams could be cross referenced with local transportation schedules. But this would make the app more complex and more error prone. I can understand why they did not include these features.
Acquisition by Facebook
On April 24th the makers of the app reported that they are acquired by Facebook. This is in line with the acquisition policy of the company in my eyes. Just like Google, Facebook makes their money from advertisements. And they are preferred over other media outlets because they can target ads better than traditional media. The acquisition of Moves is not directly because of the data they have now, but that the makers created an platform in which people allow their location data to used and even annotate it, and did it in such a way that it has quickly picked up a user base. Facebook is an ads company, and with every extra data stream they can target ads more accurately. That is why they bought ProtoGeo Oy, makers of Moves.