活动介绍

基于机器学习的时间序列预测:降维回归方法

立即解锁
发布时间: 2025-09-01 00:33:33 阅读量: 2 订阅数: 13 AIGC
### 基于机器学习的时间序列预测:降维回归方法 在时间序列预测领域,传统上我们主要依赖专门的时间序列模型。但其实,探索用于解决回归任务的其他算法也是很有意义的,这或许能提升我们模型的性能。本文将介绍如何使用降维回归(Reduced Regression)方法进行时间序列预测,并结合美国失业率数据集给出具体示例。 #### 1. tsfresh库的特性 tsfresh是一个用于时间序列数据自动特征生成的库,它有以下三个有趣的特性: - **基于假设检验的特征选择算法**:该库能够生成成百上千个特征,因此选择与我们用例相关的特征至关重要。它使用fresh算法,即基于可扩展假设检验的特征提取算法来进行特征选择。 - **处理大型数据集的能力**:通过并行处理,它可以在本地机器上使用多进程,或者在数据无法放入单台机器时使用Spark或Dask集群,来处理大型数据集的特征生成和选择。 - **与scikit - learn管道集成**:它提供了诸如FeatureAugmenter或FeatureSelector等转换器类,可与scikit - learn管道一起使用。 #### 2. 时间序列预测的降维回归 由于时间序列数据具有时间依赖性,我们不能直接使用回归模型进行时间序列预测。需要先将时间序列数据转换为监督学习问题,这一过程称为降维(Reduction)。降维将时间序列预测等学习任务分解为更简单的任务,然后再组合这些简单任务来解决原始问题,实际上就是将预测任务转换为表格回归问题。 在实践中,降维使用滑动窗口将时间序列分割成固定长度的窗口。例如,对于一个从1到100的连续数字时间序列,使用长度为5的滑动窗口,第一个窗口将观测值1到4作为特征,观测值5作为目标;第二个窗口将观测值2到5作为特征,观测值6作为目标,依此类推。将所有这些窗口排列在一起,就得到了可以使用传统回归算法进行时间序列预测的表格格式数据。 不过,降维回归模型也有一些局限性,比如它会丢失时间序列模型的典型特征,即失去时间概念,因此无法处理趋势和季节性。所以,通常先对数据进行去趋势和去季节性处理,再进行降维会更有效。 #### 3. 示例:使用美国失业率数据集进行降维回归预测 以下是使用降维回归方法对美国失业率进行12步超前预测的具体步骤: ##### 3.1 导入必要的库 ```python from sktime.utils.plotting import plot_series from sktime.forecasting.model_selection import ( temporal_train_test_split, ExpandingWindowSplitter ) from sktime.forecasting.base import ForecastingHorizon from sktime.forecasting.compose import ( make_reduction, TransformedTargetForecaster, EnsembleForecaster ) from sktime.performance_metrics.forecasting import ( mean_absolute_percentage_error ) from sktime.transformations.series.detrend import ( Deseasonalizer, Detrender ) from sktime.forecasting.trend import PolynomialTrendForecaster from sktime.forecasting.model_evaluation import evaluate from sktime.forecasting.arima import AutoARIMA from sklearn.ensemble import RandomForestRegressor ``` ##### 3.2 划分训练集和测试集 ```python y_train, y_test = temporal_train_test_split( y, test_size=12 ) plot_series( y_train, y_test, labels=["y_train", "y_test"] ) ``` ##### 3.3 设置预测 horizons ```python fh = ForecastingHorizon(y_test.index, is_relative=False) fh ``` ##### 3.4 实例化降维回归模型,拟合数据并进行预测 ```python regressor = RandomForestRegressor(random_state=42) rf_forecaster = make_reduction( estimator=regressor, strategy="recursive", window_length=12 ) rf_forecaster.fit(y_train) y_pred_1 = rf_forecaster.predict(fh) ``` ##### 3.5 评估预测性能 ```python mape_1 = mean_absolute_percentage_error( y_test, y_pred_1, symmetric=False ) fig, ax = plot_series( y_train["2016":], y_test, y_pred_1, labels=["y_train", "y_test", "y_pred"] ) ax.set_title(f"MAPE: {100*mape_1:.2f}%") ``` 从上述步骤得到的预测结果来看,几乎平坦的预测可能与降维回归方法的局限性有关,即它无法很好地捕捉时间序列的趋势和季节性。为了解决这个问题,我们可以先对时间序列进行去季节性和去趋势处理,再使用降维回归方法。 ##### 3.6 对时间序列进行去季节性处理 ```python deseasonalizer = Deseasonalizer( ```
corwn 最低0.47元/天 解锁专栏
赠100次下载
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

