7

我正在分析一些地理数据,并试图根据时间和地理位置来预测/预测下一次事件的发生。数据按以下顺序(带有样本数据)

时间戳纬度经度事件
13307266 102.86400972 70.64039541 “事件 A”
13311695 102.8082912 70.47394645 “事件 A”
13314940 102.82240522 70.6308513 “事件 A”
13318949 102.83402128 70.64103035 “事件 A”
13334397 102.84726242 70.66790352 “事件 A”

第一步是将其分为 100 个区域,以减少尺寸和复杂性。

 
时间戳区
13307266 47
13311695 65
13314940 51
13318949 46
13334397 26

下一步是进行时间序列分析,然后我被困在这里 2 个月,阅读了很多文献并认为这些是我的选择 * ARIMA(自动回归方法) * 机器学习

我想利用机器学习来使用 python 进行预测,但无法真正弄清楚如何。具体来说,是否有任何特定于用例的 python 库/开源代码,我可以在这些库上进行构建。

编辑1:为了澄清,数据松散地依赖于过去的数据,但在一段时间内是均匀分布的。可视化数据的最佳方式是,想象由算法控制的 N 个代理,该算法分配给它们从网格中挑选资源的任务。资源是社会经济结构的功能,也强烈依赖于地理。“算法”的兴趣在于能够明智地预测需求区域和时间。

ps:对于像 ARIMA 这样的自回归模型,Python 已经有一个库http://pypi.python.org/pypi/statsmodels

4

1 回答 1

18

如果没有示例数据或现有代码,我无法为您提供任何具体的东西。

然而,通常用你想探索的领域的命名法重新表述你的问题是有帮助的。在机器学习方面:

  • 您的问题的特征:如何指定您的输入。时间戳是连续的,地理区域是离散的。
  • 您的问题的目标标签:一个事件,确切地说是否发生了给定事件。
  • 您的问题受到监督:以前数据的目标标签可用。您有(时间戳、地理区域)到事件映射的先前实例。
  • 目标标签是离散的,所以这是一个分类问题(与回归问题相反,输出是连续的)。

所以我会说你有一个监督分类问题。顺便说一句,您可能想先进行某种时间正则化;我猜事件的模式取决于一天中的什么时间、一个月中的一天或一年中的一个月,您可能希望将其表示为附加功能。

在这里查看一个流行的 Python ML 库,scikit-learn:

http://scikit-learn.org/stable/supervised_learning.html

并查阅其中一位贡献者最近在 scikit-learn 的备忘单上发布的帖子:

http://peekaboo-vision.blogspot.de/2013/01/machine-learning-cheat-sheet-for-scikit.html

您的第一个好选择是尝试支持向量机(SVM),如果失败,也可以尝试k 最近邻(kNN)。请注意,使用集成分类器通常优于仅使用给定 SVM/kNN 的一个实例。

究竟如何将 SVM/kNN 与时间作为特征应用可能需要更多的研究,因为 AFAIK(和其他人可能会纠正我)SVM/kNN 需要均值为零的有界输入(或归一化为均值为零) . 只需做一些随机的谷歌搜索,您就可以找到某些 SVM 内核,例如傅立叶内核,它可以为您转换时间序列特征:

用于时间序列分析的 SVM 内核
http://www.stefan-rueping.de/publications/rueping-2001-a.pdf

scikit-learn 允许您为 SVM 指定自定义内核。请参阅:
http ://scikit-learn.org/stable/auto_examples/svm/plot_custom_kernel.html#example-svm-plot-custom-kernel-py

凭借您对 ML 命名法的了解以及手头的示例数据,您可能需要考虑将问题发布到Cross Validated,即 Stack Exchange 统计数据。

编辑1:更多地考虑这个问题,您需要真正了解您的功能和相应的标签是否独立且同分布(IID)。例如,如果您模拟森林火灾如何随时间蔓延。很明显,给定区域着火的可能性取决于其邻居是否着火。AFAIK SVM 和 kNN 假设数据是 IID。在这一点上,我开始超出我的深度,但我认为您至少应该尝试几种 ML 方法,看看会发生什么!记得交叉验证!(scikit-learn 会为你做这件事)。

于 2013-01-28T13:27:59.573 回答