竞赛概述

竞赛平台

Kaggle、天池、DataFountain、DataCasstle、Kesci(和鲸)、JDATA、FlyAI、AI Challenger

公众号

Coggle数据科学、Kaggle竞赛宝典、麻婆豆腐AI

竞赛流程

问题建模->数据探索->特征工程->模型训练->模型融合

特征工程:机器学习大多数时候是在进行特征工程,特征决定了机器学习预测效果的上限,而算法只是不断地去逼近这个上限而已。

模型训练:在一般的机器学习算法竞赛中,参赛者大多偏爱 GDBT 类的树模型,如 XGBoost 和 LightGBM。有时也会用到 LR、SVM、RF 等算法或 DNN、CNN、RNN 等深度学习模型。还有广告领域流行的 FFM 等。
参数只要设置得不是很离谱,效果差别不太大。

竞赛类型

人工智能领域大致可分为:计算机视觉(CV)自然语言处理(NLP)数据挖掘(DM)
根据任务目标可大致分为:分类和回归。

问题建模

四部分:赛题理解、样本选择(是否使用全部样本)、线下评估策略(训练集、验证集划分)、评价指标。

1.赛题理解

  1. 数据的业务逻辑
  2. 综合考虑赛题的目标(业务实际目标和赛题评价指标)
  3. 对数据的基础理解(数据基础层(主要是数据来源和取数逻辑)、数据描述层(粗略EDA))

2.样本选择

是否使用官方提供的全部样本?

数据可能存在的4种问题

  1. 数据集过大=>严重影响特征工程和建模方式的快速验证=>采样后在小数据集上建模分析/过滤对建模无意义的数据以提升模型性能
  2. 数据噪声(采集时的错误、数据在合理范围内的抖动):可能影响模型效果,但训练时引入噪声可提升模型健壮性。若噪声来源为一种,可尝试解码出正确数据,此情况有时会极大程度提升模型效果。
    噪声出现的形式:特征值缺失、超出值域范围。标注不对。=>EDA
  3. 数据冗余=>EDA
  4. 正负样本分布不均:此时需要用少量样本去近似一个总体分布。高级用法:比如对样本进行过采样/欠采样/改变样本分布来适应模型训练=>EDA和线下评估策略

解决方法

数据集过大和正负样本分布不均需要一开始就进行解决。

  1. 数据集过大=>简单随机抽样(有放回、无放回)、分层采样(对每个类别进行采样)
  2. 正负样本分布不均=>
    2.1 评分加权处理:比如分类问题中,给数量少的样本增加权重,然后将权重也代入模型进行运算。
    2.2 欠采样:从数量较多的一类样本中随机选取一部分并剔除,使得最终样本的目标类别不太失衡。常用方法:随机欠采样和Tomek Links(先找出两组各项指标都非常接近的相反类样本,然后删除一部分label比例高的样本,此方法能为分类器提供一个非常好的决策边界)。
    2.3 过采样:对样本少的类别重新组合,构造新样本。常用方法:随机过采样和SMOTE(通过算法产生新数据)。

应用场景

  1. 如果竞赛目标对召回率有较高要求,也就是每个正样本的预测都比负样本的预测更重要,那么如果不做任何处理,就很难取得好结果。
  2. 如果竞赛目标时AUC,那么处理和不处理样本均衡问题,其差别不大。但处理和不处理也类似一个参数的波动,将两种结果进行融合,评价指标一般有细微提升。
  3. 如果竞赛目标对正负样本同样看重,则做不做处理影响不大。

3.线下评估策略

如何切分训练集和验证集。

强时序性问题

按照时间由远及近:训练集->验证集->测试集

弱时许性问题

K折交叉验证。一般K=5/10。

from sklearn.model_selection import KFold
NFOLDS = 5
folds = KFold(n_splits=NFOLDS, shuffle=True, random_state=2021)
for trn_idx, val_idx in folds.split(X_train, y_train):train_df, train_label = X_train.iloc[trn_idx, :], y_train[trn_idx]valid_df, valid_label = X_train.iloc[val_idx, :], y_train[val_idx]

4.评价指标

  1. 分类指标:
    错误率:预测错误个数/总样本数
    精度:预测正确个数/总样本数
    准确率P:TP/(TP+FP)
    召回率R:TP/(TP+FN)
    F1-score:2 * (P * R) / (P + R)
    ROC曲线:接受者操作特征曲线,度量分类中的非均衡性。其纵轴是击中概率/R,横轴是虚惊概率/FP率:FP/(FP+TN),对角线为随机概率/阈值:降低阈值会导致更多样本被归为正类别。在正负样本数量失衡时,ROC曲线依旧能够保持不变。
    AUC:互联网搜索、推荐、广告排序业务的常见评价指标。其为ROC曲线下的面积。
    对数损失:logloss=-logP(Y|X)。用于评价分类器的概率输出。通过惩罚错误的分类来实现对分类器的准确度的量化。最小化对数损失基本等价于最大化分类器的准确度。
    以二分类问题为例: l o g l o s s = − 1 N ∑ i = 1 ( y i l o g P i + ( 1 − y i ) l o g ( 1 − p i ) ) logloss=-\frac{1}{N}\sum_{i=1}(y_ilogP_i+(1-y_i)log(1-p_i)) logloss=−N1​∑i=1​(yi​logPi​+(1−yi​)log(1−pi​))
    AUC评价的是模型把正样本排到前面的能力。对数损失评价的是模型预测概率是否足够准确。AUC不易受极端值影响。对数损失反应了平均偏差,偏向将样本数量多的那类划分准确。