张_伟_杰

人工智能专家
人工智能和大数据领域有超过10年的工作经验,拥有深厚的技术功底,曾先后就职于多家知名科技公司。职业生涯中,曾担任人工智能工程师和数据科学家,负责开发和优化各种人工智能和大数据应用。在人工智能算法和技术,包括机器学习、深度学习、自然语言处理等领域有一定的研究
最低0.47元/天 解锁专栏
赠100次下载
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

基于图的实体解析实现方法

# 基于图的实体解析实现方法 ## 1. 基于Jaccard相似度的简单实体解析 ### 1.1 Jaccard相似度计算与连接创建 以下代码块展示了Jaccard相似度的最终计算以及用户之间连接的创建: ```sql Result = SELECT A FROM User:A ACCUM FOREACH (B, overlap) IN A.@intersection DO FLOAT score = overlap*1.0/(@@deg.get(A) + @@deg.get(B) - overlap), IF score > threshold THEN I

基于情感词典的影评情感分析

### 基于情感词典的影评情感分析 #### 1. 影评词汇分析 在影评情感分析中,正负面影评所使用的词汇量都很大。正面影评使用的独特词汇更多,整体篇幅也更长。这意味着,即使处理的是每个类别有1000条影评的平衡数据集,正面影评提供的信息也比负面影评更多。 若想让词(特征)空间更紧凑,可以只使用词元或特定词性的词汇,比如形容词和副词是承载情感的优质选择。它们的分布与所有词形和词元的分布趋势一致,正面影评中的独特词汇更多(正面影评有2374个独特形容词和574个独特副词,而负面影评有1906个独特形容词和495个独特副词)。这或许能提供更强的情感相关信号,但需注意,词汇数量较少可能会使基于形

自然语言处理与医学图像分析中的图学习与网络科学应用

### 自然语言处理与医学图像分析中的图学习与网络科学应用 在自然语言处理(NLP)和医学图像分析领域,图学习与网络科学正发挥着越来越重要的作用。下面将详细介绍这两个领域中的相关技术和应用。 #### 自然语言处理中的图学习应用 ##### 文本分割 文本分割包含两个阶段。首先,根据单词抽象的连接创建一个两层树,接着从这个早期阶段创建图,然后选择通过早期创建的图识别出的关键片段。具体步骤如下: 1. 用相关图的顶点表示文本中的所有句子。 2. 计算输入文档中所有句子对之间的语义相似度。 3. 对于语义相关性高于特定阈值的句子对,在图的等效节点之间添加边。 4. 计算图中所有潜在最大团的集合

大语言模型评估与应用指南

### 大语言模型评估与应用指南 在人工智能领域,大语言模型(LLM)的应用越来越广泛。在将任何 LLM 应用投入生产之前,对其输出进行评估是至关重要的。本文将介绍相关的评估方法和工具,帮助你更好地了解和应用 LLM。 #### 1. 模型相关术语及 MLOps 在深入探讨 LLM 评估之前,我们先了解一些相关术语: - **Foundational Model Orchestration (FOMO)**:专门解决与基础模型合作时面临的挑战。基础模型是在广泛数据上训练的,可以适应各种下游任务。FOMO 强调管理多步骤过程、与外部资源集成以及协调涉及这些模型的工作流程的必要性。 - **M

探索最先进的自然语言处理机器学习模型

