问题:
需要识别imei no(用户的主位置)的主位置。
我有一套拉长、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-means代码来实现这一点,在此代码中,您可以在为选定的x%观测值找到最佳拟合点和选择最接近您刚才选择的点的x%观测值之间反复交替。
K-means需要一个像样的起点-事实上可以尝试几个理想情况下,你需要一个不受外部云中任何点污染的起点。如果通过将数据分成11个部分并取每个部分的空间中值来生成起点,这将为您提供11个起点;如果云中只有10个污染点,则这些起点中至少有一个来自完全未受污染的点集合。
我希望能找到一些拥有两个或更多紧密集群(而不是一个)以及外部云的用户。其中一些用户会觉得泄露二级集群严重侵犯了隐私。