5、混合模型(Hybrid Models)

news2024/11/24 3:50:47

将两个预测模型的优势结合起来。

文章目录

  • 1、简介
  • 2、组件和残差
  • 3、混合预测与残差
      • 3.1设计混合模型
  • 4、示例 - 美国零售销售

1、简介

线性回归擅长推断趋势,但不能学习交互。XGBoost擅长学习交互,但不能推断趋势。在这个课程中,我们将学习如何创建"混合"预测器,这些预测器结合了互补的学习算法,让一个算法的优点弥补另一个算法的缺点。

2、组件和残差

为了我们能设计有效的混合模型,我们需要更好地理解时间序列是如何构建的。到目前为止,我们已经研究了三种依赖模式:趋势、季节性和周期性。许多时间序列可以通过仅包含这三个组件加上一些基本不可预测的、完全随机的误差的加法模型来紧密描述:

序列 = 趋势 + 季节性 + 周期性 + 误差

在这个模型中,我们将每一项称为时间序列的组件

模型的残差是模型训练的目标和模型做出的预测之间的差异——换句话说,就是实际曲线和拟合曲线之间的差异。将残差与特征进行绘图,你会得到目标的"剩余"部分,或者说模型从该特征中未能学习到的目标部分。
目标序列和预测(蓝色)之间的差异给出了残差序列。
目标序列和预测(蓝色)之间的差异给出了残差序列。

上图左侧是Tunnel Traffic序列的一部分和第3课的趋势-季节曲线。减去拟合曲线后,右侧留下的是残差。残差包含了趋势-季节模型没有从Tunnel Traffic中学习到的所有内容。

我们可以想象学习时间序列的组件是一个迭代过程:首先学习趋势并从序列中减去它,然后从去趋势的残差中学习季节性并减去季节性,然后学习周期性并减去周期性,最后只剩下不可预测的误差。
在这里插入图片描述
将我们学习到的所有组件加在一起,我们就得到了完整的模型。如果你在一套完整的特征上训练线性回归,这些特征模拟了趋势、季节性和周期性,那么这基本上就是线性回归会做的事情。
在这里插入图片描述
将学习到的组件相加以获得完整的模型。

3、混合预测与残差

在之前的课程中,我们使用一个算法(线性回归)一次性学习所有的组件。但是,也可以使用一个算法来学习一部分组件,然后使用另一个算法来学习剩余的组件。这样我们可以始终为每个组件选择最好的算法。为此,我们使用一个算法来拟合原始序列,然后使用第二个算法来拟合残差序列。

具体过程如下:

# 1. 使用第一个模型进行训练和预测
model_1.fit(X_train_1, y_train)
y_pred_1 = model_1.predict(X_train)

# 2. 在残差上使用第二个模型进行训练和预测
model_2.fit(X_train_2, y_train - y_pred_1)
y_pred_2 = model_2.predict(X_train_2)

# 3. 相加得到总体预测
y_pred = y_pred_1 + y_pred_2

我们通常会根据我们希望每个模型学习什么来使用不同的特征集(上述的X_train_1X_train_2)。例如,如果我们使用第一个模型来学习趋势,我们通常不需要为第二个模型提供趋势特征。

虽然可以使用超过两个模型,但在实践中,这似乎并不特别有帮助。事实上,构建混合模型的最常见策略就是我们刚刚描述的:一个简单(通常是线性)的学习算法,后面跟着一个复杂的、非线性的学习器,如GBDT或深度神经网络,简单的模型通常被设计为后面强大算法的"助手"。

3.1设计混合模型

除了我们在这节课中概述的方式,还有许多其他方式可以组合机器学习模型。然而,成功地组合模型需要我们深入了解这些算法是如何运作的。

回归算法通常有两种方式可以进行预测:要么通过转换特征,要么通过转换目标。特征转换算法学习一些数学函数,该函数将特征作为输入,然后将它们组合和转换,以产生一个与训练集中的目标值匹配的输出。线性回归和神经网络属于这种类型。

目标转换算法使用特征将训练集中的目标值分组,并通过平均一个组中的值来进行预测;一组特征只是指示哪个组进行平均。决策树和最近邻属于这种类型。

重要的是:特征转换器通常可以在给定适当的特征输入的情况下,将目标值外推到训练集之外,但目标转换器的预测总是会被限制在训练集的范围内。如果时间虚拟变量继续计算时间步长,线性回归继续绘制趋势线。给定相同的时间虚拟变量,决策树将永远预测训练数据的最后一步所指示的趋势。决策树不能外推趋势。 随机森林和梯度提升决策树(如XGBoost)是决策树的集成,所以它们也不能外推趋势。
在这里插入图片描述
决策树无法超越训练集外推趋势。

