2024钉钉杯A题思路详解

news2024/11/25 13:36:24

文章目录

  • 一、问题一
    • 1.1 问题
    • 1.2 模型
    • 1.3 目标
    • 1.4 思路
    • 1.4.1 样本探究
    • 1.4.2 数据集特性探究:
    • 1.4.3 数据预处理
    • 1.4.4 数据趋势可视化
    • 1.4.5 ARIMA和LSTM两种预测模型
    • 1.4.6 参数调整
  • 二、问题二
    • 2.1 问题
    • 2.2 模型
    • 2.3 目标
    • 2.4 思路
    • 2.4.1 样本探究
    • 2.4.2 数据集特性探究
    • 2.4.3 数据预处理
    • 2.4.4 数据趋势可视化
    • 2.4.5 两种预测模型
    • 2.4.6 参数调整
  • 三、采用集成模型对A5进行预测
    • 3.1 问题
    • 3.2 模型
    • 3.3 目标
    • 3.4 思路
  • 四、一点想说的
    • 4.1 数据集的划分
    • 4.2 准确性的衡量
    • 4.3 特征选择
    • 4.4 模型选择

公众号:川川菜鸟

  题目背景明确,本题是烟草营销。直接来看题目

一、问题一

1.1 问题

对未来销量进行预测:使用历史销售数据构建2个不同类型的时间序列预测模型,分别对A1、A2香烟品牌的未来销量进行数据预测,目标为表中最后空白项。自行选择和设计模型类型、参数、结构。

1.2 模型

时序预测模型LSTM、ARIMA等;传统预测模型:随机森林、支持向量机等。

1.3 目标

对A1和A2数据集中销量数据进行预测。

1.4 思路

①对样本进行缺失值、异常值探究
②进行特征工程:从原有特征生成新交互特征
③构建模型:LSTM、ARIMA、随机森林、支持向量机等模型
④调参:贝叶斯搜索、随机搜索、网格搜索等
⑤训练集划分:留出法、K折交叉验证、K折随机交叉验证等。
下面给出一个简易版可完全实现的思路:

1.4.1 样本探究

  • 对A1:共137个样本,已知标签的有117个,未知标签的有20个。表面上是117预测20的问题。数据集大小为中等,可尝试采用长期预测。
  • 对A2:共108个样本,已知标签的有98个,未知标签的有10个。表面上是98预测10的问题。数据集大小为中等。可尝试采用长期预测。

1.4.2 数据集特性探究:

  • 数据特性:时间序列数据。每一年12个样本,即为月份数据,比如201101-201112。
  • 样品代码,名称为冗余信息,销量为预测目标。既可以单列预测,也可以考虑金额,生成新特征如价格。

1.4.3 数据预处理

  • 缺失值:观察A1数据集,销量那一列,没有缺失值。观察A2数据集,销量一列表面上没有缺失值,但实际上存在部分月份数据确实的情况,需要认为补齐,可采用均值预测、灰色预测、马尔可夫预测等,填补缺失值。
    在这里插入图片描述在这里插入图片描述

  • 异常值:这里采用箱型图剔除异常值的方法,对异常数据进行剔除。

  • 特征工程:还可采用特征工程,提取日期特征(如月份、季度等)、进行时间序列分解(如趋势、季节性和残差)等。

1.4.4 数据趋势可视化

  为确保异常值剔除有效,及对后续数据进行预测。可展示折线图进行观察。
  发现异常值剔除有效,且数据蕴含周期性。

1.4.5 ARIMA和LSTM两种预测模型

  由于题目要求两种类型的预测模型,这里采用ARIMA时间序列分析和LSTM(长短期记忆网络)销量预测。

1.4.6 参数调整

  ARIMA模型有三个主要参数:p(自回归阶数)、d(差分阶数)、q(移动平均阶数)。参数可使用网格搜索、随机搜索、贝叶斯搜索等方法调整。建议先用贝叶斯搜索试试,网格搜索可以得到非常好的结果,但消耗时间太大。随机搜索方法最后。
  LSTM模型有多个超参数需要调整,如隐藏层数、隐藏单元数、批次大小、学习率、训练轮数等。参数可使用网格搜索、随机搜索、贝叶斯搜索等调整。建议先用贝叶斯搜索试试,网格搜索可以得到非常好的结果,但消耗时间太大。随机搜索方法最后。

