数据预处理2–特征处理
首先进行特征处理是非常必要的,那么什么是特征处理?
特征工程是通过对原始数据处理和加工,将原始数据的属性转换为数据特征的过程。特征工程涵盖很多方面,其中较重要的部分是特征处理和特征选择。
特征处理通常包含以下四种:
特征缩放
数值离散化
特征编码
时间数值转换
一、特征缩放
1.进行特征缩放的必要性:
在实际业务中,当数据的量纲不同,数量级别差距大时,会影响最终的数据模型,因此需用特征缩放来平衡各特征贡献。
特征缩放可提高模型精度和模型收敛速度。它是数据预处理的重要环节之一。特征缩放又叫数据归一化。
2.方法:
2.1标准化 (Standardization):
标准化是将训练集中的某一列 (特征) 缩放成均值为0,方差为1的状态。对特征向量进行缩放是无意义的,比如对班级、年龄、性别一组特征向量 (行) 进行标准化操作是无价值的。标准化要求原始数据近似满足高斯分布,数据越接近高斯分布,标准化效果越佳。
特点:
标准化后使得不同度量的数据特征具有可比性,同时不改变数据的原始分布状态。
标准化对数据进行规范化处理,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。
2.2最小值-最大值归一化 (Min-Max Normalization)
将训练集中某一列特征数值缩放到0到1或-1到1之间。
特点:
受训练集中最大值和最小值影响大,存在数据集中最大值与最小值动态变化的可能。
容易受噪声(异常点、离群点)影响。
2.3均值归一化 (Mean Normalization)
x是原始数据。
2.4缩放成单位向量 (Scaling to Unit Length)
3.标准化和最小值-最大值的区别和联系:
4.应用场景:
不要在整个数据集上做归一化处理,要区分训练集和测试集;
注意:这一点在之前的数据挖掘的笔记里也提到过,要将数据集分成训练和测试,而不是将整个数据集进行处理!
在实际应用中,特征缩放的标准化操作更常用。
二、数值离散化
什么是数值离散化?
把无限空间中有限的个体映射到有限的空间中去,以提高算法的时空效率。换句话说,在不改变数据相对大小的情况下,对数据进行相应缩小。
注意:离散化仅适用于只关注元素之间的大小关系而不关注元素数值本身的情况。
1.应用:
数值离散化在数据预处理中发挥重要作用。离散化可以降低特征中的噪声节点,提升特征的表达能力。但在实际应用中要根据不同环境和不同数据,选择合适的数值离散化方法。
2.必要性:
在数据挖掘理论研究中,数值离散化对数据预处理影响重大。研究表明离散化数值在提高建模速度和提高模型精度上有显著作用。
比如,对于决策树来说,离散化数据可以加快数据建模的速度,拥有更高的模型精度;离散化数值后,简化了逻辑回归,降低了数据过拟合的风险。
数值离散化实际是一个数据简化机制。因为通过数值离散化过程,一个完整的数据集变成一个个按照某种规则分类的子集,增强了模型的稳定性。
比如,30-40为一个年龄区间,标记为Mature。这样就可以避免从30岁到31岁就变成了另一类群体人员。
离散化后的特征对异常数据有很强的鲁棒性。能减少噪音节点对数据的影响。
比如,如果规定满分值中成绩大于80分为A,小于80分为B,则出现异常值120会被标记为A,减低了异常值对模型的干扰。
某些算法只能处理离散化数据,但即使模型可以处理连续型数据,其综合学习效率和模型精度也要稍逊色于离散化数据。
值得注意的是,任何离散化过程都会带来一定的信息丢失,因此寻求最小化信息丢失是使用数值离散化技术人员的核心目标之一。
3.连续变量的离散化:
连续变量的离散化分为有监督和无监督两类。
连续变量的离散化过程分为四个核心步骤:
3.1Sorting: 对连续型变量进行排序,为离散化做准备:
对连续型变量升序或降序。尽量选择时间复杂度低的排序算法。
3.2Evaluating: 对Splitting来说评估分割点(自顶向下),对Merging来说评估合并点(自底向上):
排序完成后,要选择较佳的分割点或合并点。自顶向下是划分间隔,自底向上是合并间隔。
评估较佳分割点或合并点的策略是评价函数,比如,熵测量、均方根误差 (RMSE)、平均绝对百分误差 (MAPE)等 (详细信息后续课程讲解),以此判断分割或合并后的模型的Performance是否提升,提升保留,否则舍弃。
3.3Splitting or Merging: 分割或合并区间:
确定了较佳分割点或合并点后,开始对连续数据集进行分割或合并。
对于Splitting来说,针对每个属性,选择最好的分割点将数据分割成两部分。
对于Merging来说,针对每个属性,选择最好的合