精华内容
下载资源
问答
  • 采用实例分析对交通影响评价中传统的交通预测算法进行检验。利用某大型项目2004年的预测交通量与2009年调查交通量进行对比,验证了传统预测算法模型及参数的正确性,并对存在的偏差进行原因分析及提出建议,为交通...
  • 城市轨道交通列车到达时间预测算法
  • 基于BP神经网络的交通流量预测算法.pdf
  • 一种基于MapReduce的短时交通预测算法,张丽,姚卫红,短时交通流预测是智能交通系统中交通诱导、交通控制和管理应用的基础。短时交通预测算法的实时性和准确性一直是研究的重点和难
  • 基于图卷积神经网络的城市交通态势预测算法.pdf
  • 基于国产处理器增量式实时交通预测算法及实现.pdf
  • 针对交通控制中各种实际交通量预测问题,提出了一种基于交叉口相关性的交通预测算法。该算法利用城市路网中各个检测器之间的相关性和一元线性回归方程,实现了对路网中的缺席检测器(或故障检测器)的交通量的有效...
  • 重庆大学硕士学位论文 中文摘要 摘 要 交通预测问题是智能交通系统研究的重要问题交通速度是衡量交通状态的 一个重要指标, 交通速度预测不仅可以为交通管理者提供科学依据还可以为其他 道路服务如路径规划提供支持...
  • 基于Spatio-LSTM模型的城市交通路网流量预测算法,高尚,李静林,在城市环境中,道路交通流量变化快速且受随机扰动影响强烈,给交通管理和通信资源分配带来诸多困难。针对交通流量预测问题,本文
  • 基于深度学习的车联边缘网络交通事故风险预测算法研究.pdf
  • 为了更有效地预测城市路网交通流量,本文提出了一种城市道路交通预测模型.该模型基于网络层析成像(Network Tomography,NT)技术建立生成树,采用期望最大(Expectation Maximization,EM)算法得到路网子网车流概率分布,再...
  • 05 基于深度学习的车联边缘网络交通事故风险预测算法研究.pdf
  • 基于动态时间序列预测算法的智能交通控制系统研究.pdf
  • 云模型是对语言值所蕴含的模糊性和随机性的一种...基于云模型提出的预测机制在一定程度上有效地解决了交通信息存在的模糊性和随机性问题.为交通信息预测提供了一种新的方法.检验结果表明预测值基本上与实际值吻合.
  • 在高方差时段(如节假日和体育赛事等等)准确的预测交通量,对于异常检测、资源分配、预算规划和其他相关的任务都是至关重要,这些任务有助于网约车大规模优化用户体验,然而,预测这些变量极具挑战性,因为这种极端...

    1.背景介绍

    在高方差时段(如节假日和体育赛事等等)准确的预测交通量,对于异常检测、资源分配、预算规划和其他相关的任务都是至关重要,这些任务有助于网约车大规模优化用户体验,然而,预测这些变量极具挑战性,因为这种极端事件预测取决于天气、城市人口增长和其他导致预测不确定性的外部因素。
    近几年来,长短期记忆网络技术以其端到端建模,易于映入外生变量和自动特征抽取的特点,成为了一种流行的时间序列建模框架。LSTM方法利用多个维度的大量数据,可以对复杂的非线性特征相互作用进行建模,这对于预测极端事件是至关重要的。
    在Lingxue Zhu和Nikolay Laptev发表在IEEE的一篇论文Deep and Confident Prediction for Time Series at Uber中,介绍一种新的端到端贝叶斯神经网络(BNN)结构,它能在大规模的情况下更精准地预测时间序列结果和不确定性预测。

    2.概述

    2.1不确定性预测

    首先,我们用函数来表示一个神经网络,其中f表示是网络的结构,用**W**来表示模型参数的集合。在BNN模型中,引入了权重参数的先验,并且模型的目标是去拟合最优的后验分布。比如,高斯先验通常假设:
    然后,我们进一步数据生成分布定为 。在回归问题中,我们通常假设: (其中具有一定的噪声)。
    接着,给定N个观测值 和,贝叶斯推理的目标是找到模型参数的后验分布。最后给定一个新的数据点,在通过将后验分布边缘化之后,可以得到预测分布
    其中,方差量化了预测的不确定性,可以用总方差定律进行分解: ,我们立刻看到方差被分解为两项, (反映了我们对模型参数_W_的规格的不确定性,被称为模型不确定性)和(表示固有的噪声)。
    对于上述分解公式的一个基本假设是由相同的过程产生的,但是在实际情况中,往往并非如此。特别是在异常检测,如果某些时间序列具有不同寻常的模式,那么会使训练后的模型有很大的不同。所以,我们要结合以下三个方面来测量预测的不确定性:

    1. 模型的不确定性
    2. 模型的错误识别
    3. 固有噪声

    接下来就详细介绍这三个方面。

    2.1.1模型的不确定性

    模型不确定性估计的关键就是后验分布 (即贝叶斯推理)。由于非线性所导致的非共轭性,后验分布在神经网络中是极其具有挑战性的。在深度学习中,类似推理的研究已经有了很多,在仔细对比后,我们选用蒙特卡罗丢失法(MC dropout)来模拟模型的不确定性。
    具体算法如下:给定一个新的输入,然后我们在每层神经网络上随机抛弃掉一部分输出,即以一定的概率**p**随机抛弃掉每个隐藏层单元。然后随机前馈重复B次,得到image.png。这样就可以把模型的不确定性近似看为样本方差image.png(其中image.png)。近几年来,已经在将最优抛弃率p作为模型参数的一部分进行自适应选择方面有了很多研究,但是这种方法需要去修改训练阶段。实际上,我们发现模型的不确定性估计通常在_p_的合理范围是鲁棒的。

    2.1.2模型的错误识别

    接下来,我们要通过BNN模型去解决潜在的模型错误识别的问题。我们解决这一问题的方法是,在训练数据集中去预测那些具有完全不同模式的未知样本时获取的不确定性,和通过训练一个从时间序列中自动抽取代表性特征编码器来确定这种不确定性的来源。在测试时,每一个样本的编码效果都将会有助于计算样本集与训练集之间的距离。
    计算它们之间距离的另一种方式是,使用一个encoder-decoder框架为所有训练集的时间序列拟合出一个潜在的embedding空间。这样,我们就可以在这个embedding空间来测量测试样本和训练样本之间的距离。
    接下来,我们需要解决的问题就是如何将这种错误识别和模型不确定性结合起来。在这里,我们采用了一个方法是,将encoder-decoder网络与一个预测网络连接起来,在推理时将其是为一个大网络,算法如图一所示:
    image.png
    图一:用MC dropout算法来近似模型的不确定性和模型的错误识别
    上述算法1使用MC dropout算法展示了这样一个推理网络。具体来说,给定一个输入时间序列 ,encoder构造了所学到的embedding向量,并将其作为特征输入到预测网络_h_中。
    在这个前馈过程中,MC dropout应用于encoder和预测网络的所有层。所以,encoder层重的随机抛弃会智能地去干扰embedding空间中的输入,从而导致潜在的模型错误识别,并且通过预测网络进一步传播。

    2.1.3固有噪声

    最后,我们来估计一下固有的噪声。在这个场景下,我们提出了一种简单但自适应的方法,即通过残差平方和和评估一个独立的验证集来估计噪声水平。具体地说, 是在训练集上拟合好的模型, 是独立的验证集,然后,我们通过公式来估计 
    注意 是独立于 的。如果我们进一步假设是一个真实模型的无偏估计,那么我们就会有 ,其中偏置项是,并且它会随着训练样本数量的增加而降低,尤其是当训练集样本N趋于∞时偏置项会趋于0。因此,假如模型是无偏的,就提供了一个对固有噪声水平接近的无偏估计。在样本有限的情况下,只能高估噪声水平并且趋于更加保守。
        我们的BNN模型最终的推理算法结合了固有噪声估计和MC dropout,算法2给出了最终的推理算法,如图二所示:
    image.png
    图二:推理算法结合了固有噪声估计和MC dropout算法

    3.实验

    该论文中的实验结果,是以lstm网络+全连接为基础产生的。该神经网络的完整结构主要包括两部分:(i)encoder-decoder框架,用于得到时间序列中的自有关系,并且在预训练期间就学习好(ii)预测网络,他的输入来自于encoder-decoder框架所学习到embedding层以及潜在的外部特性(如天气事件等)。这个鲁棒的体系结构如下图三所示:
    image.png
    图三:完整的体系结构
    在拟合预测模型之前,我们首先要进行预训练,以拟合出一个能够从时间序列中抽取有用且具有代表性的embedding的encoder。其目标有两个方向:(i)确保所学习的embedding为预测提供有用的特征;(ii)证明可以在embedding中捕获异常输入,从而进一步传播到预测网络中。

    3.1实验数据

    这里我们从kaggle上找到数据集NYC Uber Pickups with Weather and Holidays,这个数据集有很多我们需要的特征,但是我们还是需要对其处理一下,把区域字段合并,将节假日字段改为0-1数字表示,合并出来的数据如图四所示:
    image.png
    图四:处理过后的实验数据
    由于要使用LSTM网络作为一个encoder-decoder框架,所以我们将上述处理之后的数据读出成时序数据,然后在将其转化为监督问题数据。
    参考代码:

    def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
        n_vars = 1 if type(data) is list else data.shape[1]
        df = pd.DataFrame(data)
        cols, names = list(), list()
        # input sequence (t-n, ... t-1)
        for i in range(n_in, 0, -1):
            cols.append(df.shift(i))
            names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
        # forecast sequence (t, t+1, ... t+n)
        for i in range(0, n_out):
            cols.append(df.shift(-i))
            if i == 0:
                names += [('var%d(t)' % (j+1)) for j in range(n_vars)]
            else:
                names += [('var%d(t+%d)' % (j+1, i)) for j in range(n_vars)]
        # put it all together
        agg = pd.concat(cols, axis=1)
        agg.columns = names
        # drop rows with NaN values
        if dropnan:
            agg.dropna(inplace=True)
        return agg
    

    3.2实验模型

    给定一个时间序列 ,encoder的LSTM去读取前T个时间戳数据来构造一个固定维度的embedding状态向量。然后decoder的LSTM根据这个embedding状态向量和去构造接下来F个时间戳数据。为了从embedding状态向量中构建接下来的时间戳数据,embedding状态向量一定要包含来自输入时间序列中最具有代表性和意义的元素。
    在对encoder-decoder结构预处理之后,我们就将这个结构作为一个能智能提取特征的黑盒。具体来说,LSTM节点状态被抽取为固定维度的embedding向量。然后,用这个embedding向量作为特征来训练模型去预测接下里几个时间段的数据。在外部特性可用的场景中,可以将这些特性连接到embedding向量并一起传递到最终的预测网络。
    有两个超参数需要被特别说明一下:丢弃率_P和迭代次数B。对于丢弃率来说,不确定性估计在一系列P上相对稳定,所以我们要选择一个在验证集上表现的最好的一个P_。对于迭代次数来说,估计的预测不确定性的标准差是与成正比。在对不同迭代次数测量了标准差之后,发现几百次迭代就足以实现稳定的估计。
    该模型的encoder-decoder框架是由两层LSTM单元构成,分别包含128和32个隐状态,预测网络由三个全连接层组成,分别包含128、64和16个隐藏单元。我们的输入样本是使用一个滑动窗口构成的,其中每个样本都是以前15个小时作为输入,来预测未来一小时的数据。并且对原始数据进行MinMaxScaler标准化,把数据放缩到0~1之间,以减轻指数效应。
    参考代码:

    encoder_inputs = Input(shape=(train_X.shape[1], train_X.shape[2]))
    
    encoder_lstm1 = LSTM((128), return_state=True,return_sequences=True)
    encoder_outputs1, state_h1, state_c1 = encoder_lstm1(encoder_inputs)
    
    drop_out1 = Dropout(0.05)
    
    encoder_lstm2 = LSTM((64), return_state=True,return_sequences=False)
    encoder_outputs2, state_h2, state_c2 = encoder_lstm2(encoder_outputs1)
    
    drop_out2 = Dropout(0.05)
    
    external_features = Input(shape=(6,))
    print(external_features)
    
    dense1 = Dense(128,activation='tanh')
    temp = Concatenate(axis=1)([state_c2,external_features])
    dense1_output = dense1(temp)
    
    drop_out3 = Dropout(0.05)
    
    dense2 = Dense(64,activation='tanh')
    dense2_output = dense2(dense1_output)
    
    drop_out4 = Dropout(0.05)
    
    dense3 = Dense(16,activation='tanh')
    dense3_output = dense3(dense2_output)
    
    drop_out5 = Dropout(0.05)
    
    dense4 = Dense(1,activation='tanh')
    dense4_output = dense4(dense3_output)
    model = Model(inputs=[encoder_inputs,external_features], outputs=dense4_output)
    model.compile(loss='mse', optimizer='adam')
    
    
    ## fit network
    input_list = []
    input_list.append(train_X)
    input_list.append(temp_train)
    history = model.fit(input_list, train_y, epochs=1000, batch_size=10, validation_data=([test_X,temp_test], test_y), verbose=2,shuffle=False)
    

    3.3实验结果

    我们用LSTM模型和这个模型分别来预测我们的数据,我们使用前15024个小时的数据作为我们的训练集合,剩下3024个小时的数据作为我们的验证集,实验结果如图五(LSTM模型)和图六(论文模型)下:
    image.png
    图五:LSTM模型预测情况
    image.png
    图六:上述模型预测情况
    我们可以看到很明显的看到,LSTM模型预测的效果明显没有该篇文章所展示的论文模型效果好,尤其在峰值预测的时候更为明显,我们所展示的模型近乎完全拟合了。

    4.总结

    这篇文章展示了一种用于Uber不确定性估计的端到端神经网络结构。利用MC dropout和固有噪声估计,给出了一种为神经网络预测提供不确定性估计的简单方法,它覆盖率大部分的不确定性因素。这个框架的一个关键特性在于它不用修改底层架构的情况下适用于任何神经网络。
    用这种提出的不确定性估计方法来对特殊事件(如假日,体育赛事,天气等等)的不确定度进行了估计,提高了异常检测的精度。对于一些高不确定性事件中,我们可以对内部异常检测模型的置信区间进行调整,准确度能相应的提升,这有时可以为实际运营带来很大的提升。
    项目源码地址:https://momodel.cn/explore/5d3fb3121afd943289223b91?&tab=1&type=app

    5.参考资料

    论文:Deep and Confident Prediction for Time Series at Uber
    论文:Long short-term memory 
    博客:Engineering Uncertainty Estimation in Neural Networks for Time Series Prediction at Uber
    论文:Learning phrase representations
    using rnn encoder-decoder for statistical machine translation

    博客:深度学习如何估计模型不确定性(epistemic uncertainty)

    关于我们

    Mo(网址:momodel.cn)是一个支持 Python 的人工智能在线建模平台,能帮助你快速开发、训练并部署模型。


    Mo 人工智能俱乐部 是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验,已承担多领域智能项目,具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术,并以此来促进数据驱动的科学研究。

    目前俱乐部每周六在杭州举办以机器学习为主题的线下技术沙龙活动,不定期进行论文分享与学术交流。希望能汇聚来自各行各业对人工智能感兴趣的朋友,不断交流共同成长,推动人工智能民主化、应用普及化。
    image.png

    展开全文
  • 为了提高物流数据预测算法效率,实现物流交通量的有效预测,就实现物流预测算法的改进,提出基于物流数据的绿色物流预测算法。首先对传统物流预测方法局限性进行了分析,分解交通流数据的特点,并且证实分解之后的...
  • 回归预测算法.zip

    2019-07-24 15:22:42
    回归模型是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型...例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。
  • 交通预测 ;数据处理;数据去噪;数据融合。
  • 通过基于ECLS-SVM算法的单步、3步、5步和7步预测结果和不同模型的预测时间和预测均方误差的对比结果可知,ECLS-SVM算法可以有效提高交通流量预测的精度和效率,对指导交通网络资源的合理分配和规划具有重要的理论...
  • 一个bp神经网络进行交通预测的Matlab源代码,里面备有较为详细的注释,供给初学者! 不仅有最初的bp模型,还包括优化的算法,总共有多个程序段,大家可以根据自己的数据情况选择适合的神经网络结构!
  • 为解决现有船舶交通流量预测算法中存在的预测精度不高、算法稳定性差等不足,将一种数据融合BP神经网络的算法用于船舶流量的预测,不仅能较好地实现船舶流量的高精度预测,而且还增强了算法的稳定性。以宁波港口2012...
  • 基于遗传算法的小波神经网络交通预测 基于遗传算法的小波神经网络交通预测
  • 基于改进粒子群算法交通流量预测研究.pdf
  • 将最优梯度算法应用于指数平滑模型,通过构造优选并自动生成的最佳平滑参数使模型得以优化,增强了指数平滑模型对时间序列的适应能力,较好地解决了...通过实例, 与其他指数平滑预测算法相比,验证了该算法的有效性。
  • 基于遗传算法的小波神经网络交通预测-基于遗传算法的小波神经网络交通预测.pdf 基于遗传算法的小波神经网络交通预测.pdf 基于遗传算法的小波神经网络交通预测
  • 短时交通状态预测参数粒子群算法优化研究.pdf
  • 为了提高BP 神经网络预测模型对混沌时间序列的预测准确性, 提出了一种基于遗传算法优化BP 神经网络 的改进混沌时间序列预测方法. 利用遗传算法优化BP 神经网络的权值和阈值, 然后训练BP 神经网络预测模型以求...
  • 基于隐马尔可夫模型预测算法的无人车行为预测 无人车的行为预测问题一直都是无人车研究的一个重要问题,因为只有在无人车可以对周围环境以及交通参与者有了很好的理解和预测的基础上,在能保证无人车可以安全的在...

    基于隐马尔可夫模型预测算法的无人车行为预测
    无人车的行为预测问题一直都是无人车研究的一个重要问题,因为只有在无人车可以对周围环境以及交通参与者有了很好的理解和预测的基础上,在能保证无人车可以安全的在道路上行驶。但是在实际道路中,交通情况有是十分复杂的,我们无法对道路上的每个交通参与者的行为做出完全准确地预测,所以预测问题最终归结为概率问题。
    1、隐马尔可夫模型
    在介绍隐马尔科夫模型之前,为了读者更好更全面的理解隐马尔可夫模型首先介绍一些基础知识做铺。
    马尔科夫性:在一个过程当中,某一时刻的状态只和前一时刻的状态相关,这样的性质叫做马尔可夫性。满足马尔科夫性质的随机过程叫做马尔科夫决策过程
    隐马尔科夫模型和马尔可夫模型的不同之处在于隐马尔科夫模型的一些状态是不可见的,例如,一个赌徒拿着三个骰子去赌博,其中两个骰子是有问题的骰子,在赌博过程中赌徒有随意切换骰子的习惯,所以我们不知到赌徒每次用的是什么骰子,这在隐马尔可夫链中就是那些隐藏的状态。
    隐马尔科夫链用数学的方式可以表示称一个五元数组,五元数组例分别包含一个状态转移概率,输出概率、初始概率分布、隐藏状态所组成的集合还有可观测状态所组成的集合。
    2、预测算法
    和隐马尔科夫模型相关的预测算法有维特比算法和近似算法,这里我们不做详细介绍,可参考其他文献。我们采用维特比算法做预测,维特比算法可分为三个步骤:初始化、递推、终止
    3、模型建立
    考虑在一个没有红绿灯的十字路口,车流从四个大车道涌来,每个车道又包含四个小车道(假设每个大车道都有四辆车准备过路),分别是直行和转弯道。假设无人车在其中一个大车道上形式,现在以其他三个大车道为被测实体,用隐马尔科夫链来预测的这个十字路口的交通情况。
    假设实验前我们已经得到一组数据{straight ,turn,straight}
    我们设十字路口其余三个大车道分别为lane1、lane2、lane3
    Q为所有隐藏状态组成的集合,Q={lane1、lane2、lane3}
    V为可观测状态组成的集合,V={staright turn}
    开始时设车流分别从一、二、三车道的概率为0.2,0.4,0.4,即初始概率分布为{0.2,0.4,0.4}
    车流驶来的规则如下:
    1、若当前的车辆来自于一车道,则下一辆车也来自与一车道的概率为0.5,第二个车道来车的概率是0.2,第三个车道来车的概率为0.3
    2、若当前的车辆来自于二车道,则下一辆车也来自与二车道的概率为0.5,第一个车道来车的概率是0.3,第三个车道来车的概率为0.2
    3、若当前的车辆来自于三车道,则下一辆车也来自与三车道的概率为0.5,第一个车道来车的概率是0.2,第三个车道来车的概率为0.3
    在这里插入图片描述
    在这里插入图片描述
    由此我们便完成了隐马尔科夫模型的建立。
    然后我们用预测算法进行求解,公式太麻烦了,我在平板上输入不方便。所以就直接给出计算结果了。结果如下:最可能的隐藏序列为{2,2,3},也就是说最有可能的交通情况是先从第二车道出来两辆车,最后从第三车道出一辆车。最后,其实可以发现这个模型其实有一个很大的缺点,它只能预测从那个车道来车,并不能预测来的车的具体行为,所以,这个模型当作尝试试一试可以,但是还需要有很大的改进。

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,134
精华内容 7,653
关键字:

交通预测算法