Repository files navigation
主要是介绍人工智能的核心步骤,是以 kaggle 实践为例,整个学习笔记也是围绕着这个展开
数据质量决定模型上限 ,噪音,缺失值,格式混乱( 多时区时间戳 )等问题都会导致模型偏差
原始数据可能不符合模型的输入要求 ,比如 部分决策树模型要求分类编码,神经网络要求数值型 等
不规整的数据会导致梯度下降收敛速度降低 ,影响训练速度,当特征尺度差异较大时( 如特征 A 取值 0-1,特征 B 取值 1000-10000 ),损失函数等高线会呈现狭长椭圆形,这种导致:
梯度方向偏移:实际最优方向与梯度方向形成夹角
震荡路径:梯度下降在陡峭维度频繁震荡
迭代次数倍增:需要更多 "之" 字形路径才能到达最低点
数据加载
将原始数据从存储源导入计算环境,并初步解析为可操作的结构
数据清洗
数据转换
特征工程
核心是在特征数量少,或者特征信息量不足的情况,进行特征构造;在冗余特征多的情况,进行特征选择
数据分割
核心是将原始数据划分为独立的 训练集,验证集 和 测试集
还有些其他常见分析和处理
通常核心目标为 学习一个函数,使其在未知数据上预测的误差最小化
这需要两步实现
优化 :在训练集上最小化代价函数( 也叫损失函数 )
泛化 :通过 正则化,早停机制,模型简化 等确保学到的规律可泛化到新数据
数据分割
核心是将原始数据划分为独立的 训练集,验证集 和 测试集
模型评估
评估方法:交叉验证
评估指标
分类:准确率、F1-score、AUC-ROC 等
回归:R²、MAE、RMSE 等
和代价函数非常相似,但是还是存在差异
代价函数用于训练阶段的反向传播,而模型评估用于训练后的验证/测试阶段
代价函数用于指导参数优化,而模型评估用于量化模型在任务上的表现
代价函数有更多的数学特性要求,比如梯度下降中要求可导,而模型评估通常没有要求
超参数优化
网格搜索,随机搜索,贝叶斯优化,TPE 等
目前 Optuna 自动化调参工具在 kaggle 中广泛应用
伪标签
用当前最强 ensemble 预测 test,取置信度 >0.95( 或 0.99 )的样本加入训练集继续训练
具体使用:迭代 2~3 轮 + 逐步降低阈值
概率校准
树模型尤其是 LightGBM 默认概率严重失真
常用校准方法
Platt Scaling:logistic 回归,适合大数据量
Isotonic Regression:非参数,样本少时更稳
阈值优化 ( 分类任务 )
比赛指标是 F1、F2、Recall@k、Precision@k 时,最优阈值几乎从来不是 0.5
具体使用:在本地 OOF 预测结果上用 precision_recall_curve 或直接搜最优阈值
模型集成
当单个模型 CV 分数达到排行榜 80%-90% 分位时,再继续优化单模型的边际收益会显著下降,可以开始构建集成
集成的模型最好得分不要太低,且之间关联性最好较弱
常见方法
Voting/Averaging
Bagging
Boosting
Stacking
Blending
Hill Climbing
自集成
在单个模型训练过程中,通过保存不同训练阶段的模型状态来构建集成
伪标签
使用已训练的模型对未标注数据进行预测,将高置信度的预测结果作为 "伪标签"
预测平滑
通过利用相邻预测之间的相关性,使输出序列更加稳定、连贯,更符合现实世界的连续性假设
基于业务规则
About
机器学习相关的学习笔记
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.