推荐收藏

2023-10-27

640?wx_fmt=png

本文将对数据竞赛的『技巧』进行全面的总结,同时还会分享下个人对比赛方法论的思考。前者比较客观,总结了不同数据类型下涉及到的比赛技巧;后者稍微主观,是我个人对解决比赛思路的总结。

2019年下半年对我触动很大的两个知识分享是:

  • 志峰现场讲解的《Tricks in Data Mining Competitions 》

  • 鱼佬知识星球分享的《Kaggle数据竞赛知识体系》

注: 这两个分享的原始资料,不要向我要,我没有所有权。

碰巧最近也想将一些知识点整理下,本文将会参考上述两个分享的结构来整理我个人的知识点。当然我整理的会比较杂,会按照讨论点进行整理。

1 数据竞赛的流程

这是老生常谈的话题:数据分析主要目的是分析数据原有的分布和内容;特征工程目的是从数据中抽取出有效的特征;模型训练与验证部分包括数据划分的方法以及数据训练的方法;模型融合部分会简介模型融合的方法和实现方式。

我想表达的是:虽然数据挖掘在流程上可以看成是瀑布式的,但各个流程相互影响:比如数据分析可以挖掘出数据的分布规律,可以指导特征工程;特征的验证又可以反馈数据分析的结果。所以在实际比赛过程中这个流程是反复循环的,并不是一蹴而就的。

数据挖掘是一个循环的过程,并不是瀑布式的

一个特征不是拍脑袋想的,其最开始从EDA发现的,然后通过模型本地CV和线上PB得分进行验证。所以我对比赛的baseline代码分享一向比较谨慎,一是baseline是最终的代码并不能包括失败的尝试;二是很多选手并不会跑baseline代码只是为了排名,并不会尝试去理解代码的逻辑。在数据竞赛流程上比较重要的一点是:你要知道你现在处于哪一个步骤,下一步应该做什么,还有哪些TODO和改进的地方。

1.1 数据分析

在拿到数据之后,首先要做的就是要数据分析(Exploratory Data Analysis,EDA)。数据分析是数 据挖掘中重要的步骤,同时也在其他阶段反复进行。可以说数据分析是数据挖掘中至关重要的一步,它给之后的步骤提供了改进的方向,也是直接可以理解数据的方式。

拿到数据之后,我们必须要明确以下几件事情:

  1. 数据是如何产生的,数据又是如何存储的;

  2. 数据是原始数据,还是经过人工处理(二次加工的);

  3. 数据由那些业务背景组成的,数据字段又有什么含义;

  4. 数据字段是什么类型的,每个字段的分布是怎样的;

  5. 训练集和测试集的数据分布是否有差异;

在分析数据的过程中,还必须要弄清楚的以下数据相关的问题:

  1. 数据量是否充分,是否有外部数据可以进行补充;

  2. 数据本身是否有噪音,是否需要进行数据清洗降维操作

  3. 赛题的评价函数是什么,和数据字段有什么关系;

  4. 数据字段与赛题标签的关系;

以上细节可能在部分赛题中非常有必要,但具体操作是否有效还是要具体进行尝试。

1.2 赛题背景分析

在进行数据分析步骤前后,我们还需要对赛题的背景进行理解。赛题背景分析能够帮助我们理解赛题的任务,以及赛题数据的收集和评价方法。当然有些赛题的业务逻辑比较简单,容易理解;但有一些赛题的业务逻辑经过匿名处理,就会导致很难对赛题进行理解。

无论出题方给定了多少赛题介绍,参赛选手还是要自己从新理解一遍赛题,这样可以加深赛题的印象。有很多时候,赛题的一些细节会直接影响到最后的精度,而这些关键的细节是需要人工发现的。

总的说来赛题背景分析包括以下细节:

  1. 赛题业务场景是什么,数据是如何产生的,数据标签如何得来的?

  2. 赛题任务是什么,具体要解决的问题是如何定义的;

  3. 赛题任务是否有对应的学术任务?

在赛题背景分析步骤中最重要的是分析赛题是什么任务,赛题任务是什么问题,历史是否有类似的赛题,学术上是否有对应的问题。如果历史有类似的比赛/学术上对应的问题,那么直接copy解决方案来就OK了。

1.3 数据清洗

数据清洗步骤主要是对数据的噪音进行有效剔除。数据噪音可能有多个来源,来源于数据本身,来源于数据存储,或来源于数据转换的过程中。因为噪音会影响特征,也会影响最后的模型结果,因此数据清洗是非常有必要的。