二、问题二

2.1 问题

对销售金额进行预测:使用历史销售数据构建2个不同类型的时间序列预测模型,分别对A3、A4香烟品牌的销售金额进行数据预测,目标为表中最后空白项。自行选择和设计模型类型、参数、结构

2.2 模型

时序预测模型LSTM、ARIMA等;传统预测模型:随机森林、支持向量机等。

2.3 目标

对A3和A4数据集中销量数据进行预测。

2.4 思路

①对样本进行缺失值、异常值探究
②进行特征工程:从原有特征生成新交互特征
③构建模型:LSTM、ARIMA、随机森林、支持向量机等模型
④调参:贝叶斯搜索、随机搜索、网格搜索等
⑤训练集划分:留出法、K折交叉验证、K折随机交叉验证等。
下面给出一个简易版可完全实现的思路:

2.4.1 样本探究

  • 对A3:共109个样本,已知标签的有99个,未知标签的有10个。表面上是99预测10的问题。数据集大小为中等,可考虑长期预测。
  • 对A4:共135个样本,已知标签的有123个,未知标签的有12个。表面上是123预测12的问题。数据集大小为中等,可考虑长期预测。

2.4.2 数据集特性探究

  • 数据特性:时间序列数据。每一年12个样本,即为月份数据,比如201101-201112。
  • 样品代码,名称为冗余信息,金额为预测目标,可考虑融合销量,生成新特征如价格。

2.4.3 数据预处理

  • 缺失值:观察A3数据集,月份那一列,表面上没有缺失值。但实际上存在一年中部分金额数据缺失的情况,例如2020年12月就没有数据,需要人为补齐。可采用均值填充或者灰色预测、马尔科夫预测等短期预测方法。对A4也可以进行同样操作。
    在这里插入图片描述

  • 异常值:这里采用箱型图剔除异常值的方法,对异常数据进行剔除。
    特征工程:还可采用特征工程,提取日期特征(如月份、季度等)、进行时间序列分解(如趋势、季节性和残差)等。

2.4.4 数据趋势可视化

  为确保异常值剔除有效,及对后续数据进行预测。可绘制折线图进行观察。
  发现异常值剔除有效,且数据蕴含周期性。

2.4.5 两种预测模型

  由于题目要求两种类型的预测模型,这里还可以采用ARIMA时间序列分析和LSTM(长短期记忆网络)销量预测。也可以采用一些传统机器学习的模型,如随机森林、梯度提升树、支持向量机等进行预测。

2.4.6 参数调整

  这里我们可以复用第一问的模型,也可以采用新的方法。这里我采用的是第一问的模型,因为时序数据后续趋势依赖时间。
  ARIMA模型有三个主要参数:p(自回归阶数)、d(差分阶数)、q(移动平均阶数)。参数可使用网格搜索、随机搜索、贝叶斯搜索等方法调整。建议先用贝叶斯搜索试试,网格搜索可以得到非常好的结果,但消耗时间太大。随机搜索方法最后。
  LSTM模型有多个超参数需要调整,如隐藏层数、隐藏单元数、批次大小、学习率、训练轮数等。参数可使用网格搜索、随机搜索、贝叶斯搜索等调整。建议先用贝叶斯搜索试试,网格搜索可以得到非常好的结果,但消耗时间太大。随机搜索方法最后。

三、采用集成模型对A5进行预测

3.1 问题

集成学习:分别对销量及销售金额预测模型的基础上,构建集成学习模型,实现对A5香烟品牌的销量和销售金额的联合预测。集成学习模型不局限于上述问题中建立的模型,可新增,以最终性能为评判标准。

3.2 模型

使用前述预测模型的结果作为输入,Bagging、Boosting、Stacking模型

