预测模型

  • 1. 时间序列分析
  • 2.机器学习预测模型
    • 2.1 决策树
    • 2.2 支持向量机回归(SVR)

如果得到一份数据集,任务是要预测出一系列的值,而在预测任务中,我们大多数都采用的是拟合的方法,这篇文字主要介绍三种预测方法时间序列分析,灰色预测模型,神经网络。

1. 时间序列分析

时间序列也叫动态序列,数据是按时间和数值性成的序列。而时间序列分析有三种作用,大致可以描述为描述过去,分析规律,预测将来。接下来将会讲到三种模型(季节分解,指数平滑,ARIMA模型)。
一般情况下时间序列的数值变化规律有四种(长期趋势T,循环变动C,长期趋势T,不规则变动I)。我们先要对数据做出时间序列图,观察数据随周期的变化,进而判断序列是否随周期波动大,如果说整体序列随周期波动大,或波动不大,我们对其进行季节性分解,分别采用乘法和叠加模型。

至于缺失值可以自己选择方法填补,这里主要介绍该模型的思想以及步骤。下面介绍具体预测模型。
首先介绍的是指数平滑模型
指数平滑大致分为简单平滑,Holt线性趋势模型,阻尼趋势模型,简单季节性温特模型

简单平滑模型
这里截取了一个文章的段落。
这里说明一下平滑参数α的选择:(1)如果时间序列不规则起伏但长期趋于一个较稳定的数,那么α在(0.05,0.2)之间,(2)如果序列有明显的变化,那么α在(0.3,0.5)之间,(3)如果序列变化比较缓慢则,α在(0.1,0.4)之间。要注意的是,这个模型只能预测一期数据,原因是他的预测公式。
这里我们的第一项是要预测的。如果预测出来,再想要预测t+2时的数据,可见我们需要Xt+1的真实数据,而我们不存在它的真实数据,最终预测t+2时只能用t+1预测值代替,带入方程中就会得到Xt+2=Xt+1。就会有下面的现象。
当再到2014后面时都为一个数。各个模型的具体介绍及比较
Hole现象趋势模型
Hole对简单的指数平滑模型进行了延申,能够预测包含趋势的数据,该方法包含一个预测方程和两个平滑方法。适用条件:线性趋势,不含季节成分。此外还有Brown线性趋势模型是此模型的特例。

阻尼趋势模型
适用条件:线性趋势逐渐减弱且不含季节成分。Hole的线性趋势模型对未来预测值过高,这此基础上对该模型调整,加入阻力效应有效缓解较高的线性趋势。
模型如下:
如下是两模型的比较,红色指的是加入阻尼后的模型,蓝色指的是Hole线性趋势模型。
简单季节性
适用条件:含有稳定的季节性,不含趋势。模型如下:
温特加法与温特乘法
他们的适用条件均是含有季节性和稳定的季节成分,但是前面提到过,加法和乘法的选择是要看时间序列的波动性,呈周期波动大的则是乘法,反之是加法。下面分别是温特加法和温特乘法。

从图中更清楚的看到他们的区别,一者预测波动较大的另一个预测波动较为平缓的。
此外运用这些模型要需要时间序列的平稳性,若平稳度低,并时间序列间隔与预测无关即协方差为0则说明Xt是个白噪声序列。一般用ACF和PACF检测但是这两种检测偶然情况太多,很难判断出来,下文会提到,如果是ARMA模型,根本判断不出来。
由上面的指数平滑模型,这里预测女装的销售额,
首先对数据做出时间序列图:
从中发现整体序列呈周期波动越来越大,因此,本文采用叠加模型对周期进行季节性分解。因时间序列数据受季节性影响较大和数据的波动规律,本文选取温特的乘法模型。

通过观察数据,在每年中三月和十二月中,在一个周期内明显比其他月份的销售额大,并且随着周期的进行,我们发现整体时间序列数据随周期波动逐渐升高,因而,我们对该时间序列采用乘法模型的季节性分解,分解后如下图:

