利用GPS轨迹和DBSCAN推断工作地居住地

利用移动设备用户的GPS轨迹可以推断用户的工作地和居住地。本文中的数据集来自微软亚洲研究院的GeoLife GPS轨迹数据集,(数据集链接为https://www.microsoft.com/en-us/download/details.aspx?id=52367)。该数据集包含了182个用户3年内的GPS轨迹。本文利用某个用户作为示例。

640?wx_fmt=png

首先需要读入用户的轨迹数据。每个样本点包含的信息有纬度,经度,高度,日期和时间等。如果将这些GPS数据在地图上展示,就可以大致看出用户的活动区域。

原始数据格式如下

利用GPS轨迹和DBSCAN推断工作地居住地_第1张图片

下面是读入数据,并选出需要的列

利用GPS轨迹和DBSCAN推断工作地居住地_第2张图片

由于数据中记录的比较频繁,所以实验中不用全部数据,而是每隔一分钟取一条。

示例数据如下

利用GPS轨迹和DBSCAN推断工作地居住地_第3张图片

总样本数结果如下

640?wx_fmt=png

下面是在谷歌地图上展示用户轨迹

640?wx_fmt=png

用户轨迹如下

利用GPS轨迹和DBSCAN推断工作地居住地_第4张图片

然后利用DBSCAN(Density-Based Spatial Clustering and Application with Noise)算法对数据集进行聚类。DBSCAN是一种聚类算法,这种算法通常用于对带有噪声的空间数据进行聚类。利用DBSCAN算法可以对GPS轨迹聚成4类。直观上来看,每一个聚类都表示该用户经常到访该区域。因此,可以假设用户的工作地和居住地就在这4个聚类中。

具体代码如下

利用GPS轨迹和DBSCAN推断工作地居住地_第5张图片

利用GPS轨迹和DBSCAN推断工作地居住地_第6张图片

下面是计算每个聚类的中心点

利用GPS轨迹和DBSCAN推断工作地居住地_第7张图片

下面是画出GPS轨迹和聚类效果

利用GPS轨迹和DBSCAN推断工作地居住地_第8张图片

利用GPS轨迹和DBSCAN推断工作地居住地_第9张图片

为了更好地理解DBSCAN,下面插播一段DBSCAN的介绍


在DBSCAN中,有三类点,示例如下,其中x是中心点,y是边界点,z是噪声点。

利用GPS轨迹和DBSCAN推断工作地居住地_第10张图片

在DBSCAN中有三个比较重要的概念,定义如下

直接密度可达:一个点A是从B直接密度可达即为B是中心点并且A在B的ϵ邻域中。

密度可达:点A跟点B是密度可达的即为如果B通过若干个中心点可以连接到A.。

密度可连:两个点A和B密度可连即为如果A和B跟同一个中心点C密度可达。

DBSCAN算法步骤如下

1 对每个样本点xi,计算该样本点跟其他样本点的距离。针对每个开始点xi,找出该样本点的邻域内的点。如果某个点的邻域内的点大于或等于MinPts,则将该点标记为中心点或已访问。

2 针对每个中心点,如果该点没有标记为属于某个聚类,则新建一个聚类。针对每个中心点,将所有密度可连的点标记为跟该中心点属于同一个聚类。

3 对所有未访问的点递归执行 1 2。

为了说明K-Means和DBSCAN算法的区别,下面给出了示例。

下图是原始的样本点

利用GPS轨迹和DBSCAN推断工作地居住地_第11张图片

k-means聚类结果如下

利用GPS轨迹和DBSCAN推断工作地居住地_第12张图片

下面是DBSCAN的聚类结果

利用GPS轨迹和DBSCAN推断工作地居住地_第13张图片


为了推断工作地和居住地,可以利用简单的先验知识:时间。针对每个聚类,可以画出其中的GPS样本点的时间分布。容易看出,用户在早上九点到下午六点,用户待在聚类一种。而在晚上到早上8点,用户倾向于待在聚类2和聚类3中,因此可以推断用户001的工作地为聚类1,居住地为聚类2,聚类3可能是第二个居住地。

下面是查看每个聚类中的小时分布

利用GPS轨迹和DBSCAN推断工作地居住地_第14张图片

针对每个聚类画出该类中的小时分布

利用GPS轨迹和DBSCAN推断工作地居住地_第15张图片

利用GPS轨迹和DBSCAN推断工作地居住地_第16张图片

利用GPS轨迹和DBSCAN推断工作地居住地_第17张图片

下面是将工作地和居住地的推断在图上展示

利用GPS轨迹和DBSCAN推断工作地居住地_第18张图片

利用GPS轨迹和DBSCAN推断工作地居住地_第19张图片

下面是将工作地和居住地在谷歌地图上展示

640?wx_fmt=png

利用GPS轨迹和DBSCAN推断工作地居住地_第20张图片

只通过上述方式来推断工作地和居住地做法有些粗糙,可以更精确地推断工作地和居住地。比如,用户在周末和工作日的位置可以提供额外的线索。

参考资料

https://yidatao.github.io/2016-12-23/geolife-dbscan/

http://www.sthda.com/english/articles/30-advanced-clustering/105-dbscan-density-based-clustering-essentials/

你可能感兴趣的:(利用GPS轨迹和DBSCAN推断工作地居住地)