实用机器学习——建模前/后处理
文章目录实用机器学习数据处理数据预处理的部分数据预处理可视化分析的部分数据清洗的部分数据变形的部分特征工程的部分评估+调参评估调参超参数优化实用机器学习(中文版)—李沐:https://www.bilibili.com/video/BV1Xh411p7M9?share_source=copy_web实用机器学习数据处理数据预处理的部分python可以采用pandas基本实现,可以先看下数据比如一些
实用机器学习(中文版)—李沐:https://www.bilibili.com/video/BV1Xh411p7M9?share_source=copy_web
实用机器学习
数据处理
数据预处理的部分
python可以采用pandas基本实现,可以先看下数据
-
比如一些常见的看是否有空值、describe中的最大值,均值,最小值;
-
有的数据是严格的非负数,出现了肯定是异常值,以及有些特定的工业检验值是有一个大致的范围,太高太低明显是脏数据;
-
部分数据我们还需要经过log函数处理,log10可以让分布均匀点;
数据预处理可视化分析的部分
可用一些常见的分布图
-
seaborn.histplot;
-
seaborn.displot(data,x=x轴,hue=‘type’(不同线的按照类别),kind=‘kde’(密度分布));
-
seaborn.boxplot(箱型图)(箱型图可以看到中间部分数据所在范围对比,下图为箱型图);
-
seaborn.heatmap(协方差图,类似相关系数图,可看不同列之间的相关性)
数据清洗的部分
这里主要是表格形式数据
-
部分数据类别错误,一般可以修改/删除;
-
在箱型图中,上下两边的距离中间盒子的距离是1.5倍(默认1.5,可变换)的高度,一般认为这样的值是合理的,在此之外的是点表示,认为是错误的(注意具体问题具体分析,或许有些值是异常,但有时候也可能不是);
-
有时候某些特征列值有因果关系或者是某种正比反比的相关性,也需要判断;
-
有时候某些列的类型是固定的,比如整型,考虑怎么转,或者丢掉。
数据变形的部分
-
表格数据
- 归一化,固定在某个区间,一般是0-1区间内;
- 取对数log;
- 标准化,一般约束在-1-1之间;
-
图片数据可改变图片分辨率大小、剪裁下采样等;
-
视频图片可采样帧。文本一般先分词。
特征工程的部分
- 表格数据
- 表格形式的整型或者浮点型数据,要么直接就用或者划分多个区间(实则就是将连续型数据变成了离散值);
- 对于一些离散型的字符串类型的数据,可以采用独热编码;
- 时间类型的数据可以展开,比如展开为年、月份、日,一年那一天,星期是哪个星期、是星期几;
- 组合特征,实则是笛卡尔积,就是某个特征m个列值和另外一个特征n个列值,组合产生m*n种情况;
- 文本数据
- 对于文本数据,一句话可以将其分词,统计词频,但这样就失去了语句中词的顺序性;
- 对于文本数据,部分方法可将词可转换为向量,向量之间具有一定的语义性(比如word2vec、BERT、GPT-3)
- 图片数据
- 现在用预训练好的深度神经网络来做(ResNet,I3D)
绝大多数互联网企业的数据还是表格类型的格式化数据,因而主要的机器学习就可方便处理,可能涉及深度学习不是很多
评估+调参
评估
-
目前主要的回归看的是r^2,也比较考虑mse、mae,分类主要是看f1,也比较考虑auc曲线、召回率;聚类主要看轮廓系数;
-
过拟合和欠拟合部分
- 关心的是泛化误差而不是训练误差(在新的数据上模型的表现情况);
- 模型复杂度:模型能够去拟合各种各样函数的能力;
- 数据复杂度:数据里面有多少信息,信息量越大,数据复杂度越大;
- 模型选择:需要去选择一个合适的模型去避免欠拟合和过拟合【模型复杂度过高导致的过拟合(overfitting),模型复杂度过低导致的欠拟合(underfitting)】;
-
k折交叉验证法:常用的检验训练集和验证集的方法,现在很多用测试集代替了验证集,但按照规范,测试集只能使用一次,用来衡量泛化误差;
-
偏差和方差
- 偏差:训练到的模型与真实模型之间的区别;
- 方差:每次学习的模型之间差别有多大;
- 减小偏差:偏差很大,说明模型复杂度可能不够,可以使用一个模型复杂度高一点的模型(在神经网络中可以 增加层数 增加隐藏层单元个数(宽度));也可使用【Boosting;Stacking】
- 减小方差:方差太大可能代表你的模型过于复杂,我们可以是用一个简单点的模型,或者是使用正则化(使用L2,L1正则项,限制住每个模型能够学习的范围);也可使用【Bagging;Stacking】
- 降低噪声:在统计学习中,这个是不可以降低的误差,但是在真实的场景,这是来自于数据采集,可以通过更精确的数据采集,更干净的数据来使得噪声降低
- 集成学习:使用多个模型来提升性能
调参
- 人工记录
- 将版本记录,或者将每一次的参数记录在excel/txt文件,方便比较对比
重复实验是很难的,最好及时记录,比如会有硬件的差异、库的差异、代码的差异、随机性也有可能不一样(可以指定随机种子)
-
机器调参
- 比如跑循环,遍历大多数参数
- 自动调参(AutoML) :HPO
超参数优化
HPO:
-
BO
-
网格搜索
- 穷举,对每一组值进行迭代,每多一个参数就是指数级别的增长
-
随机搜索(主选)
- 只选择n次,每一次随机取一组参数值,n的值要取合适,玄学,也可以给定时间,到什么时候结束
-
贝叶斯优化
- 根据当前选择参数的进行预测一个值,会根据两个条件选择下一参数:1、置信的区间比较大;2、根据超参数拟合出的目标函数(可能是评价的指标)越大越好
-
-
Multi-Fidelity
- Successive Halving
- 选择n个超参数,每个超参数训练m个数据样本,第一次训练结果后保留n/2的超参数,将数据样本提升2m,并进行训练,下一次又保留一半在训练提升一倍,以此类推
- Hyperband
- 多个successive halving,开始m比较小、n比较大的如同上面的进行一直到结束,第二个就是n变小,m变大直到结束,以此类推
- Successive Halving
更多推荐
所有评论(0)