由于时间序列数据受季节性波动影响较大,本文采用温特乘法(Winter’s multiplicative)模型对数据建模
说明温特乘法序列模型的三个参数α,β,γ的值分别为0.034,2.4.6E-7,0.001,且此时Q检验服从原假设,并且做出残差ACF以及残差PACF图如下,可见在ACF检验中,所由滞后性阶数均与0无差异,而PACF中可能存在少许误差,说明扰动项噪声数据基本属于白噪声,温特乘法能够较好低识别本数据。


根据温特乘法,预测出的数据如下图所示,实际值与拟合值趋势基本符合,根据上表,拟合优度有0.815,说明拟合效果良好,预测出来的数据也显示出了周期性和波动的趋势。
最后预测出十年女装销售额的数据如下:

2.机器学习预测模型

2.1 决策树

这篇博客介绍决策树还可以,借助这篇博客,用sklearn实现回归树
决策树介绍

from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeRegressor
#导入内置数据集
X, y = load_diabetes(return_X_y=True)
#切分训练集和测试集
train_x,test_x,train_y,test_y = train_test_split(X,y,test_size=0.3)
#构建回归树模型
regressor = DecisionTreeRegressor(random_state=0).fit(train_x,train_y)
#十折交叉验证模型的性能
cross_val_score(regressor, X, y, cv=10)
#预测
regressor.predict(test_x)

另外可以对决策树可视化,效果图:

附上实现的连接:可视化

2.2 支持向量机回归(SVR)

支持向量分类产生的模型(如上所述)仅依赖于训练数据的一个子集,因为构建模型的成本函数不关心超出边界的训练点。类似地,支持向量回归生成的模型仅依赖于训练数据的一个子集,因为成本函数忽略了预测接近其目标的样本。

支持向量回归有 3 种不同的实现: SVR、NuSVR和LinearSVR。LinearSVR 提供比SVR但仅考虑线性内核更快的实现,同时NuSVR实现与SVR和略有不同的公式LinearSVR。
具体实现如下:

from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.svm import SVR
from sklearn import metrics
from sklearn.metrics import accuracy_score,precision_score, recall_score
'''
X:特征向量
y:样本的目标值
trn_x:训练集的特征
val_x:测试集的特征
trn_y:训练集的目标值
val_y:测试集的目标值
'''
trn_x, val_x, trn_y, val_y = train_test_split(X, y, test_size=0.3, random_state=42)
'''
kernel参数可选:{'linear','rbf','sigmoid'...}
'''
clf2 = SVR(kernel='linear',C=15,gamma='auto',probability=True,random_state=42).fit(trn_x,trn_y)resu = clf2.predict(val_x)
y_pred_gbc = clf2.predict_proba(val_x)[:,1]
y_pred = clf2.predict(val_x)
y=np.array(val_y)print('-'*10,'svm','-'*10)
fpr, tpr, thresholds = metrics.roc_curve(y,y_pred_gbc,pos_label=1)
#输出测试集的Accuracy
print('acc',accuracy_score(val_y,y_pred))