from sklearn.metrics import precision_score, recall_score, f1_score
precision = precision_score(y_train, y_pred)
recall = recall_scroe(y_train, y_pred)
f1 = f1_score(y_train, y_pred)
  1. 回归指标:
    平均绝对误差:MAE/Mean Absolute Error/L1范数损失。绝对值的存在导致函数不光滑,在某些点不能求导,不是二阶连续可微的,二阶导数总为0。
    均方误差:MSE/L2范数损失。为保证量纲一致性,通常要开方。
    均方根误差:RMSE。
    平均绝对百分比误差:MAPE。考虑了误差与真实值之间的比例。可以降低离群值对绝对误差带来的影响。

《机器学习算法竞赛实践》学习笔记(3)竞赛概述问题建模相关推荐

  1. cart算法_决策树学习笔记(三):CART算法,决策树总结

    点击上方"Python数据科学",选择"星标公众号" 关键时刻,第一时间送达! 作者:xiaoyu 介绍:一个半路转行的数据挖掘工程师 推荐导读:本篇为树模型系 ...

  2. 【1】机器学习实战peter Harrington——学习笔记

    机器学习实战peter Harrington--学习笔记 综述 数据挖掘十大算法 本书结构 一.机器学习基础 1.1 机器学习 1.2 关键术语 1.3 机器学习主要任务 1.4 如何选择合适的算法 ...

  3. 百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测

    百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测 前言 回归 什么是回归(Regression)? 怎么做回归? 线性回归(Linear Regression) 训练集与验证集 ...

  4. 【机器学习】机器学习算法 随机森林学习 之决策树

    随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...

  5. 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录

    一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...

  6. .NET Core 在 K8S 上的开发实践--学习笔记

    摘要 本主题受众是架构师,开发人员,互联网企业 IT 运维人员.大纲:1. K8S 对应用的要求:2. .NET Core 上 K8S 的优势:3. K8S 下的 .NET Core 配置:4. .N ...

  7. 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)

    一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...

  8. python3《机器学习实战系列》学习笔记----3.2 决策树实战

    前言 一.ID3算法构造决策树 1.1 背景 1.2 信息增益计算 1.3 递归生成决策树 二.使用Matplotlib注解绘制树形图 2.1 Matplotlib注解 2.2 构造注解树 三.测试和 ...

  9. 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么

    嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...

  10. 《机器学习实战》kNN学习笔记

    <机器学习实战>kNN学习笔记 文章目录 <机器学习实战>kNN学习笔记 概述 优缺点 k-近邻算法的一般流程 简单案例kNN.py 在约会网站上使用k-近邻算法 归一化特征值 ...

最新文章

  1. 聊一聊今年实例分割领域的进展和未来展望
  2. 设计模式C++实现(5)——原型模式
  3. 兼容谷歌的光标居中写法
  4. 【招聘内推】推荐策略产品经理-阿里文娱优酷产品直招
  5. 马云:电商之王还想怎样(转)
  6. CentOS搭建Git服务器
  7. 2019 第四季度计划
  8. 综合扫描 -- Ladon
  9. 关于STM8S003f3p6的定时器2通道3无法输出pwm的问题
  10. 广电CMMB手机电视芯片量产 称能满足奥运需求
  11. 怎样提升小程序UV访客,快速开通流量主!
  12. android音乐播放器——通过webview下载歌曲
  13. HTML, CSS学习笔记(完整版)
  14. Kerberos HA高可用配置
  15. 软件项目中如何开展有效的需求评审
  16. H1102NLT 普思Pulse 网络变压器
  17. Redis篇详解1--原理
  18. 微信内测邀请:公众号个人认证的过程和注意事项
  19. mysql查询练习3 连接和事务
  20. [实用教程] 华为麦芒C199拆机教程,全网首发

热门文章

  1. 软考——中级软件设计师
  2. 物联网在智慧农业中的应用
  3. 付费系列 3 - 单障碍和单触碰期权 PDE 有限差分
  4. syslog Linux系统log打印原理
  5. 2021-09-30 Backtesting.py 恒生指数
  6. 虚拟聊天室(中介者模式实战)
  7. Yale N. Patt教授的《计算机系统概论》
  8. 蓝桥杯之算法模板题 Python版
  9. SpringBoot - 应用程序测试方案
  10. 扒一扒磁条导航和Slam导航的AGV交管思路