最近越来越懈怠了,工作上预估的进展并不太好,预估的结果常被否掉,因为业务主观还是占主导,他们还是采用excel在做预估,也是怪自己的模型预估结果经常性是偏高的,很多细节性业务影响无法考虑到,模型调整不够灵活,被采用也是被比例缩减调整后的结果,唉,真的是一点成就感都没有,不知有没有那种灵活可调,因素影响权重可控的预估模型。
提取了《基于LSTM循环神经网络的交通流量预测》文章中部分内容,这篇文章把模型原理写的非常清晰,这里记录下来,便于后续参考使用
- 预估模型优缺点
模型 | 优点 | 缺点 |
---|---|---|
卡尔曼滤波 | 能够消除随机干扰,状态变量的估计可以分解 | 不适合非线性系统的求解 |
时间序列 | 考虑观测序列在时间序列上的关联依赖性的同时也加入了对跳点的判断分析来排除随机因素干扰 | 1.对于长时间的预测需要考虑更多的随机因素,由于模型只能利用单因素变量,模型更适用于短时交通流量预测;2.模型参数一旦确定难以更改和调整;3.在原始数据较多的情况下平稳性不足,确定模型参数过程复杂 |
线性回归 | 可进行一元、多元分析,可以进行线性于非线性分析;可对回归方程的拟合程度进行显著性检验,对于确定好的函数关系,一个自变量至鞥你对应一个因变量,保证了结果的唯一性;能够提供改预测结果的置信度和置信区间,是的预测结果的完整性和可靠性有很好的保障 | 在自变量和因变量的选取上只是一种猜测,增加了人为因素的干扰;多次加入新数据的情况下模型的参数粗腰重新计算与预估 |
支持向量机 | 能够解决非线性、高维识别、过度拟合等问题 | 1.对大规模寻来你样本求解时会设计到高阶矩阵的计算,此时矩阵存储和求解会占用计算机的大量内存,对硬件要求比较高;2.传统的支持向量机只能做二分类法,无法处理实际应用中遇到的多分类问题 |
BP神经网络 | 拥有一般模型没有的并行处理模式,使得网络在多输入变量和多神经元个数的情况下也能在较短的时间内进行各层权值的调整;且具有很好的容错性和鲁棒性,以及非线性映射能力,集成性 | 容易陷入局部最优解且网络的隐含层数目上缺少有效的指导理论;若网络训练步数过少则预测能力不够,若过多容易出现过拟合 |
灰色系统 | 不要求样本具有规律分布,可用于样本量较少的情况,能够对大量的样本特征进行提取分析 | 数据预处理过程中,灰色系统通过累加合成来处理随机性数据,而这种随机性原本就反应了事物发展规律,累计合成会失去这些有用的规律,数据可信度降低;建模过程中用指数拟合的形式建立模型,没有结合数据背后真正反应的特征与规律 |
- 神经网络介绍
2.1. 人工神经网络的操作两类:训练操作、召回操作
人工神经元的结构可描述如下:
神经元的输入向量 :
连接权值向量
假设神经元j的阈值为θj,若阈值节点的偏置固定表示为x0=1,连接权值表示为w0j=-θj
ps:对于阈值的理解如下图:
神经元j的加权输入和为
则,f()称为激励函数,神经元j的输出状态为:
常用激励函数的形式有:
线性函数:
阈值型函数:
非线性函数:
常用Sigmoid函数,在s处的斜率决定了增益的大小:
双曲正切函数
Sigmoid函数和双曲正切函数形状相同s型曲线,输入信号大小[-1,1],选用双曲正切函数。
概率型函数,即输出0,1的概率:
综上神经元j的输出为:
xj与wj含x0与woj时,
2.2. BP神经网络
BP神经网络全称是误差反向传播神经网络,BP神经网络的输入层神经元收到输入模式对后,得到**值通过隐藏层传输至输出层,输出层个神经元得到实际相应输出后,计算实际的相应输出与期望输出的差值得到两者之间的误差后,顺着误差梯度减少的方向由输出层到隐含层再到输入层修正各层神经元的连接权值,反复执行,直到误差降低到预先设定的范围或则和执行步数到达预先设定的上限。
算法描述如下:
以3层BP神经网络为例分布算法如下:
变量定义:
- 输入模式向量,m为学习模式对个数,n为输入层单元个数:
- 与输入模式向量对应的期望输出向量,q为输出层单元的个数;
- 中间隐藏层的获取的净输入向量,p为隐藏层单元个数
- 隐藏层的输出向量
- 输出层的净输入向量,q为输出层单元的个数
- 实际输出向量
- 输入层到隐含层的连接权值
- 输入层到隐含层的阈值
- 隐含层到输出层的连接权值
- 隐含层到输出层的阈值
算法流程
- 初始化,给连接权值W,V,阈值θ,β赋予初始值;
- 提供学习模式对( Xk, Yk )给输入层;
- 计算输入层的输出,输入层对于输入模式不做任何运算,仅将其传递至隐含层;
- 计算中间隐含层各个神经元的净输入和输出
- 计算输出层各个神经元的净输入和输出
- 根据期望输出,计算输出层各个神经元的实际误差dtk
- 计算隐含层的校正误差
- 调整隐含层与输出层之间的连接权值V以及输出层中各个神经元的阈值β,其中α为学习速率α∈[0,1]
- 调整输入层与隐含层之间的连接权值W以及隐含层中各个神经元的阈值θ,γ为学习速率,γ∈[0,1]
- 提供新的学习模式对,跳转至步骤3,如此往复循环只到所有的学习模式对完成训练。
- 若网络的全局误差E满足误差精度E≤ε,则终止,跳至步骤13结束训练;
- 更新网络训练步数,如训练步数未达到预先设定步数的上限,则返回步骤2‘
- 结束
2.3. LSTM循环神经网络
LSTM是指一个在时间序列上重复发生的结构,从结构上来看,常规循环神经网络可以解决现实中碰到的长期依赖问题。网络结构图如下,其中xt表示t时刻输入层的输入,ht是t时刻输出层的输出,A为模型的隐层,前一时刻经过隐层处理的信息不仅可以传递至输出层,还可传递到后一时刻作为隐层的输入之一:
算法描述:
LSTM循环神经网络具有记忆功能的关键在于隐层中的各个隐层单元可以相互连接,如下图:
未完待续。。。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:LTSM循环神经网络原理梳理 - Python技术站