常见的预测模型及算法相关推荐

  1. 编程面试过程中最常见的10大算法

    编程面试过程中最常见的10大算法 编程语言:C/C++ 1. 字符串 如果IDE没有代码自动补全功能,所以你应该记住下面的这些方法. toCharArray() // 获得字符串对应的char数组 A ...

  2. 基于深度学习的目标检测算法:SSD——常见的目标检测算法

    from:https://blog.csdn.net/u013989576/article/details/73439202 问题引入: 目前,常见的目标检测算法,如Faster R-CNN,存在着速 ...

  3. JVM 调优实战--常见的垃圾回收算法及垃圾收集器组合

    什么是垃圾 C语言申请内存:malloc free C++: new delete c/C++ 手动回收内存 Java: new ? 自动内存回收,编程上简单,系统不容易出错,手动释放内存,容易出两种 ...

  4. 12_信息熵,信息熵公式,信息增益,决策树、常见决策树使用的算法、决策树的流程、决策树API、决策树案例、随机森林、随机森林的构建过程、随机森林API、随机森林的优缺点、随机森林案例

    1 信息熵 以下来自:https://www.zhihu.com/question/22178202/answer/161732605 1.2 信息熵的公式 先抛出信息熵公式如下: 1.2 信息熵 信 ...

  5. Python数据结构常见的八大排序算法(详细整理)

    前言 八大排序,三大查找是<数据结构>当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法. 常见的八大排序算法,他们之间关系如下: 排序算法.png 他们的性能比较: 下 ...

  6. 预测算法模型_如何测量预测模型或算法的准确性第1部分。

    预测算法模型 在开发预测模型和算法时,无论是线性回归模型还是ARIMA模型 ,重要的是量化模型对未来观测的适应程度. 计算模型的正确性的最简单方法之一是使用预测值和实际值之间的误差. 从那里开始,有几 ...

  7. 【安全算法之概述】一文带你简要了解常见常用的安全算法(RT-Thread技术论坛优秀文章)

    [安全算法之概述]一文带你简要了解常见常用的安全算法 0 前言 1 算法的大致分类 2 对称加解密算法 2.1 DES/TDES算法 2.2 AES算法 2.3 SM4算法 2.4 RC2.RC4算法 ...

  8. java常见的hash算法_常见的哈希算法和用途

    写在前面 哈希算法经常会被用到,比如我们Go里面的map,Java的HashMap,目前最流行的缓存Redis都大量用到了哈希算法.它们支持把很多类型的数据进行哈希计算,我们实际使用的时候并不用考虑哈 ...

  9. 常见的限流算法与实现

    限流的实现 常见的限流算法: 限流是对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机. 常见的限流算法有三种: 计数器限流(固定窗口) 原理: 时间 ...

  10. 常见的限流算法的原理以及优缺点

    原文网址:常见的限流算法的原理以及优缺点_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍限流常用的算法及其优缺点. 常用的限流算法有: 计数器(固定窗口)算法 滑动窗口算法 漏桶算法 令牌桶算 ...

最新文章

  1. 执行高性能任务的强大桌面计算机是,用于高性能任务的强大的桌面计算机是一个______。...
  2. 自己写的程序密码功能 ------数字功能
  3. Element DOM Tree jQuery plugin – Firebug like functionality | RockingCode
  4. C++ 命名空间 实战(一)
  5. EntityFramwork(1) 源地址https://msdn.microsoft.com/zh-cn/data/jj193542
  6. Lambda 表达式详解~Stream Pipelines
  7. 查找树的指定层级_阿里面试,问了B+树,这个回答让我通过了
  8. 数据结构之栈与递归的应用(全排列递归解法)
  9. linq to sql 详
  10. 再论:男人有多大责任和感恩代表着有多大的驾驭能力和事业能力
  11. Docker Compose 笔记
  12. J2me调用wap浏览器
  13. 幼儿园数学目标_大班数学领域目标
  14. 【2023秋招】网易雷火游戏研发工程师笔试
  15. w8ndows 秒表,谁最快?Win10/8/7开关机速度大比拼
  16. linux修复磁盘坏道
  17. 给在读研究生+未来要读研同学们的一封受益匪浅的信
  18. 函数最值题目及答案_高一函数题目及答案解析
  19. 【Spring Cloud 2】软件架构设计,Java游戏合集百度云盘
  20. 如何连接etc/eth池,最安全的方法是什么?

热门文章

  1. BT种子下载软件uTorrent Pro v3.5.5.45972
  2. vcredist_x86.exe 静默安装方法
  3. 翼虎AE教程 Max贴图教程 地址备份。。。。
  4. 英语学习/词典app行业top5简要分析
  5. 性能测试adb常用命令
  6. linux系统商店下载的软件到哪了,linux下使用第三方商店安装应用
  7. C语言基础知识目录大纲
  8. Latex tabular 表格
  9. ABAQUS使用功能总结
  10. mes管理系统php原码,MES系统_MES车间管理系统_轻量化定制方案