特征工程的定义,是对原始数据进行一系列工程处理,将其提炼为特征,作为输入以供算法和模型使用。
机器学习主要包含以下两种常用的数据类型:
(1)结构化数据。结构化数据类型能够看过是关系型数据库的一张表,每列都有清晰的定义,包含了数值型、类别型两种基本类型;每一行数据表示一个样本的信息。
(2)非结构化数据。主要包括文本、图像、音频、视频数据,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每条数据的大小各不相同。
1、特征归一化
特征归一化处理主要是为了消除数据特征之间的量纲的影响,使得不同指标之间具有可比性。或者使得各指标处于同一数值量级,以便分析。
对数值类型的特征做归一化可以将所有的特征都统一到一个大致相同的数值区间内。常用如下两种方法:
(1)线性函数归一化。对原始数据进行线性变换,使得结果映射到[0, 1]的范围,实现对原始数据的等比缩放。
(2)零均值归一化。对原始数据映射到均值为0,标准差为1的分布上。
总结:在实际应用中,并非所有数据都是需要进行归一化的。通过梯度下降法求解的模型通常是需要归一化的,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但是对于决策树模型则并不适用,以C4.5为例,决策树在进行节点分裂时主要依据数据集D关于特征x的信息增益比,而信息增益比跟特征是否经过归一化是无关的,因为归一化并不会改变样本在特征x上的信息增益。
2、图像数据不足的处理方法
在深度学习中,大部分模型都需要大量的数据进行训练和学习,经常会遇到训练数据不足的问题。
为了解决在图像任务中,训练数据不足会带来什么问题?如何缓解数据量不足带来的问题?
分析:一个模型所能提供的信息一般来源于两个方面,一是训练数据中蕴含的信息;二是在模型的形成过程中(包含构造、学习、推理等),人民提供的先验信息。当训练数据不足的时,说明模型从原始数据中获取的信息比较少,这种情况下要想保证模型的效果,就需要更多先验信息。先验信息可以作用在模型上,例如让模型采用特定的内在结构、条件假设或添加其它一些约束条件;先验信息也可以直接施加在数据集上,即根据特定的先验假设去调整去变换或者扩展训练数据,让其展现除更多的,更有用的信息,以利于后续模型的训练和学习。
在图像任务中,训练数据的不足带来的问题主要体现在过拟合方面,即模型在训练样本上的效果可能不错,但是在测试集上的泛化效果不佳。所以综上所述,对应的处理方法大致也可以分为两类,一是基于模型的方法,主要采用降低过拟合风险的措施,包括简化模型(将非线性模型简化为线性模型)、添加约束项以缩小假设空间(如L1/L2正则项)、集成学习、Dropout超参数等;二是基于数据的方法,主要通过数据扩充。主要有以下几个方面:
(1)一定程度内的随机旋转,平移,缩放,裁剪,填充,左右翻转等,这些变换时对应着同一个目标在不同角度的观察结果。
(2)对图像中的像素添加噪声扰动,比如椒盐噪声,高斯白噪声等。
(3)颜色变换。
(4)改变图像的亮度、清晰度、对比度、锐度等。
(5)使用生成模型可以合成一些新样本,例如生成式对抗网络。
(6)借助已有模型的其它模型或数据来进行迁移学习在深度学习中也十分常见。对于大部分图像分类任务,并不需要从头开始训练模型,而是借用一个在大规模数据集上预训练好的通用模型,并在针对目标任务的小数据集上进行微调(fine-tune),这种微调操作就可以看作一种简单的迁移学习。其实,在实践的过程中,也可以对数据集训练一定的epoch但是未收敛,然后停止训练,再对该权重进行fine-tune,也可以一定程度上提高网络的性能。