### 探索最先进的自然语言处理机器学习模型 #### 1. BERT架构 BERT模型基于双向编码,为语言表示提供了一种复杂的方法。它有两种不同的变体: | 模型变体 | 层数 | 注意力头数量 | 参数数量 | | ---- | ---- | ---- | ---- | | BERT Base | 12个Transformer块(层) | 12个 | 约1.1亿 | | BERT Large | 24个Transformer块(层) | 16个 | 约3.4亿 | 这里我们主要关注BERT Base的架构,它是基于Transformer原理构建的。 #### 2. Transform

数据可视化在科学传播中的应用与挑战

# 数据可视化在科学传播中的应用与挑战 ## 1. 所用数据集概述 在相关研究中,使用了多种不同类型的数据集,主要包括遥感数据、信息数据和制图数据。以下是这些数据集的详细信息: | 数据类型 | 具体数据 | 时间序列 | 数据获取地址 | | --- | --- | --- | --- | | 遥感数据 | 海表温度(SST)异常 | 1982 - 2017 | https://www.ncdc.noaa.gov/oisst | | 遥感数据 | 地表温度(LST)异常 | 2002 - 2017 | https://lpdaac.usgs.gov/dataset_discovery/mo

深入探索VideoBERT、BART及相关库的应用

# 深入探索VideoBERT、BART及相关库的应用 ## 1. 文档旋转与BART预训练 文档旋转是一种特殊的文本处理方法。对于给定的文档,我们会随机挑选其中一个单词(标记)作为文档的起始点,然后将该单词之前的所有单词添加到文档末尾。例如,如果选择“playing”作为文档的起始单词,那么它之前的所有单词都会被移到文档末尾。 我们可以利用上述的噪声技术对文本进行处理,进而预训练BART模型来预测被损坏的文本。预训练完成后,还能对其进行微调以用于其他下游任务。假设我们使用预训练的BART模型进行句子分类任务,具体操作是将未损坏的句子输入到编码器,然后利用最终解码器的表示进行分类。 不同

生成式AI应用与FMOps实践

# 生成式AI应用与FMOps实践 ## 1. 程序辅助语言框架(PAL) 在处理复杂计算时,基础模型可能存在局限性。为克服这一问题,可以将模型连接到擅长执行计算的应用程序,如代码解释器,程序辅助语言模型(PAL)框架就是这样做的。 ### 1.1 PAL工作原理 PAL使用思维链(CoT)推理在中间推理步骤中生成程序,以帮助解决给定问题。这些程序随后被传递给解释器(如Python解释器),解释器运行代码并将结果返回给基础模型。具体步骤如下: 1. 添加示例到提示中,每个示例以问题开头,接着是推理步骤和解决问题的Python代码行。 2. 将新问题添加到提示中,形成PAL格式的提示。 3.

生成数据训练与神经网络的创意应用

# 生成数据训练与神经网络的创意应用 ## 1. 生成数据训练的风险 生成对抗网络(GAN)最常见的用途是训练一个能骗过判别器的生成器。训练完成后,通常会丢弃判别器,留下的生成器可以创建任意多的新数据,这些数据看起来就像是来自原始数据集。例如,我们可以生成无限数量的猫、帆船的新图像,或者语音短语、木火的烟雾效果等。 然而,使用生成数据来训练另一个神经网络是一种有风险的做法。这是因为训练好的生成器很少是完美的,存在以下几个问题: - **判别器的局限性**:很难构建一个足够强大的判别器,能注意到生成器输出中的每一个可能的细节。生成器的输出可能总是存在某种轻微的偏差,而判别器未能察觉,或者只给

BERT在多语言及句子表示中的应用

### BERT在多语言及句子表示中的应用 #### 1. 多语言BERT模型 BERT作为强大的预训练模型,在自然语言处理领域取得了显著成果。除了英文,它也被应用到多种其他语言中。 ##### 1.1 中文BERT Google Research开源了中文BERT模型,其配置与标准的BERT - base模型相同,包含12个编码器层、12个注意力头和768个隐藏单元,共有1.1亿个参数。可以从[这里](https://github.com/google - research/bert/blob/master/multilingual.md)下载预训练的中文BERT模型。使用`transf