如何使用回归预测 ETA?

数据挖掘 机器学习 线性回归 地理空间
2021-10-01 19:21:40

我有来自 GPS 的数据,格式为

1.('latitude', 'longitude','Timestamp').
2.('latitude', 'longitude','Timestamp').
3.('latitude', 'longitude','Timestamp').

我正在将此数据更改为以下形式

'latitude_1', 'longitude_1', 'Timestamp_1', 'latitude_2', 'longitude_2', 'Timestamp_2, Timestamp_2-Timestamp_1.

使用这种格式,我正在训练一个LinearRegressionWithSGDspark 模型,其中 labelTimestamp_2-Timestamp_1和 features 是latitude_1, longitude_1, latitude_2, longitude_2

但是当我给出 Origin(纬度和经度)和目的地(纬度和经度)时,结果非常糟糕。

请指导我这种方法是否正确?如果没有,那么如何从给定的数据构建预测模型来进行预测Estimated Time of Arrival

4个回答

我建议计算两点之间的Haversine距离,并拟合线性回归以找到 Haversine 距离与行程持续时间之间的关系。所以你的回归将是

durationt=timestampttimestampt1=α+βd(pointt,pointt1)

在哪里 d 是Haversine 距离。 pointt 是一个纬度/经度对 t.

但是请注意,假设用户以相同的速度行驶。如果一半的数据是在步行时收集的,另一半是在开车时收集的,那么时间和 ETA 之间的关系可能不是线性的。

要从两个预测变量经度和纬度预测时间戳,您需要训练以下形式的多元线性回归模型

一世es一个p=α+β0大号nG一世de+β1大号一个一世de.

给定一个新的目的地经纬度对,然后您可以计算 ETA。

Spark 的LinearRegressionWithSGD模型应该能够开箱即用地执行多重线性回归,使用Timestamp作为标签latitudelongitude作为特征。无需事先转换数据。

问题在于你如何训练这个问题。如果使用 Timestamp1 和 Timestamp2 作为训练参数,它们将具有 100% 的预测能力,并且算法将完全忽略任何位置参数。如果您只想根据起点和目的地进行预测,则需要仅使用这些参数来训练模型。

这可能没有多大帮助,但我想指出您可能必须控制方向,因为 GPS 坐标会根据行进方向而减少和增加。