这种差异是本课程中混合设计的动机:使用线性回归来外推趋势,转换目标以去除趋势,并将XGBoost应用于去趋势的残差。要混合神经网络(一个特征转换器),你可以将另一个模型的预测作为特征包含进来,神经网络然后将其作为自己的预测的一部分。拟合残差的方法实际上是梯度提升算法使用的相同方法,所以我们将这些称为增强混合;使用预测作为特征的方法被称为"堆叠",所以我们将这些称为堆叠混合。

在竞赛中获胜的混合模型

以下是一些过去竞赛中得分最高的解决方案,供你参考:

  • STL与指数平滑的增强 - 沃尔玛招聘 - 商店销售预测
  • ARIMA和指数平滑与GBDT的增强 - Rossmann商店销售
  • 堆叠和增强混合的集成 - 网络流量时间序列预测
  • 指数平滑与LSTM神经网络的堆叠 - M4(非Kaggle)

4、示例 - 美国零售销售

美国零售销售数据集包含了1992年至2019年各零售行业的月销售数据,这些数据由美国人口普查局收集。我们的目标将是预测2016年至2019年的销售额,给定早些年份的销售额。除了创建线性回归+XGBoost混合模型,我们还将看到如何为XGBoost使用设置时间序列数据集。

In [1]:

from pathlib import Path
from warnings import simplefilter

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from statsmodels.tsa.deterministic import CalendarFourier, DeterministicProcess
from</

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1424888.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分割头篇 | 原创自研 | YOLOv8 更换 SEResNeXtBottleneck 头 | 附详细结构图

左图:ResNet 的一个模块。右图:复杂度大致相同的 ResNeXt 模块,基数(cardinality)为32。图中的一层表示为(输入通道数,滤波器大小,输出通道数)。 1. 思路 ResNeXt是微软研究院在2017年发表的成果。它的设计灵感来自于经典的ResNet模型,但ResNeXt有个特别之处:它采用…

BeanFactory创建过程(基于Servlet)

BeanFactory创建过程&#xff08;基于Servlet&#xff09; 1. 概述1.2 那么问题就来了1.2.1 谁负责AnnotationConfigServletWebServerApplicationContext实例呢&#xff1f;1.2.2 ApplicationContextFactory初始化过程又是怎么样的&#xff1f; 1.3 总结 2. 最后 1. 概述 Anno…

【C++零散小记录】类中重载返回类型为常量引用和非常量引用的函数

#include <iostream>class hyp { public://这里后面必须要加上const修饰符&#xff0c;否则这两个test函数不能重载int const& test() const{std::cout << "const" << std::endl;return num;}//int &test()//{// std::cout << &qu…

吉大计网笔记

Osi七层模型 物理层&#xff1a;比特流的透明传输 数据链路层&#xff1a;ip数据包装成帧并传输&#xff0c;处理相邻节点的数据传输。 网络层&#xff1a;选择路由和交换节点&#xff0c;处理任意节点的数据传输。 运输层&#xff1a;主机进程的数据传输服务&#xff0c;端到端…

雷达DoA估计的跨行业应用--麦克风阵列声源定位(Matlab仿真)

一、概述 麦克风阵列&#xff1a; 麦克风阵列是由一定数目的声学传感器&#xff08;麦克风&#xff09;按照一定规则排列的多麦克风系统&#xff0c;而基于麦克风阵列的声源定位是指用麦克风拾取声音信号&#xff0c;通过对麦克风阵列的各路输出信号进行分析和处理&#xff0c;…

Kubernetes实战(二十一)-event事件持久化

默认情况下&#xff0c; K8S 会将事件保留在 etcd 中一个小时&#xff0c;超过1小时的事件将无法看到&#xff0c;所以 K8S 默认保留事件的时间不足以来更深入的了解集群&#xff0c;所以将事件导出到集群外存储是有必要的&#xff0c;以实现可观测性和告警。 Event事件持久化…

央视见证|“看见中国汽车”走进首家汽车供应链企业东软睿驰

由工业和信息化部支持指导&#xff0c;中国汽车工业协会和央视网联合出品的2023《看见中国汽车》专题东软睿驰篇正式上线&#xff0c;记录品牌向上专项行动走进首家汽车供应链企业&#xff0c;展示东软睿驰围绕“成为OEM 软件定义汽车时代最可信赖的合作伙伴”核心战略的创新发…

IT行业证书大揭秘:哪些证书含金量最高?

文章目录 &#x1f4d6; 介绍 &#x1f4d6;&#x1f4d2; 证书 &#x1f4d2; &#x1f4d6; 介绍 &#x1f4d6; 在IT行业&#xff0c;有许多证书被认为是含金量高的&#xff0c;可以帮助个人在职业发展中取得重要的竞争优势。以下是一些IT行业中被认为含金量高的证书&#x…

