ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

IBM Machine Learning学习笔记——Time Series and Survival Analysis

2020-12-25 16:33:07  阅读:259  来源: 互联网

标签:IBM Series Survival 预测 分解 时间 序列 模型 季节性


文章目录

参考文章:时间序列分析

一、时间序列介绍

1.时间序列分析介绍

时间序列:依照时间顺序组织的一组数据,数据通常是有规律的进行采集。

对于时间序列问题,存在以下特点:数据可能和时间相关; 通常是不稳定的(难以建模);需要大量数据。并且,对某一时间的预测会用在之后一段时间的预测,如果出错就会导致后续的一连串错误。因此,原始的回归方法对于时间序列模型无法进行有效的预测

在评估时间序列的预测结果方面也充满着挑战。例如在商业分析中对于销量的预测还要考虑成本等许多问题,在得到结果时也需要很长的时间。

预测问题的分类:

  • 单变量:单一的时间序列,包括连续型数据、类别型数据和两类别数据。可以同时预测多个不相关的序列
  • 多变量:多个相关的序列,例如利润由销量、成本等有关。

2.时间序列分解

时间序列数据可以被分解为几个部分:

  • 趋势(trend):长期的方向,例如房价一直都是上涨的趋势
  • 季节性(seasonality):阶段性表现,例如冬天羽绒服卖得好,夏天短袖卖得好
  • 残差(residual):不规律的波动,从原始时间序列移除趋势和季节性得到的随机波动。

大体上讲,如果我们能够首先移除已知来源的方差(例如趋势和季节性),模型能够表现的更好。

分解模型:

  1. 加法分解:value(观察值)=T(趋势)+S(季节性)+R(残差)
  2. 乘法分解,通过log变换可以将乘法分解转变为加法分解:value = T x S x R
  3. 混合分解:加法分解和乘法分解的结合

加法分解适用于季节性和趋势无关,乘法分解适用于季节性和趋势有关。混合分解则适用于时间序列中的一些值趋近或等于0。

分解时间序列的方法有很多,以下列举几个:

  • 指数平滑法
  • 本地散点平滑估计(locally estimated scatterplot smoothing)
  • 基于频率的方法

分解模型的python实现statsmodels.tsa.seasonal.seasonal_decompose

二、平稳性和时间序列平滑

1.稳定性和自相关

平稳性影响建模和预测的能力。一个平稳的序列有如下特征:稳定的均值;稳定的方差;没有阶段性成分(季节性变量);稳定的自相关结构(某一天的数值与之前的数据相关)。不平稳的序列很难建模,对于不平稳序列,处理方法如下:

  1. 识别不平稳的来源
  2. 转换序列使其变得平稳
  3. 通过平稳的序列进行建模

识别不平稳数据的方法:

  • Run-sequence plots:该方法是未经调整的时间序列数据的可视化图,通常是进行时间序列分析的第一步,通过观察曲线图,可以初步了解是否有趋势、季节性以及自相关性
  • 总结统计特征(summary statistics):计算随时间进行的均值和方差,一种做法是将数据分桶然后计算每个桶的统计特征量
  • 直方图统计(histogram plot);如果数据分布呈现正态分布,数据很可能是平稳的,反之不平稳
  • Dickey-Fuller检验:ADF检验是一种假设检验,返回一个p值,若p值小于0.05则认为是不稳定的。对于小数据集或者方差变化较大的数据,应将该方法和其他方法一同使用

将不平稳序列转换为平稳序列的方法:

2.时间序列平滑

平滑过程通常能够减少噪声的影响从而提升对序列的预测能力,平滑数据的方法有很多种,比如移动平均法、指数平均法等。

(1)移动平均法

移动平均法可以避免局部波动的敏感性,两种基本的方法分别是等权重移动平均和指数加权移动平均。

等权重移动平均:首先选择窗口的大小,这里假设为3,之后首先计算前三个数的平均值,之后将窗口向后滑动,得到第2-4个数的平均值,以此类推直到到达最后一个数。等权重移动平均法在处理存在趋势变化较大的数据时效果不好,因此可以采用指数加权移动平均法。

指数加权移动平均:首先选择窗口的大小,这里假设为3,之后不同于直接计算三个数的平均值,这里我们对这三个数进行指数加权,加权方法例如w+w^2+ w^3=1,这里可以算出w约等于0.543。因此和预测目标距离越近的数有更大的权重。

(2)指数平均法

一阶指数平均:
在这里插入图片描述
二阶指数平均:可以减小趋势的影响
在这里插入图片描述

三阶指数平均:可以减小趋势和季节性的影响
在这里插入图片描述

三、ARMA模型

1.ARMA模型

ARMA模型包括两个模型:AR(autoregression)和MA(moving average),该方法也叫做Box-Jenkins方法:

  • 自回归模型:依靠模型本身过去p个值,使用类似线性回归的方式预测序列
  • 移动平均模型:依靠过去的q个预测误差赋予不同权重来预测序列

确定p和q的方法是可以通过自相关图和部分自相关图确定,也可以将其作为超参数用网格搜索的方式确实

使用ARMA模型需要注意的是:

  • 时间序列需要是稳定的
  • 序列中至少要有100个值
  • 判断序列是否包含季节性

判断季节性是否存在的几种方法:

  • 自相关图和部分自相关图:
  • 季节性子序列图
  • 直觉:在特点情境中例如节假日

选择模型的方法:
在这里插入图片描述

2.ARIMA和SARIMA模型

ARIMA

ARIMA模型是ARMA模型在整合时间序列(integrated time seires)上的扩展。

整合时间序列:由于将过去的值累加到一起形成的时间序列,例如股票价格。通过差分的方法可以将其转换成平稳序列。

ARIMA模型包含三个模型,每个模型都有对应的参数p、d、q:

  • AR模型:同上
  • MA模型:同上
  • 整合部分模型:将不平稳时间序列经过多次差分可使其变得平稳,定义参数d作为差分的次数

SARIMA

SARIMA(Seasinal-ARIMA)是ARIMA在季节性方面的扩展。相比与ARIMA的参数,SARIMA多了三个参数(P、D、Q),这三个参数表示的含义和p、d、q相同,区别在于这三个参数只在某一个季节应用

四、深度学习和存活分析预测

1.用于预测的深度学习

利用RNN、LSTM等深度学习方法可以更有效的对时间序列问题进行预测

2.生存分析

参考文章:生存分析(Survival Analysis)、Cox风险比例回归模型(Cox proportional hazards model)及C-index【技术分享】生存回归

Kaplan-Meier曲线python实现:lifelines.KaplanMeierFitter

标签:IBM,Series,Survival,预测,分解,时间,序列,模型,季节性
来源: https://blog.csdn.net/weixin_45325331/article/details/111472847

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有