Datawhale AI 夏令营 | cv比赛task1、task2、task3以及从零入门机器学习竞赛

CV比赛

datawhale

Task1

step1 模型定义

用timm库创建预训练resnet18模型

step2 训练/验证数据加载

使用torch.utils.data.DataLoader加载训练集、验证集
[预训练模型]在特定大数据集上预先训练好的神经网络模型(包含已学到的丰富特征表示,课识别处理图像多种模型)、可微调(Fine-tunning)以加快训练过程且提高模型性能(数据有限时更可以加快)
用定义的transforms数据增强

step3 训练、验证

  1. 定义train函数执行在1个epoch的训练过程[前向传播->损失计算->反向传播->参数更新]
  2. 定义validate函数评估模型在验证集上性能,计算准确率

step4 性能评估

用准确率accuracy评估,在每个epoch后输出验证集上准确率

step5 save and submit

保存csv提交kaggle

reference

Task1 knowledge

从零入门机器学习竞赛

  1. 进一步分析时间序列问题,理解并实践其数据应该如何处理和分析
  2. 根据竞赛通用流程,一一对应到赛题,理解关键步骤和环节
  3. 开始入门机器学习模型构建方法,了解如何选型并训练模型解决本赛题问题
  4. 开始入门深度学习方法,学会更多上分技巧

Task1

  • knowledge point
  1. 时间序列问题的定义
    对按时间顺序排列的数据点进行分析和预测,做未来的趋势预测
    常见的时间序列预测:
    金融领域:股票价格预测、利率变动、汇率预测等。
    销售预测:产品或服务的未来销售额预测
    库存管理:预测库存需求,优化库存水平。
    气象领域:温度、降水量、风速等气候指标的预测。
    能源领域:电力需求预测、石油价格预测等。
    医疗领域:疾病爆发趋势预测、医疗资源需求预测。
    特点:
    时间依赖性:数据点之间存在时间上的连续性和依赖性。
    非平稳性:数据的统计特性(如均值、方差)随时间变化。
    季节性:数据表现出周期性的模式,如年度、月度或周度。
    趋势:数据随时间推移呈现长期上升或下降的趋势。
    周期性:数据可能存在非固定周期的波动。
    随机波动:数据可能受到随机事件的影响,表现出不确定性。
  2. 传统时序模型
    拿到一个赛题之后需要明确:
    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的数据清洗&分析库

来这里看李宏毅复习机器学习

Task2

Task3

posted @ 2024-07-11 18:32  asandstar  阅读(22)  评论(0编辑  收藏  举报