地理位置聚类

时间:2014-08-21 12:58:40

标签: java algorithm machine-learning cluster-analysis mahout

问题: 需要识别IMEI no(用户的家庭位置)的归属位置。

我有一套lat和long,imei和记录的时间;

注意:

1.Recorded IMEI locations are not periodic.
2.Recorded IMEI locations doesn't has any pattern
3.Lat long locations are may not be recorded on every day.

所以我的计划是使用聚类算法。

如果我们对纬度和长位置进行聚类意味着我们可以得到一组聚类。其中我将集中两个cluster.Cluster,其中大部分latlong记录在白天时间和聚类中,其中大部分latlong点在夜间记录然后,如果在夜间记录大部分latlong的群集,将被视为家庭位置。

我期望哪种聚类算法最适合这种聚类工作以及如何在java中使用算法....?

任何人都可以建议......?

1 个答案:

答案 0 :(得分:1)

关于动物的这个想法似乎有很多工作 - 见http://en.wikipedia.org/wiki/Home_range,其中列出了各种地理聚类测量。另请参阅http://en.wikipedia.org/wiki/Spatial_median#Spatial_median

您的聚类方法在很大程度上取决于数据的外观 - 您可以在XY图形或地图上绘制与给定用户关联的位置,以查看期望的聚类类型 - 实际上是为多个用户执行此操作。

我的猜测是,对于大多数用户来说,有一个紧密的集群,这是他们的家,在工作和假期离家时非常分散的云。在这种情况下,我希望找到这样的点,使得到这一点的X%最小距离的总和尽可能小,其中X可能是80-90。你可以通过修改通常的k-means代码来做到这一点,你可以在找到所选X%观察值的最佳拟合点和选择最接近你刚刚选择的点的X%观察值之间重复交替。

K-means需要一个不错的起点 - 事实上尝试几个。理想情况下,您需要一个不受外层云中任何点污染的起点。如果您通过将数据划分为11个部分并获取每个部分的空间中位数来生成起点,则会给出11个起点,如果云中只有10个污染点,则这些起点中至少有一个是源自一组完全未受污染的点。

我希望找到一些拥有两个或更多紧密集群而不是一个集群的用户,以及一个外部云。其中一些用户会觉得暴露二级集群是严重的隐私侵犯。