《机器学习算法竞赛实践》学习笔记(3)竞赛概述问题建模
竞赛概述
竞赛平台
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.赛题理解
- 数据的业务逻辑
- 综合考虑赛题的目标(业务实际目标和赛题评价指标)
- 对数据的基础理解(数据基础层(主要是数据来源和取数逻辑)、数据描述层(粗略EDA))
2.样本选择
是否使用官方提供的全部样本?
数据可能存在的4种问题
- 数据集过大=>严重影响特征工程和建模方式的快速验证=>采样后在小数据集上建模分析/过滤对建模无意义的数据以提升模型性能
- 数据噪声(采集时的错误、数据在合理范围内的抖动):可能影响模型效果,但训练时引入噪声可提升模型健壮性。若噪声来源为一种,可尝试解码出正确数据,此情况有时会极大程度提升模型效果。
噪声出现的形式:特征值缺失、超出值域范围。标注不对。=>EDA - 数据冗余=>EDA
- 正负样本分布不均:此时需要用少量样本去近似一个总体分布。高级用法:比如对样本进行过采样/欠采样/改变样本分布来适应模型训练=>EDA和线下评估策略
解决方法
数据集过大和正负样本分布不均需要一开始就进行解决。
- 数据集过大=>简单随机抽样(有放回、无放回)、分层采样(对每个类别进行采样)
- 正负样本分布不均=>
2.1 评分加权处理:比如分类问题中,给数量少的样本增加权重,然后将权重也代入模型进行运算。
2.2 欠采样:从数量较多的一类样本中随机选取一部分并剔除,使得最终样本的目标类别不太失衡。常用方法:随机欠采样和Tomek Links(先找出两组各项指标都非常接近的相反类样本,然后删除一部分label比例高的样本,此方法能为分类器提供一个非常好的决策边界)。
2.3 过采样:对样本少的类别重新组合,构造新样本。常用方法:随机过采样和SMOTE(通过算法产生新数据)。
应用场景
- 如果竞赛目标对召回率有较高要求,也就是每个正样本的预测都比负样本的预测更重要,那么如果不做任何处理,就很难取得好结果。
- 如果竞赛目标时AUC,那么处理和不处理样本均衡问题,其差别不大。但处理和不处理也类似一个参数的波动,将两种结果进行融合,评价指标一般有细微提升。
- 如果竞赛目标对正负样本同样看重,则做不做处理影响不大。
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.评价指标
- 分类指标:
错误率:预测错误个数/总样本数
精度:预测正确个数/总样本数
准确率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(yilogPi+(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)
- 回归指标:
平均绝对误差:MAE/Mean Absolute Error/L1范数损失。绝对值的存在导致函数不光滑,在某些点不能求导,不是二阶连续可微的,二阶导数总为0。
均方误差:MSE/L2范数损失。为保证量纲一致性,通常要开方。
均方根误差:RMSE。
平均绝对百分比误差:MAPE。考虑了误差与真实值之间的比例。可以降低离群值对绝对误差带来的影响。
《机器学习算法竞赛实践》学习笔记(3)竞赛概述问题建模相关推荐
- cart算法_决策树学习笔记(三):CART算法,决策树总结
点击上方"Python数据科学",选择"星标公众号" 关键时刻,第一时间送达! 作者:xiaoyu 介绍:一个半路转行的数据挖掘工程师 推荐导读:本篇为树模型系 ...
- 【1】机器学习实战peter Harrington——学习笔记
机器学习实战peter Harrington--学习笔记 综述 数据挖掘十大算法 本书结构 一.机器学习基础 1.1 机器学习 1.2 关键术语 1.3 机器学习主要任务 1.4 如何选择合适的算法 ...
- 百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测
百度飞桨2021李宏毅机器学习特训营学习笔记之回归及作业PM2.5预测 前言 回归 什么是回归(Regression)? 怎么做回归? 线性回归(Linear Regression) 训练集与验证集 ...
- 【机器学习】机器学习算法 随机森林学习 之决策树
随机森林是基于集体智慧的一个机器学习算法,也是目前最好的机器学习算法之一. 随机森林实际是一堆决策树的组合(正如其名,树多了就是森林了).在用于分类一个新变量时,相关的检测数据提交给构建好的每个分类树 ...
- 机器学习框架ML.NET学习笔记【1】基本概念与系列文章目录
一.序言 微软的机器学习框架于2018年5月出了0.1版本,2019年5月发布1.0版本.期间各版本之间差异(包括命名空间.方法等)还是比较大的,随着1.0版发布,应该是趋于稳定了.之前在园子里也看到 ...
- .NET Core 在 K8S 上的开发实践--学习笔记
摘要 本主题受众是架构师,开发人员,互联网企业 IT 运维人员.大纲:1. K8S 对应用的要求:2. .NET Core 上 K8S 的优势:3. K8S 下的 .NET Core 配置:4. .N ...
- 机器学习框架ML.NET学习笔记【5】多元分类之手写数字识别(续)
一.概述 上一篇文章我们利用ML.NET的多元分类算法实现了一个手写数字识别的例子,这个例子存在一个问题,就是输入的数据是预处理过的,很不直观,这次我们要直接通过图片来进行学习和判断.思路很简单,就是 ...
- python3《机器学习实战系列》学习笔记----3.2 决策树实战
前言 一.ID3算法构造决策树 1.1 背景 1.2 信息增益计算 1.3 递归生成决策树 二.使用Matplotlib注解绘制树形图 2.1 Matplotlib注解 2.2 构造注解树 三.测试和 ...
- 嵌入式算法移植优化学习笔记5——CPU,GPU,TPU,NPU都是什么
嵌入式算法移植优化学习笔记5--CPU,GPU,TPU,NPU都是什么 一.什么是CPU? 二.什么是GPU? 三.什么是NPU? 四.什么是TPU? 附: 随着AI的广泛应用,深度学习已成为当前AI ...
- 《机器学习实战》kNN学习笔记
<机器学习实战>kNN学习笔记 文章目录 <机器学习实战>kNN学习笔记 概述 优缺点 k-近邻算法的一般流程 简单案例kNN.py 在约会网站上使用k-近邻算法 归一化特征值 ...
最新文章
- 聊一聊今年实例分割领域的进展和未来展望
- 设计模式C++实现(5)——原型模式
- 兼容谷歌的光标居中写法
- 【招聘内推】推荐策略产品经理-阿里文娱优酷产品直招
- 马云:电商之王还想怎样(转)
- CentOS搭建Git服务器
- 2019 第四季度计划
- 综合扫描 -- Ladon
- 关于STM8S003f3p6的定时器2通道3无法输出pwm的问题
- 广电CMMB手机电视芯片量产 称能满足奥运需求
- 怎样提升小程序UV访客,快速开通流量主!
- android音乐播放器——通过webview下载歌曲
- HTML, CSS学习笔记(完整版)
- Kerberos HA高可用配置
- 软件项目中如何开展有效的需求评审
- H1102NLT 普思Pulse 网络变压器
- Redis篇详解1--原理
- 微信内测邀请:公众号个人认证的过程和注意事项
- mysql查询练习3 连接和事务
- [实用教程] 华为麦芒C199拆机教程,全网首发