问题:需要识别IMEI号的家庭位置(用户的家庭位置(。
我有一套经度和经度,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.
所以我的计划是,使用聚类算法。
如果我们聚类经度和长位置意味着我们可以得到一组聚类。其中我将集中两组。其中大部分纬度记录在白天的聚类和大多数纬度点记录在夜间的聚类。然后,如果在夜间记录了大部分纬度的集群,则将被视为主位置。
我期望的是哪种聚类算法最适合此聚类工作以及如何在 Java 中使用算法....?
任何人都可以建议...?
动物的这个想法似乎有很多工作 - 见 http://en.wikipedia.org/wiki/Home_range,其中列出了地理聚类的各种措施。另请参阅 http://en.wikipedia.org/wiki/Spatial_median#Spatial_median。
聚类分析方法在很大程度上取决于数据的外观 - 您可以在 X-Y 图或地图上绘制与给定用户关联的位置,以查看预期的聚类类型 - 实际上,为多个用户执行此操作。
我的猜测是,对于大多数用户来说,有一个紧密的集群是他们的家,以及一个非常分散的远离家乡的工作和假期云。在这种情况下,我会寻找这样的点,即到该点的 X% 最小距离的总和尽可能小,其中 X 可能是 80-90。您可以通过修改通常的 k 均值代码来执行此操作,在该代码中,您可以反复交替为所选的 X% 观测值查找最佳拟合点,并选择最接近您刚刚选择的点的 X% 观测值。
K-means需要一个不错的起点 - 实际上尝试几个。理想情况下,您需要一个不受外云中任何点污染的起点。如果将数据划分为 11 个部分并取每个部分的空间中位数来生成起点,则会得到 11 个起点,如果云中只有 10 个受污染的点,则这些起点中至少有一个来自完全未受污染的点集合。
我希望找到许多用户,他们有两个或多个紧密的集群,而不是一个,以及一个外部云。其中一些用户会觉得泄露辅助集群是一种严重的隐私侵犯。