我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:六合公式 > 放弃序列 >

手把手教你用 Python 实现针对时间序列预测的特征选择

归档日期:05-26       文本归类:放弃序列      文章编辑:爱尚语录

  按:本文源自美国机器学习专家 Jason Brownlee 的博客,雷锋网编译。

  例如,单变量的时间序列数据集由一系列观察结果组成,它们必须被转换成输入和输出特征,才能用于监督性学习算法。

  但这里有一个问题:针对每个时间序列问题,你可以处理的特征类型和数量,却并没有明确的限制。当然,古典的时间序列分析工具(如相关图correlogram)可以帮助评估滞后变量(lag variables),但并不能直接帮助开发者对其他类型的特征进行选择,例如从时间戳(年、月、日)和移动统计信息(如移动平均线moving average)衍生的特征。

  因此,我们将在本教程中探讨如何利用基于特征重要性和特征选择的机器学习工具处理时间序列问题。

  5. 滞后变量的特征重要性:讲述如何计算和查看时间序列数据的特征重要性得分。

  6. 滞后变量的特征选择:讲述如何计算和查看时间序列数据的特征选择结果。

  在本教程中,我们将基于魁北克在 1960 到 1968 年的月度汽车销量数据进行讲解。

  本例中,我们将下载后的数据集保存为 car-sales.csv 文件,同时删去了文件中的脚注信息。

  基于 Pandas 库加载该数据集的代码如下,我们将数据保存为一个 Series 对象:

  这种季节性的变化和增长趋势虽然可以作为序列预测的关键特征,但如果需要探索其他的有助于我们做出序列预测的系统信号,就必须将它们移除。

  为了消除这种季节性变化,通常采取季节差分的办法,即生成所谓的季节性适配时间序列(seasonally adjusted time series)。

  本例中季节性变化的变化周期似乎是一年(12个月)。下面的代码展示了如何计算季节性适配时间序列,并将结果保存到文件 seasonally-adjusted.csv。

  代码中,由于最初的 12 个月没有更早的数据用以差分计算,因此被丢弃。最终得到的季节差分结果如下图所示:

  这被称为自相关(autocorrelation),并包括如何绘制自相关图,也称为相关图。 自相关图展示了每个滞后观察结果的相关性,以及这些相关性是否具有统计学的显着性。

  图中 x 轴表示滞后值,y 轴上 -1 和 1 之间则表现了这些滞后值的正负相关性。

  蓝色区域中的点表示统计学显着性。滞后值为 0 相关性为 1 的点表示观察值与其本身 100% 正相关。

  通过将滞后观察(例如t-1)作为输入变量,将当前观察(t)作为输出变量,可以将单变量的月度汽车销量数据集转换为监督学习问题。

  为了实现这一转换,在下面的代码中我们调用了 Pandas 库中的 shift 函数,通过 shift 函数我们可以为转换后的观察值创建新的队列。

  在以下示例中,我们创建了一个包含 12 个月滞后值的新时间序列,以预测当前的观察结果。

  代码中 12 个月的迁移表示前 12 行的数据不可用,因为它们包含 NaN 值。

  实际上,这个过程可以在任意的时间步长下重复进行,例如 6 或 24 个月,感兴趣的朋友可以自行尝试。

  各种决策树,例如 bagged 树和随机森林等,都可以用来计算特征值的重要性得分。

  这是一种机器学习中的常见用法,以便在开发预测模型时有效评估输入特征的相对有效性。

  这一点之所以重要,不仅是因为我们可以设计上述提到的滞后观察特征,还可以设计基于观测时间戳、滚动统计等其他类型的特征。因此,特征重要性是整理和选择特征时非常有效的一种方法。

  在下面的实例中,我们加载了上一节中创建的数据集的监督性学习视图,然后利用随机森林模型(代码中为RandomForestRegressor),总结了 12 个滞后观察中每一个的相对特征重要性得分。

  这里使用了大数量的树来保证得分的稳定性。此外,我们还用到了随机种子初始化(the random number seed is initialized),用以保证每次运行代码时都能获得相同的结果。

  图中显示 t-12 观测值的相对重要性最高,其次就是 t-2 和 t-4。

  RFE 可以创建预测模型,对特征值赋予不同的权值,并删掉那些权重最小的特征,通过不断重复这一流程,最终就能得到预期数量的特征。

  以下示例中我们演示了如何通过RFE与随机森林模型进行特征选择,注意其中输入特征的预期数量设置的是 4。

  同时,程序还会创建一个如下所示的条形图,图中显示了每个待选输入特征的选择排序(数字越小越好)。

  同样,感兴趣的朋友还可以设置不同的预期特征数量,或者换用随机森林之外的其他模型。

  在本教程中,我们通过实例代码讲解了如何通过机器学习的工具对时间序列数据进行特征选择。

本文链接:http://renfriends.com/fangqixulie/445.html