信用飞品牌升级——全方位优化用户体验 更周到更暖心

在当今社会,金融科技的迅速发展让信贷服务变得更加便捷。信贷品牌的崛起和发展,正在改变着人们的金融生活。消费者在选择信贷服务时,不仅仅关注信贷的额度和利率,服务体验也成为了一大关注点。一个优秀的信贷品牌,不仅要能满足用户的基本信贷需求,更要在服务体验上赢得用户的认…

基于 Echarts 的 Python 图表库:Pyecahrts交互式的日历图和3D柱状图

文章目录 概述一、日历图和柱状图介绍1. 日历图基本概述2. 日历图使用场景3. 柱状图基本概述4. 柱状图使用场景 二、代码实例1. Pyecharts绘制日历图2. Pyecharts绘制2D柱状图3. Pyecharts绘制3D柱状图 总结 概述 本文将引领读者深入了解数据可视化领域中的两个强大工具&#…

【2024全网最详细】Google 搜索命令终极指南

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 你是否尝试过使用 Google 搜索作为免费的 SEO …

【解刊】审稿人极其友好!中科院2区SCI,3个月录用,论文质量要求宽松!

计算机类 • 高分快刊 今天带来Springer旗下计算机领域高分快刊&#xff0c;有投稿经验作者表示期刊审稿人非常友好&#xff0c;具体情况一起来看看下文解析。如有投稿意向可重点关注&#xff1a; 01 期刊简介 Complex & Intelligent Systems ✅出版社&#xff1a;Sprin…

“互联网+水务”——智慧水务2.0推动水务行业产业结构变革

结合国内外水务企业数字化经典实践&#xff0c;探讨智慧水务2.0发展趋势&#xff0c;思考未来“标准体系数字资产使能技术”数字水务的发展态势&#xff0c;为我国水务企业制定和实施有效的数字化转型战略提供参考和借鉴。 通过数据清洗工作&#xff0c;识别并改善数据重复、数…

Linux useradd、gpasswd、chmod 等关于用户及权限设置

创建用户 useradd zen01 useradd zen02 useradd zen03 创建组 groupadd dev-group 把用户添加到dev-group组中 gpasswd -a zen01 dev-group gpasswd -a zen02 dev-group gpasswd -a zen03 dev-group 查看 dev-group组中用户列表 grep ‘dev-group’ /etc/group 创建文件 mkdir…

【go语言】error 错误处理详解

前言 在软件开发中&#xff0c;错误码是一种重要的信息传递方式&#xff0c;对于开发者和用户都具有重要的意义。一般情况下&#xff0c;系统出现故障&#xff0c;由运维在狂轰滥炸的报警信息中找到关键错误信息和研发人员进行沟通&#xff0c;再查看代码逻辑理清问题根源&…

dolist案例实现

这段代码是一个使用Vue.js实现的简单的ToDoList&#xff08;待办事项列表&#xff09;应用。我们分几个部分详细解释这段代码。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>todolist</title&g…

算法练习01——哈希部分双指针

目录 1. 两数之和(*)242. 有效的字母异位词(easy)49. 字母异位词分组(*)349. 两个数组的交集202. 快乐数(1.使用Set存哈希&#xff0c;2.快慢指针)454. 四数相加 II383. 赎金信15. 三数之和*(双指针)18. 四数之和*(双指针)128. 最长连续序列 1. 两数之和(*) https://leetcode.…

Acwing---797.差分

差分 1.题目2.基本思想3.代码实现 1.题目 输入一个长度为 n n n 的整数序列。 接下来输入 m m m 个操作&#xff0c;每个操作包含三个整数 l , r , c l,r,c l,r,c&#xff0c;表示将序列中 [ l , r ] [l,r] [l,r] 之间的每个数加上 c c c。 请你输出进行完所有操作后的…

2024新利好!一文读懂Shopee 3PF PFF一店多运模式

2023年年底&#xff0c;Shopee平台又有大动作&#xff01;正式上线了3PF PFF一店多运模式&#xff0c;已完成库存管理模式升级的三方仓卖家&#xff0c;即可开启一店多运新模式。 图源&#xff1a;Shopee 一、3PF PFF模式优势解析 三方仓一店多运&#xff08;3PF PFF&#xf…

什么可以用手机蓝牙控制LED???#串口通信【下】

什么可以用手机蓝牙控制LED&#xff1f;&#xff1f;&#xff1f;#串口通信【下】 前言预备知识1.小白玩串口控制的ASSII避坑1.1问题引入1.2解决问题 2.串口支持单词型指令控制2.1实现串口支持单词型指令控制的核心思路2.2利用字符数组来承接单词型指令2.3利用strstr函数来查找…