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

文章目录

参考文章:时间序列分析

一、时间序列介绍

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)指数平均法

一阶指数平均:
IBM Machine Learning学习笔记——Time Series and Survival Analysis
二阶指数平均:可以减小趋势的影响
IBM Machine Learning学习笔记——Time Series and Survival Analysis

三阶指数平均:可以减小趋势和季节性的影响
IBM Machine Learning学习笔记——Time Series and Survival Analysis

三、ARMA模型

1.ARMA模型

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

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

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

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

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

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

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

选择模型的方法:
IBM Machine Learning学习笔记——Time Series and Survival Analysis

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

上一篇:21 Survival of Desert Life 沙漠生命的延续


下一篇:Survival Data Analysis