机器学习中我们在训练模型之前,通常需要对样本数据做一些预处理操作。即使我们能够拿到大众认可度比较高的代表性数据集,该数据集也会或多或少存在数据缺失、分布不均衡、存在异常数据、混有无关紧要的数据等诸多数据不规范的问题。这就需要我们对收集到的数据进行进一步的处理、包括数据的清洗、数据的转换、数据标准化、缺失值的处理、特征的提取、数据的降维等方面。我们把对数据的这一系列的工程化活动,叫做特征工程。简单来说,特征工程的任务是从原始数据中抽出更具代表性的特征,从而让模型能够更有效地学习这些数据。对于整个机器学习的项目来说,特征工程只是其中很小的一部分工作,但是千万不能忽略这“很小的一部分工作”的重要性。一个机器学习任务的成功与否往往在很大程度上取决于特征工程。
通常我们可以使用 scikit-learn 这个库来处理数据和提取特征,scikit-learn 是机器学习中使用非常广泛的第三方模块,本身封装了很多常用的机器学习算法,同时还有很多数据处理和特征提取相关的 。
1.数据预处理
数据预处理是特征工程中最重要的环节,数据预处理旨在通过规范化、标准化和正规化来改善不完整、不一致和不可用的数据。具体 有:归一化,标准化,离散化等。这3种 只是机器学习中最常见的、通用的数据预处理 ,只是广大特色工程中的冰山一角。比如缺失值的处理,均值、中值、前后值填充的效果在不同的数据集中是不同的;对于类变量,有时我们不需要对所有数据进行哑代码;对于时间型变量,我们有时把它们当作离散值,有时把它们当作连续值。所以很多时候需要根据实际问题对不同的数据进行预处理。
更多数据预处理相关的内容可以参考前面的专题 机器学习中的数据规范化。
2.数据缺失值处理
数据缺失值处理 是指填充样本特征中的空值或无效值,处理 有删除和插补。
删除 : 如果每列或者行数据达到一定比例, 建议放弃整行或整列 .插补 : 可以通过缺失值每行或每列的平均值/中位数来填充.这部分内容参考前面的 机器学习之缺失值处理 。
3.数据降维
降维是指减少特征的数量,达到增加样本密度以及去噪的目的。详细内容可参考机器学习中的数据降维
3.1特征选择
不同的特征对模型有不同的影响。我们需要自动选择一些对问题很重要的特性,并删除与问题不太相关的特性。这个过程叫做特征选择。特征选择在特征工程中非常重要,它直接决定最终模型的训练效果。常用的特征选择 有:过滤、包装、嵌入。这部分内容后面再做专题介绍,敬请期待。
3.2 特征提取
如果用特征选择后的数据直接训练模型,由于数据的特征矩阵维数较大,可能会出现数据难以理解、计算量增加、训练时间长等问题,因此需要对数据进行降维。降维是指将原始高维空间的特征投影到低维空间,并对特征进行重组以降低数据的维数。降维和特征更大的区别是特征选择是消除和删除特征,而降维是重组特征形成新的特征,原有的特征全部消失,导致性质发生根本变化。常用的特征提取降维 有主成分分析(PCA)和线性判别分析(LDA)。
3.2.1主成分分析(PCA)
主成分分析(PCA)是最常见的线性降维 之一,它应该在尽可能减少信息损失的同时,将高维空间的数据映射到低维空间进行表示,并尽可能保持低维空间原始数据的特征。主成分分析本质上是一种无监督的 ,不考虑数据的类别标准。其基本步骤如下:
数据集中化(每个特征维度减去相应的平均值)计算协方差矩阵及其特征值和特征向量特征值由大到小排序,保留前N个特征将高维数据转换到由n个特征向量组成的新空间中另外,在将特征映射到低维空间时,要注意保证投影维度上的数据差异更大(即投影维度的方差更大)。
3.2.2线性判别分析
线性判别分析(LDA)也是一种常见的线性降维 ,但与PCA不同,它是一种有监督的算法,这意味着其数据集的每个样本都会有一个输出类标签。线性判别算法的核心思想是将数据投影到低维空间后,希望同一类别数据的投影点尽可能近,而不同类别数据的类别中心之间的距离尽可能远。也就是说,LDA希望降维后的数据点尽可能分离。示例图如下:
总结:
本文介绍了机器学习中 特征工程相关的内容,它包含了一系列的数据处理 和步骤,是将原始数据转换为更好地代表预测模型的潜在问题的特征的过程,从而提高了对未知数据的 预测准确性。另外,值得一提的是我们可以用sklearn来完成几乎所有的特征处理工作,在相关的内容介绍中都有专门的sklearn 相关API的介绍和示例Demo的章节可供参考。~感谢阅读。