数据清洗可以从以下几个角度完成:

  1. 对于类别变量,可以统计比较少的取值;

  2. 对于数字变量,可以统计特征的分布异常值;

  3. 统计字段的缺失比例;

1.4 特征预处理

特征预处理包括如下内容:

  1. 量纲归一化:标准化、区间放缩

  2. 特征编码:

    1. 对于类别特征来说,有如下处理方式:

      1. 自然数编码(Label Encoding)

      2. 独热编码(Onehot Encoding)

      3. 哈希编码(Hash Encoding)

      4. 统计编码(Count Encoding)

      5. 目标编码(Target Encoding)

      6. 嵌入编码(Embedding Encoding)

      7. 缺失值编码(NaN Encoding)

      8. 多项式编码(Polynomial Encoding)

      9. 布尔编码(Bool Encoding)

    2. 对于数值特征来说,有如下处理方式:

      1. 取整(Rounding)

      2. 分箱(Binning)

      3. 放缩(Scaling)

  3. 缺失值处理

    1. 用属性所有取值的平均值代替

    2. 用属性所有取值的中位数代替

    3. 用属性所有出现次数最多的值代替

    4. 丢弃属性缺失的样本

    5. 让模型处理缺失值

这一部分内容可以参考这个PPT:

https://www.slideshare.net/HJvanVeen/feature-engineering-72376750

1.5 特征工程

特征工程与EDA联系紧密,可以说是EDA具体的操作吧。因为数据分析本身就是“假设”-“分析”-“验证”的过程,这个验证的过程一般是指构建特征并进行本地CV验证。

可以从一下几个角度构建新的特征:

  1. 数据中每个字段的含义、分布、缺失情况;

  2. 数据中每个字段的与赛题标签的关系;

  3. 数据字段两两之间,或者三者之间的关系;

特征工程本质做的工作是,将数据字段转换成适合模型学习的形式,降低模型的学习难度。

2 结构化数据技巧

常规的特征工程已经人人都会,不过我还是建议可以学习AutoML的一些操作,互补学习下。至少在结构化数据领域,常见的操作它都会。

在结构化数据中,针对不同的赛题任务有不同的magic feature。比如用户违约风控类赛题需要考虑用户信息的交叉编码,用户流程等CTR类型赛题可以考虑target encoding,回归类赛题可以对对赛题目标进行标准化。如果赛题类型已知,则可以优先用此类方法进行求解。

如果赛题是匿名数据挖掘,则需要煎饼果子啥都来一套了(任何操作都试试)。此外在匿名数据和多模态数据赛题中,可以尝试下降噪自编码器。

3 非结构化数据技巧

非结构化数据一定要找准baseline,一定要找准base model。

3.1 视觉类型任务

常见的视觉任务包括:1. 图像分类(ImageClassification)2. 图像检索(Image)3. 物体检测(ObjectDetection)4. 物体分割(ObjectSegmentation)5. 人体关键点识别(PoseEstimation)6. 字符识别

OCR(OpticalCharacterRecognition)

如果是简单的分类任务,可以直接手写CNN分类模型;如果是物体检测、图像分割、人体关键点检测、人脸识别等,优先找成熟的框架和模型。都9012年了,学深度学习不要只会分类。

在视觉类型赛题中,数据扩增非常重要,具体的数据扩增方法与具体的赛题相关。找好base model,找好数据扩增方法,基本上成功了一半。

3.2 文本类型任务

文本任务我不太熟,我只会BERT。文本任务设计到的技巧有:

  1. TFIDF

  2. 词向量

  3. GPU

在这个bert满天飞的时期,大家一定要保持对技术的耐心。不要只会bert,盲目的使用bert。bert虽然很好,但NLP的基础不能跳过不学。

在炼丹过程中还有一些细节需要考虑,比如参数初始化、batch size、优化器、未登录词的处理和网络梯度裁剪等,这些都是要自己根据任务进行总结的。

4 如何选择一个合适的数据竞赛?

最后我想聊聊如何选择一个合适的赛题。现在数据科学竞赛非常多,国内外大大小小的企业都可以组织各种类型的数据科学竞赛。竞赛多 了可选择的机会也多了,但对于每个参赛选手来说我们的时间和精力是有限的,所以选择一个合适的竞赛参赛就至关重要了。这里的合适的含义带有一定的主观色彩,我会从竞赛内容和个人收获两个方面来阐述。

首先数据竞赛的形式非常多:有的赛题要求选手开发应用,有的要求选手设计优化算法,有的要求选手提出解决方案。选择赛题一定要选择自己擅长或者想学习的赛题,一定要选择尽量靠谱公平的赛题(国内比赛偶尔会出现名次内定的情况)。此外还要根据具体的赛题日程和规则进行衡量,尽量选择日程安排比较紧凑合理的赛题,尽量选择换排行榜(切换不同测试集重新排名)的赛题。

