Datawhale AI 夏令营 | cv比赛task1、task2、task3以及从零入门机器学习竞赛
CV比赛
Task1
step1 模型定义
用timm库创建预训练resnet18模型
step2 训练/验证数据加载
使用torch.utils.data.DataLoader加载训练集、验证集
[预训练模型]在特定大数据集上预先训练好的神经网络模型(包含已学到的丰富特征表示,课识别处理图像多种模型)、可微调(Fine-tunning)以加快训练过程且提高模型性能(数据有限时更可以加快)
用定义的transforms数据增强
step3 训练、验证
- 定义train函数执行在1个epoch的训练过程[前向传播->损失计算->反向传播->参数更新]
- 定义validate函数评估模型在验证集上性能,计算准确率
step4 性能评估
用准确率accuracy评估,在每个epoch后输出验证集上准确率
step5 save and submit
保存csv提交kaggle
reference
从零入门机器学习竞赛
- 进一步分析时间序列问题,理解并实践其数据应该如何处理和分析
- 根据竞赛通用流程,一一对应到赛题,理解关键步骤和环节
- 开始入门机器学习模型构建方法,了解如何选型并训练模型解决本赛题问题
- 开始入门深度学习方法,学会更多上分技巧
Task1
- knowledge point
- 时间序列问题的定义
对按时间顺序排列的数据点进行分析和预测,做未来的趋势预测
常见的时间序列预测:
金融领域:股票价格预测、利率变动、汇率预测等。
销售预测:产品或服务的未来销售额预测
库存管理:预测库存需求,优化库存水平。
气象领域:温度、降水量、风速等气候指标的预测。
能源领域:电力需求预测、石油价格预测等。
医疗领域:疾病爆发趋势预测、医疗资源需求预测。
特点:
时间依赖性:数据点之间存在时间上的连续性和依赖性。
非平稳性:数据的统计特性(如均值、方差)随时间变化。
季节性:数据表现出周期性的模式,如年度、月度或周度。
趋势:数据随时间推移呈现长期上升或下降的趋势。
周期性:数据可能存在非固定周期的波动。
随机波动:数据可能受到随机事件的影响,表现出不确定性。 - 传统时序模型
拿到一个赛题之后需要明确:
1)这是一个什么场景下的赛题。(setting)
2)这个赛题要解决什么问题。(goal)
之后就是对问题建模
建模方式有①时间序列模型②机器学习模型③深度学习模型
模型 | 建模思路 | 优点 | 缺点 | 适用性 | 解释性 | 计算资源 | 预测能力 |
---|---|---|---|---|---|---|---|
传统时间序列模型 | (1)基于时间序列数据的统计特性,如自相关性、季节性等。(2)使用ARIMA、季节性ARIMA(SARIMA)、指数平滑等模型。(3)通过识别数据的趋势和季节性成分来构建模型。 | (1)模型结构简单,易于理解和解释。(2)计算效率高,适合于数据量较小的问题。(3)直接针对时间序列数据设计,能够很好地处理数据的季节性和趋势。 | (1)对于非线性模式和复杂的时间序列数据,预测能力有限。(2)需要手动进行参数选择和模型调整。(3)对数据的平稳性有严格要求,非平稳数据需要差分等预处理。 | 数据量较小、模式简单的问题 | 有较好的解释性 | 计算效率最高 | 数据量较小或模式较简单时可能更有效 |
机器学习模型 | (1)将时间序列数据转换为监督学习问题,使用历史数据作为特征,未来值作为标签。(2)使用决策树、随机森林、梯度提升树等模型。(3)通过特征工程来提取时间序列数据中的有用信息。 | (1)能够处理非线性关系和复杂的数据模式。(2)通过特征工程可以引入额外的解释性变量。(3)模型选择多样,可以进行模型融合以提高预测性能。 | (1)对于时间序列数据的内在时间结构和季节性可能不够敏感。(2)需要大量的特征工程工作。(3)模型的解释性可能不如传统时间序列模型。 | 中等复杂度的问题,可以引入额外变量 | 解释性取决于特征工程 | 需要的计算资源一般 | 数据量较小或模式较简单时可能更有效 |
深度学习模型 | (1)使用循环神经网络(RNN)、长短期记忆网络(LSTM)或一维卷积神经网络(1D-CNN)等模型。(2)能够捕捉时间序列数据中的长期依赖关系。(3)通过训练大量的参数来学习数据的复杂模式。 | (1)能够处理非常复杂的数据模式和长期依赖关系。(2)适用于大量数据,可以自动提取特征。(3)模型的灵活性和适应性强。 | (1)需要大量的数据和计算资源。(2)模型训练和调优可能比较复杂和耗时。(3)模型的解释性较差,难以理解预测结果的原因。 | 数据量大、模式复杂的任务 | 解释性通常较差 | 需要最多的计算资源 | 在捕捉复杂模式方面具有优势,但需要大量数据支持 |
baseline:基线,基础方案
import pandas as pd
import numpy as np
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
target_man = train[train['dt']<=20].groupby(['id'])['target'].mean().reset_index()
test = test.merge(target_mean, on=['id'],how='left')
test[['id','dt','target']].to_csv('submit.csv',index = None)
numpy:多维数组对象、派生对象(掩码数组、矩阵)、快速操作数组例程、数学、逻辑、形状操作、排序、选择、I/O、离散傅里叶变换、基本线性带上、基本统计运算、随机模拟
pandas:基于numpy的数据清洗&分析库