机器学习 - 特征工程(Feature Engineering)

FunnyWii
FunnyWii
发布于 2022-10-23 / 17 阅读
0
0

机器学习 - 特征工程(Feature Engineering)

机器学习的建模流程

MLPipeline.png

Figure 1 Pipeline of Machine Learning

研究问题

采集数据

数据清洗

在采集到的数据中,可能有丢失的,比如NaN或者null,这种数据是不能直接拿来用的。为了解决这个问题,这部分数据会被imputed,具体impute的方法要根据数据的类型来决定。
比如,把缺失的数据替换为某个数值,这个数值可以是平均值,随机值,中值或者是众数。
再比如,有时候把整行或者整列删掉,因为它们会影响模型的预测结果。

预处理数据

不同模型,应用不同算法,需要不同的预处理方式。
比如,SVM和回归,要求数据标准化(均值0,方差1)。
再比如,决策树需要清理掉NaN和null值。
还比如,有些算法可以把数据缩放到0-1的区间(归一化),但是即便归一化了,也要关注离群点。

特征工程

为啥要进行特征工程呢?如果特征太少,那模型就没什么可学的;反之特征太多,就可能存在很多冗余的信息。
特征工程可能把两个或多个特征合并为一个新特征,或者使用某个函数(比如log transform)将特征转换为另一个值。

标签编码

大部分模型要求数据为数字格式,整型或者浮点型。
像日期或字符串,需要被转换为数字类型,此过程被称为标签编码。

One-Hot encoding

One-Hot encoding.png

Figure 2 One-Hot encoding

这种方法将一列中的数值分散到多个状态位中,并给它们分配0或1。这些二进制值表达了分组和编码的列之间的关系。

Dummy encoding

Dummy encoding.png

Figure 3 Dummy encoding

基于数据集的某一特征的N个状态值,用N-1位编码来作区别,Dummy encoding和One-Hot encoding很相似,区别在于最后一个状态位。如果前几位都是0,那么默认最后一位为1。

log变换

如果数据分布是偏斜的,log变换可以让数据更加接近于正态分布,同时,离群值或异常值的影响会变小,模型会更robust。

但是,必须确认模型的数据是的。

相关性 correlation

当模型的变量之间相互关联时,就会出现多重共线性。但是理想情况下,变量之间应该是独立的,如果变量间的相关性太高,在模型拟合时就会出现问题。

如何解决变量间的高相关性

  • 删除一些高度相关的自变量。
  • 线性组合自变量,比如把它们加在一起。
  • 执行为高度相关的变量设计的分析,如主成分分析(PCA)或偏最小二乘回归。
  • LASSO和Ridge回归是回归分析的高级形式,可以处理多共线性。

数据采样

涉及到把数据集分为 训练集测试集

  • 训练集:用于训练一个机器学习模型
  • 测试集:是用来测试和交叉验证训练的机器学习模型
    一般两个数据集的比例是7:3或者8:2。

交叉验证和评价标准

一旦选择了方法并建立了一个模型,需要使用验证集中的数据对其进行交叉验证。

  • 均方差MSE,用于回归
  • 混淆矩阵Confusion Matrix,用于分类
  • 分类准确率
  • 学习和验证曲线

混淆矩阵

混淆矩阵是一个表格,通常用于描述一个分类模型(或 "分类器")在一组测试数据上的表现,这些数据的真值是已知的。它允许对算法的性能进行可视化。

学习和验证曲线

LearnCurve.png

Figure 4 学习曲线

如果一个模型是平衡的,随着训练样本量的增加,这两个误差都会收敛到小值。
一个简单的模型不能很好地适应数据,导致大的训练误差和大的验证误差。无论训练集里有多少个例子,这两个误差都无法减少。一个简单的模型不能很好地拟合数据,从而导致高偏差。
一个复杂的模型会精确地拟合数据(过拟合),导致小的训练误差,但大的验证误差。一个复杂的模型会导致一个过度拟合的模型,从而导致高方差。


评论