此外赛题中也有不同的赛题类型,有结构化、语音、图像、视频和文本不同类型的。我期望大家是尽量能够多参加不同类型的赛题,不要受到数据形式的限制,多接触各种类型的算法和知识。其实很多知识点都是类似的,在语音识别和语音分类中的特征提取操作或许能够用在某些结构化数据上,CNN 操作也经常用在语音分类上,序列数据通常可以用词向量来编码。

此外由于数据竞赛本身具有一定的随机性(数据噪音、算法的随机性和优化过程的随机性),导致不同选手使用相同的数据和相同代码得到的结果在精度上都有差异。举个例子在 XGBoost 算法中有很多超参数可以调节,而不同的超参数可能会带来一定的精度差异。我建议大家尽量参加不是由随机性主导排名的比赛,尽量参加随机性小一点的竞赛。

最后还可以从赛题的奖励和赛制进行选择,我个人比较倾向于 TOP10 都有钱的比赛,同时国内比赛都有现场答辩的环节,所以比赛答辩城市也可以考虑下。

640?wx_fmt=png

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

推荐收藏 的相关文章

  • 运行Vue时出错 Error: @vitejs/plugin-vue requires vue (>=3.2.13)

    Error vitejs plugin vue requires vue gt 3 2 13 or vue compiler sfc to be present in the dependency tree 错误 vitejs plugin
  • 解决IE5、IE6、IE7与W3C标准的冲突(IE7.js IE8.js)

    如果分别用IE5 IE6 IE7浏览同一个网页 将可能出现不一样的效果 这是它们之间对CSS的解析选择器不一样或错误和个别bug所导致 为了解决这些错误和bug 我们不得不找到一个能平衡于它们之间的解决方法 如png透明问题在IE5 IE6
  • Java学习——“+”的连接及加和的简单说明

    Java中 的简单说明 在今天的学习中 学到了 在java语言中的作用有加和运算和做连接符 1 加和运算 上一次提到了Java中的基本数据类型 而 就可以计算出基本数据类型的加和 int a 12 int f 123 int c a f S
  • [C++ Template]深入模板--实例化

    目录 第10章 实例化 10 1 On Demand实例化 10 2 延迟实例化 10 3 C 的实例化模型 10 3 1 两阶段查找 10 3 2 POI 10 3 5 例子 10 5 显式实例化 第10章 实例化 模板实例化是一个过程
  • 本地储存(设置和获取信息)

  • 【Qt】win10下安装Qt5.12.12

    文章目录 前言 一 下载安装包 二 安装步骤 1 注册账户 2 安装过程 前言 最近由于课题的需要 下载Qt 特此记录安装过程 一 下载安装包 笔者使用的是清华的源 也可以去官网下载 清华源如下 https mirror tuna tsin
  • 【华为OD机试】计算最接近的数【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 给定一个数组X和正整数K 请找出使表达式 X i X i 1 X i K 1 结果最接近于数组中位数的下标 i 如果有多个 i 满足条件 请返回最大的 i 其中 数组
  • 图像掩膜的作用

    用选定的图像 图形或物体 对待处理的图像 全部或局部 进行遮挡 来控制图像处理的区域或处理过程 用于覆盖的特定图像或物体称为掩模或模板 光学图像处理中 掩模可以足胶片 滤光片等 数字图像处理中 掩模为二维矩阵数组 有时也用多值图像 数字图像
  • ROS机器人应用(4)—— 查看里程计、IMU 话题信息

    文章目录 1 查看ODOM IMU 话题信息 2 相关数据结构解释 1 查看ODOM IMU 话题信息 小车开机 连接WIFI 密码 dongguan SSH 远程登录 ssh wheeltec 192 168 0 100 密码 dongg
  • 关于知识图谱的应用方向

    如何利用大数据风控体系应对多渠道风险 1 合合信息失联客户管理知识图谱 部分借款人在借款成功后出现不还款现象并且 失联 使得催收人员因无法联系借款人本人 无从下手 借助知识图谱 挖掘出更多的与借款人有关系的新联系人 大大提高催收成功率 关联
  • guns+apiPost

    当通过guns接口生成器生成代码后 直接用已经生成的接口用于apiPost测试是不通过的 一种方式是处理这里的验证 另一种方式是为了便于接口测试 可以在shiroConfig设置该接口不验证 注意 不安全性也增加了 hashMap put
  • java判断文件类型

    页面代码
  • Python爬虫如何快速入门学习?

    Python爬虫是一种用于自动化网页数据抓取的技术 它能够帮助我们快速 高效地获取互联网上的数据 对于那些想要快速入门学习Python爬虫的人来说 可能会有一些困惑 如何才能快速掌握Python爬虫的基本原理和技巧 在本文中 我们将分享一些
  • Java线程同步-栅栏(CyclicBarrier)

    Java线程同步 栅栏 CyclicBarrier 栅栏是一种同步工具 用于等待一组线程达到某个共同点后再同时继续执行 它的内部维护一个计数器和一个屏障点 当线程到达屏障点时 会阻塞等待其他线程到达 每一个线程到达屏障点后 计算器就减1 当
  • 我在windows10下,使用msys64 mingw64终端

    系列文章目录 文章目录 系列文章目录 前言 一 MSYS2是什么 前言 msys2官网 MSYS2 Minimal SYStem 2 是一个MSYS的独立改写版本 主要用于 shell 命令行开发环境 同时它也是一个在Cygwin POSI
  • JavaDay06

    用户登录 提示用户输入用户名和密码 如果用户名和密码不是 admin 和 123 的话 就提示用户继续输入 最多输入五次 用户登录 提示用户输入用户名和密码 如果用户名和密码不是 admin 和 123 的话 就提示用户继续输入 最多输入五
  • 数据结构4-单链表的删除修改和查找

    1 单链表按照顺序插入节点 package com yin m3LinkedList public class SingleLinkedListDemo public static void main String args TODO Au
  • C语言(关于浮点数比较的学习)

    由于浮点数十进制转化成二进制的机制 会造成精度损失 因此在浮点数的比较中 无法直接令两个浮点数是否相等来判断两个浮点数 如 include
  • 上传报org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException: The field file exceed

    错误如下 springBoot项目自带的tomcat对上传的文件大小有默认的限制 SpringBoot官方文档中展示 每个文件的配置最大为1Mb 单次请求的文件的总数不能大于10Mb 解决方法 Spring Boot 2 5 6 版本 在
  • 紫禁繁花服务器维护,各种坑的坑。

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 最开始玩的小主 建议开菜坑 会拉开一部分势力 前期略微有明显 比如你冲宫斗去 冲榜去来它是首选 特别是国力的234榜 攻略摘要 势力增加快 复仇积分多 宫斗提升 雨露增加快 办差收货多 势力提升

