一、特征工程
特征工程:从数据到变量,利用数据所在领域的相关知识构建特征,使机器学习算法发挥其最佳的过程
地位:数据和特征是上限,算法和训练时逼近这个上限
实质:连接原始数据与模型,一系列分析的”起手式“。有无特征工程,是区别实验室学习和现实世界机器学习的界限
主要内容:
- 结构化:将非结构化数据(文本,图像,语言,音乐)结构化
- 预处理:清洗数据,填补缺失值
- 变量加工:将数据变形成更适合预测的形态
- 特征选择:
- 基于理论/经验的
- 单变量评估
- 基于统计的多变量评估
- 基于机器学习的多变量评估
特征工程 为最终目的服务,在预测能力和可解释性之间权衡
二、缺失值处理
- 缺失值本身就是一种信息
- 缺失在哪个环节造成 原始收集环节?采集环节?清洗环节?
- 是否承担缺失值带来的影响 若缺失值超过阈值,就应该删除该变量(60%)
1.一般方法:
sklearn:
- 单变量填充:对某个变量的填充和其他遍历没有关系,可以是固定值,统计值,常出现值 (填均值不影响方法走向)
- 多变量填充与近邻填充:寻找多个变量(多列之间的关系)
- 先进行样本分割,再对训练集进行填充,训练完再对测试集进行填充
2.结构化:encoding
- 结构化是为了让计算机能够处理部分数据
- 分类信息:性别、学历
- 文本信息:one-hot
- 注意变量的数量和正则化
- encoding的局限:没有额外的信息表达
三、改变分布
3.1 改变分布 :使数据分布符合方法假设
- 参数对于带正则项的算法的影响:正则项和系数有关系,但系数和数据又有关系,让各个数据站在同一起跑线上——标准化
- 并非所有算法都需要改变数据分布,基于树的方法是基于比较的
- 树方法的正则化并不是来自于对系数的惩罚
3.2 标准化
- 成熟的算法:均值0,标准差为1
- 标准化之前先清洗异常值,变形,删除极端值(winsor)
- 先分割样本,再对训练集求均值和方差,再用训练集的均值和方差对测试集做标准化
- MinMaxScaler 把数据归到[0,1]范围之内
- MaxAbsScaler 把数据归到[-1,1]范围之内
3.3 非线性变化:不惜一切变正态分布(会损失很多信息)
改变线性模型的预测能力,但是随着模型的复杂,其实更不敏感
3.4 连续值变成分段值 (令线性方法对非线性数据拟合度更好)
- 增强稳健性&适用于分类算法
- 稳健性:异常值、非线性;分类算法,征信模型
- 可以直接选择非线性方法,但非线性方法的可解释性不如线性方法好,想要线性方法对非线性数据拟合,可以选择将连续值变为分段值
四、变量选择
4.1 为什么要进行预先变量选择
- 方法制约:许多模型对多变量效果不好(简单线性模型,树模型)
- 解释制约:当向别人解释一个模型时,变量过多消弱解释能力
- 预测制约:预测方差,对极端值的敏感程度,随时间的模型衰弱
- 实践制约:变量数过大,模型过度复杂,对计算压力较大
单变量选择:单纯根据一个变量数据的分布进行筛选
多变量选择:多重共线性