特征工程 | 数据清洗、异常值处理、归一化、标准化、特征提取
目录
-
一. 数据清洗
-
-
- 针对格式内容的错误进行数据清洗
-
-
- 针对逻辑错误执行数据清洗
-
- 剔除不必要的数据信息
-
- 对关联性问题进行验证
-
二. 异常值的处理
-
- 1. 删除
- 2. 填充
-
三. 归一化和标准化
-
- 1. 归一化
- 2. 标准化
-
-
四. 特征提取
- 第一部分:One-Hot编码
- 第二部分:基于词典的特征提取(特征离散化)
- 第三部分:文本特性的提取过程
- 3.1 采用分词技术进行处理
- 3.2 袋模型构建
- 3.3 TF-IDF算法应用

在机器学习开发过程中,对数据的处理是非常重要的:

为什么需要特征工程?
数据和特征决定了机器学习的上限
模型和算法只是逼近这个上限
什么是特征工程?
使得特征能在机器学习算法上发挥更好作用的过程
特征工程会直接影响机器的学习效果
也可以认为是:各种能够提升模型效果的数据处理方式均可被视为特征工程这一范畴的操作
一. 数据清洗
在数据预处理过程主要考虑两个方面:
选择数据处理工具:关系型数据库或者Python
查看数据的元数据以及数据特征:
查看元数据,包括字段解释、数据来源等一切可以描述数据的信息
抽取一部分数据,通过人工查看的方式,对数据本身做一个比较直观的了解,并且初步发现一些问题,为之后的数据处理做准备
1. 数据清洗:格式内容错误数据清洗
- 时间、日期、数值以及使用半全角字符时的显示格式存在不统一现象
- 内容中不应出现特殊字符(常见的错误包括前后左右两端多余空格)
- 描述的内容与预期结果不符
2. 数据清洗:逻辑错误清洗
- 数据清洗中的去重处理
- 剔除或修正不符合逻辑的数据项
- 清理或重构不可靠或自相矛盾的数据字段
3. 数据清洗:去除不需要的数据
一般情况下,我们会尽可能多的收集数据,但并不会全部用于模型
事实上,在模型构建过程中随着字段属性数量的增加速度会逐渐变慢由此可见在实际应用中有时候可以通过剔除冗余字段来提高效率
注意:在执行此操作时,请务必备份原始数据
4. 数据清洗:关联性验证
如果数据有多个来源,需要进行关联性验证
这种方法常用于多数据源整合时,用于验证数据间的关联性,并有助于准确识别关键特征属性。
二. 异常值的处理
1. 删除
- 按行删除
- 按列删除
2. 填充
- 均值
- 中值
- 众数
- 常
- …
三. 归一化和标准化
- 该特征的量纲或规模存在显著差异
- 该特定特征的方差与其他特征相比高出数个数量级
这些因素往往会对目标结果产生主导影响(主导),导致一些算法可能难以提取其他特征。为了消除这些问题的影响,我们需要使用相应的无量纲处理方法以确保数据的一致性。
1. 归一化
对原始数据进行变换把数据映射到(默认为[0,1])之间
{x}' = \frac{x-\text{min}}{\text{max}-\text{min}}
然而,在归一化操作中存在明显的缺点;最大与最小的数值容易受到异常点的影响。

因此,在解决此类问题方面采取了以下措施:在此背景下提出了一个称为"归一化"的方法:该方案通过将数据转换至均值为零、标准差为一的正态分布来实现特征缩放
2. 标准化

如果出现异常点, 由于具有一定数据量:
少量的异常点对于平均值的影响并不大, 从而方差改变较小
• 归一化:鲁棒性较差,只适合传统精确小数据场景。
• 标准化:在已有样本足够多的情况下比较稳定,适合现代嘈杂大数据场景。
注意:只有当原始数据为正态分布,通过标准化转换才可以得到标准正态分布
{x}' = \frac{x-mean}{\sigma }
四. 特征提取
将任意数据(比如文本或图像)转换为适用于机器学习的数字形式的过程中包含以下几个关键步骤:
- 基于词典的特征提取(即对特定词汇集合进行统计分析以获取描述性信息)
- 文本相关的特征生成
- 图像相关的特征生成(因为图片本质上是一个数据数组)
1. One-Hot编码
也被称为 One-Hot 编码方案,在计算机科学中更常被简称为一位有效编码策略。
该方法通过将数据映射到 N 个可能的状态中来进行表示。
具体而言,则采用 N 位二进制寄存器来实现对 N 个不同状态的唯一标识。
每个状态均分配独立的一位二进制寄存器位,在任何一个时刻仅有一个寄存器位处于激活状态。
编码位数取决于类别种类
2. 字典特征提取(特征离散化)
对字典数据进行特征值化
3. 文本特征提取
3.1 jieba分词处理

注意:前三种都返回迭代器
3.2 词袋法
构建包含所有文章中出现过的词汇的词汇表,并基于该词汇表统计每篇文章内每个词汇的具体频率;这些频率数据在一定程度上能够反映出文章的独特性
如果词典有n个词(特征),共m篇文章,则会统计出一个m*n的特征矩阵
3.3 TF-IDF
- 当某个词汇在一个段落中的频率越高,则该词汇对该段落的影响越大
- 当某个词汇在整个段落集合中的频率越高,则表示该词汇对该特定段落的重要性较低
- 该词汇在其文档中的重要性度量基于TF-IDF算法
TF(Term Frequency,词频)
指某个词条在文本中出现的次数,一般会将其进行归一化处理(该词条数量/该文档中所有词条数量)
IDF(Inverse Document Frequency,逆向文档频率)
指一个词条重要性的度量
一般计算方式为:语料库中总文件数目 / 包含该词语的文件数目
得到的商取对数
词袋法和TF-IDF对比:
- 该方法(即词袋法)也被认为是常见的文本向量化方法。
- 它们(即词袋法与TF-IDF)的一个共同缺点是忽略了词语之间的位置关系以及词语间的相互关联性;而这些关系对于准确捕捉语义信息至关重要。
祝愉快🌟!