3.3 目标

实现对A5品牌的销量和销售金额的联合预测。

3.4 思路

使用前述预测模型的结果作为输入,比如LSTM和ARIMA,构建集成学习模型,采用多种集成方法(如Bagging、Boosting、Stacking)提升预测性能。

四、一点想说的

4.1 数据集的划分

一般采用留出法。如想出彩,可采用k折交叉验证、随机k折交叉验证等方法。

4.2 准确性的衡量

因为是定量的预测,因此可采用准确率MSE,RMSE等进行评价。

4.3 特征选择

除了题目给出的数据,最好生成新特征,比如价格(金额/销量)预测。这样才能最大程度的融合信息,预测准确。

4.4 模型选择

ARIMA、LSTM、随机森林、支持向量机等是最基础的模型。考虑更新的模型,如季节性分解模型(如SARIMA)。

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

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

相关文章

jenkins中shell脚本中使用构建参数化Groovy变量的四种方式

jenkins中shell脚本中使用构建参数化Groovy变量的四种方式: 以字符变量为例: 流水线代码: pipeline {agent {//label "${server}"label "${28}"}stages {stage(Hello) {steps {echo Hello Worldecho "${28}"echo "…

C语言-TCP通信创建流程

TCP通信创建流程 1. 客户端创建TCP连接 在整个流程中, 主要涉及以下⼏个接⼝socket() : 创建套接字, 使⽤的套接字类型为流式套接字connect() : 连接服务器send() : 数据发送recv() : 数据接收创建套接字 首先,我们需要创建套接字,套接字是通信的基础…

Adobe Lightroom Classic 2024(LRC2024)软件下载(附下载链接)+LRC教程

目录 一、简介 二、下载 三、功能 四、使用操作 一、简介 Adobe Lightroom Classic 2024(简称LRC2024)是Adobe公司推出的一款专业级照片处理和管理软件,广泛应用于摄影师和摄影爱好者中。作为Adobe家族的一员,LRC2024在继承前…

平价不入耳运动耳机哪款最好?五款回购榜优品种草

许多有健身运动习惯的朋友在选择耳机时会优先考虑不入耳耳机,因为它佩戴舒适,稳固性和安全性更高,不仅在运动时不会轻易掉落,还能够方便我们在进行户外运动时接收外界的声音。那么,平价不入耳运动耳机哪款最好&#xf…

Spark实时(一):StructuredStreaming 介绍

文章目录 Structured Streaming 介绍 一、SparkStreaming实时数据处理痛点 1、复杂的编程模式 2、SparkStreaming处理实时数据只支持Processing Time 3、微批处理,延迟高 4、精准消费一次问题 二、StructuredStreaming架构与场景应用 三、​​​​​​​​​​​​​​…

C++·set与map容器(下)

本节把红黑树封装到set与map容器中去主要就是迭代器的自增自减,封装的大部分内容都展示到最后代码中了 1. 红黑树的改造 因为set容器只有关键码值,map容器中不仅要存关键码值,还要存关键码值对应的数据。但是红黑树只有一颗,我们…

Python操作PostgreSQL指南

文本介绍了使用Python中的psycopg2库来操作PostgreSQL数据库,包括安装必要的包、建立和关闭连接、执行增删改查操作以及处理可能的异常。这些操作将在Python应用程序中与PostgreSQL数据库进行有效的交互。 一. 简介和包的安装 PostgreSQL是一个强大、开源的对象关…

技术分享!国产ARM + FPGA的SDIO通信开发介绍!

SDIO总线介绍 SDIO(Secure Digital lnput and Output),即安全数字输入输出接口。SDIO总线协议是由SD协议演化而来,它主要是对SD协议进行了一些扩展。 SDIO总线主要是为SDIO卡提供一个高速的I/O能力,并伴随着较低的功耗。SDIO总线不但支持SDIO卡,而且还兼容SD内存卡。支持…

web前端开发一、VScode环境搭建

1、VScode安装live server插件,写完代码后,保存就会在浏览器自动更新,不需要再去浏览器点击刷新了 2、创建html文件 3、在文件中输入感叹号 ! 4、选择第一个,然后回车,就会自动输入html的标准程序 5、…

【Linux C | 网络编程】进程池零拷贝传输的实现详解(四)

上一篇解决了进程池中进行大文件传输的问题,通过循环接收和发送指定大小的内容实现大文件的可靠传输。 【Linux C | 网络编程】进程池大文件传输的实现详解(三) 但是其中不可避免的在循环中使用多次的send和recv,这就涉及到多次…

0725_驱动1 内核中并发和竟态解决方法

一、内核中并发和竟态相关概念 一、什么时候产生竟态 1.同一个驱动程序,同时被多个应用层程序进行访问 2.访问同一个临界资源,驱动产生竟态 二、竟态产生根本原因 1.在单核cpu中,如果内核支持抢占,就会产生竟态 2.在多核cpu中&…

Internxt:适用于Linux开源安全云存储平台

有无数的云存储平台为您的文件提供安全可靠的存储空间。可在 Linux 上安装的热门云存储应用程序包括Dropbox、Nextcloud和Google Drive,遗憾的是,后者迄今为止不提供 Linux 客户端。 其他自托管选项包括OwnCloud、Pydio Cells、Seafile、Resilio和Synct…

【C++深度探索】AVL树与红黑树的原理与特性

🔥 个人主页:大耳朵土土垚 🔥 所属专栏:C从入门至进阶 这里将会不定期更新有关C/C的内容,欢迎大家点赞,收藏,评论🥳🥳🎉🎉🎉 前言 前…

鱼哥好书分享活动第28期:看完这篇《终端安全运营》终端安全企业基石,为你的终端安全保驾护航!

鱼哥好书分享活动第28期:看完这篇《终端安全运营》终端安全企业基石,为你的终端安全保驾护航! 读者对象:主要内容:本书目录:了解更多:赠书抽奖规则: 在当前网络威胁日益复杂化的背景下&#xff…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

FreeSWITCH 1.10.10 简单图形化界面27-Auto-Answer功能

FreeSWITCH 1.10.10 简单图形化界面27-Auto-Answer功能 1、前言2、测试环境3、呼叫测试 1、前言 在某些支持 Auto-Answer 消息头的 SIP 设备上,我们可以通过使用 FreeSWITCH 的 sip_auto_answer 变量来实现 SIP 设备的自动接听功能。即使 SIP 设备本身没有明确地启…

【无为则无心SpringBoot】— 1.SpringBoot介绍

1、什么是SpringBoot SpringBoot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程,也可以说SpringBoot能简化我们之前采用SpringMVCSpringMybatis框架进行开发的过程。 我们在使用Spring Boot时只需要配置相应的Spring Boot配置…

开源数据结构存储系统Redis的内部数据结构详解(上)

目录 1、简单动态字符串 1.1、SDS的定义 1.2、SDS与C字符串的区别 2、链表 2.1、链表的定义 2.2、特性 3、字典 3.1、哈希表定义 3.2、哈希表节点定义 3.3、字典定义 3.4、Rehash 3.5、渐进式rehash 4、总结 C++软件异常排查从入门到精通系列教程(专栏文章列表,…

ReentrantReadWriteLock详解

目录 ReentrantReadWriteLock详解1、ReentrantReadWriteLock简介2、ReentrantReadWriteLock类继承结构和类属性3、ReentrantReadWriteLock的读写锁原理分析4、ReentrantReadWriteLock.WriteLock类的核心方法详解非公平写锁的获取非公平写锁的释放公平写锁的获取公平写锁的释放 …

FPGA开发——独立仿真和联合仿真

一、概述 我们在进行FPGA开发的过程之中,大部分情况下都是在进行仿真,从而验证代码实现结果的正确与否,这里我们引入了独立仿真和联合仿真进行一个简单介绍。 联合仿真:一般我们在进行仿真之前需要在相应的软件中建立相应的工程…