机器学习入门系列(2)–如何构建一个完整的机器学习项目,第三篇!
该系列的前两篇文章:
分别介绍了确定项目终极目标、选择损失函数、获取数据以及构建测试集,接下来在进入选择算法和训练模型之前,一个很重要的步骤就是特征工程,它包括了对数据的预处理、特征提取、特征分析以及特征构建等几个步骤,可以说能否训练一个好的模型,除了选择合适的算法,准备好数据也是非常关键的!
由于篇幅问题,所以这篇文章先介绍如何处理缺失值和图片数据扩充的问题,下一篇文章会介绍处理异常值和类别不平衡的问题。
3 特征工程
何为特征工程呢?顾名思义,就是对原始数据进行一系列工程处理,将其提炼为特征,作为输入供算法和模型使用。
本质上讲,特征工程是一个表示和展现数据的过程;实际工作中,特征工程的目的是去除原始数据中的杂质和冗余,设计更高效的特征以刻画求解的问题与预测模型之间的关系。
特征工程的重要性有以下几点:
- 特征越好,灵活性越强。好的特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易和维护。
- 特征越好,构建的模型越简单。好的特征可以在参数不是最优的情况,依然得到很好的性能,减少调参的工作量和时间,也就可以大大降低模型复杂度。
- 特征越好,模型的性能越出色。特征工程的目的本来就是为了提升模型的性能。
3.1 数据预处理
首先需要对数据进行预处理,一般常用的两种数据类型:
- 结构化数据。结构化数据可以看作是关系型数据库的一张表,每列都有清晰的定义,包含了数值型和类别型两种基本类型;每一行数据表示一个样本的信息。
- 非结构化数据。主要是文本、图像、音频和视频数据,其包含的信息无法用一个简单的数值表示,也没有清晰的类别定义,并且每个数据的大小互不相同。
这里主要介绍结构化数据和图像数据两种数据的数据预处理方法。
3.1.1 处理缺失值
数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确。
缺失值产生的原因
- 信息暂时无法获取,或者获取信息的代价太大。
- 信息被遗漏,人为的输入遗漏或者数据采集设备的遗漏。
- 属性不存在,在某些情况下,缺失值并不意味着数据有错误&#x