随机推荐

  • C++使用dll的一些探索

    一 动态链接库的加载方式 隐式加载又称载入时加载 指在主程序载入内存时搜索DLL 并将DLL载入内存 使用隐式加载时 使用者需要DLL链接库的 h文件 lib文件和 dll文件 lib文件包含DLL导出的函数声明和变量的符号名 dll 文件
  • 旧电脑改造nas黑群晖_黑群晖教程:旧电脑不吃灰,手把手教你变成千元顶级NAS...

    前言 如果有玩PCDIY 玩摄影 玩PT 那么一定有听说过NAS NAS中群晖的NAS又是使用体验最佳的 群晖NAS系统在功能上十分齐全 人机界面做的也较为出众 但可惜的是 机器本体价格相对来说高昂 很多人在看到售价后只能摇摇头作罢 黑群晖
  • altium designer执行DRC检查+消除绿色错误

    由原理图生成PCB以后 各种显示绿色 也即PCB报错 如下图 绿色的原因是DRC Design Rule Check 检查未通过 解决方法是正确设置规则 但是在此之前 为了观感 我们先掩耳盗铃一下 临时清除绿色 步骤是 菜单栏 gt 工具
  • 线性代数-向量,矩阵,线性变换

    一 向量 向量要求具有两个条件 长度 大小 方向 二维 三维 计算机中 向量可看做列表 图中第一个列表有两行 我们说它是二维向量 第二个列表有四行 我们说他是四维向量 向量的运算 向量加法 向量加法 将对应的行相加 将向量w的起点平移到向量
  • Java基础(2)面向对象的理解

    面向对象学习 面向对象与面向过程的区别 面向过程思想适合简单 不需要协作的任务 面向对象需要很多协作才能完成 面向对象就应运而生了 object 对象 instance 实例 都是解决问题的思维模式 都是代码组织的方式 解决简单问题可以使用
  • 通过文件夹文件获取文件夹大小

    思路就是便利文件夹下的每个文件 碰到子文件夹递归进去继续找文件 所有的文件大小累加起来 int GetFolderSize LPCTSTR szPath TCHAR szFileFilter 512 TCHAR szFilePath 512
  • mysql的sql语句没错但是报错,sql语句可以正常执行,但是报错:【merge sql error, dbType mysql, sql :】...

    错误信息如下 2017 09 06 19 03 41 186 ERROR method com alibaba druid filter stat StatFilter mergeSql StatFilter java 147 merge
  • 基于有道API的命令行词典(golang版)

    Godict 本项目地址 近期一直再使用golang语言开发一些工具 相关的后端技术链 golang orm postgresql gin jwt logrus 和对应前端的技术链 vue iview axios vue router 基本
  • matlab逆变器原理,MATLAB中的单相全桥逆变器电路建模与仿真

    电子技术设计和应用电子设计和应用电子技术O 3969 j issn 1000 0755 201 5 03 020 MATLAB中的单相全桥逆变器电路建模与仿真杨露容军刘凯周雷李仁贵 湖南工学院信息与通信工程学院 湖南岳阳 描述了全桥逆变器电
  • 什么是MapReduce,MapReduce的工作流程和原理是什么

    一 MapReduce的概念 MapReduce是一种编程模型 用于大规模数据集 大于1TB 的并行运算 概念 Map 映射 和 Reduce 归约 和它们的主要思想 都是从函数式编程语言里借来的 还有从矢量编程语言里借来的特性 它极大地方
  • 对拦截器的小小理解

    对于初学架构的 color red 小白 color 来讲 拦截器绝对是一把需要掌握的 color red 利器 color 那么自己从以下几个方面 谈谈对拦截器的小小思考 拦截器的方法在Action执行前或执行后自动执行 从而将通用的操作
  • 吐血解决磁盘占用率100%

    吐血解决磁盘占用率100 问题简述 解决步骤 吐血解决 磁盘利用率高的建议 问题简述 一次偶然使用电脑后 发现每次开机后 磁盘长时间占用率达到100 带来的影响是打开浏览器 打开本地电脑磁盘特别卡 解决步骤 1 尝试了网络上提供的绝大部分方
  • 常用的范数求导

    矢量范数的偏导数 L1范数不可微 但是存在次梯度 即是次微分的 L1范数的次梯度如下 x x 1 sign x begin equation begin aligned frac partial partial mathbf x mathb
  • 【CV with Pytorch】第 8 章 :图像超分辨率

    随着高分辨率图像捕获代理的出现 图像中捕获的信息是巨大的 技术已经从超高清转向 4K 和 8K 分辨率 如今 电影正在使用高分辨率帧 但是 在某些情况下 他们需要将低分辨率图像增强为高分辨率图像 想象这样一个场景 电影的主角正试图确定从一张
  • 第一站:探索JavaWeb的神秘世界

    欢迎来到 JavaWeb的奇妙冒险 教学系列 在这里 我们将探索Web开发的奥秘 让你在学习的过程中不仅轻松愉快 还能掌握高质量的知识 JavaWeb的奇妙冒险 第一站 探索JavaWeb的神秘世界 1 什么是JavaWeb 2 为什么学习
  • 2022-03-03JAVA面试笔试题记录

    最近在学习JAVA技术基础 也尝试练习一些JAVA面试中的编程题来巩固相关的知识点 具体的问题和代码如下 问题1 package com interview demo 利用条件运算符的嵌套来完成此题 学习成绩 gt 90分的同学用A表示 6
  • 决策树(Decision Tree,DT)(ID3、C4.5、剪枝、CART)

    目录 1 算法简介 2 特征选择 3 生成决策树 ID3 C4 5 4 修剪决策树 5 CART算法 CART回归树的生成 CART分类树的生成 CART剪枝 1 算法简介 决策树模型是树形结构 既可以用于分类 也可以用于回归 一颗决策树由
  • Mysql数据库基础(四)—— 表的字段类型(Mysql数据类型)

    Mysql的数据类型是一种约束 为了确保数据插入和存储的一致性 一旦我们插入的数据不合法 比如插入与字段类型不符的数据 Mysql会直接终止 这一点上和C语言就有区别 C语言存在隐式类型转换 即便类型不一致 编译器也不会报错 除此之外 虽然
  • 语义分割模型LinkNet介绍

    语义分割模型LinkNet 模型提出的背景 网络结构 实验结果 结论 GitHub代码链接 LinkNet是2017年CVPR上的一篇论文 论文地址 https arxiv org abs 1707 03718 由于网上的论文笔记以及讲解不
  • 推荐收藏

    本文将对数据竞赛的 技巧 进行全面的总结 同时还会分享下个人对比赛方法论的思考 前者比较客观 总结了不同数据类型下涉及到的比赛技巧 后者稍微主观 是我个人对解决比赛思路的总结 2019年下半年对我触动很大的两个知识分享是 志峰现场讲解的 T