特征工程 - 数据预处理
一、数据预处理的步骤
数据清洗 → 数据集成 → 数据规约 → 特征变换
二、数据清洗
填补缺失值、识别和删除离群点、光滑噪声数据,解决数据不一致性
1、缺失值处理
根据属性的分布特性及重要性(信息量、预测能力)采用不同的方法 → 详细讲解链接
2、离群点处理
常指特定分布区域外的数据,也称噪声
- 伪异常:因特定的运营动作产生,非数据本身问题,如:双十一成交量远高于平时
- 真异常:不是因特定的运营动作而产生、数据本身分布异常,即离群点
离群点的检测方法:
简单统计分析、3
(1)简单统计分析
散点图、箱线图、各分位点判断
如:pandas的describe 可以生成描述性统统计数据,总结数据分布的集中趋势、分散、形状等。
DataFrame.describe(self, percentiles=None, include=None, exclude=None)
(2)3 原则
→ 详细讲解链接
若数据存在正态分布,偏离均值的3
距离平均值三倍
(3)基于绝对离差中位数
标准差是数据到均值的平方,偏差权重更大,异常值对结果会产生重要影响。
MAD(Median Absolute Deviation)少量的异常值不会影响最终的结果,比标准差更能适应数据集中的异常值。
先计算数据与它们的中位数之间的偏差,MAD就是这些偏差的绝对值的中位数。
如:数据集(1, 1, 2, 2, 4, 6, 9)的中位数为2,数据点到2的绝对偏差为(1, 1, 0, 0, 2, 4, 7),
该偏差列表的中位数为1(排序后的绝对偏差为(0, 0, 1, 1, 2, 4, 7)),所以该数据的绝对中位差为1。
(4)基于距离
通过定义对象之间的临近性度量,根据距离判断异常对象是否远离其他对象。
缺点:计算复杂度较高,不适用于 大数据集和存在 不同密度区域的数据集。
(5)基于密度
离群点的局部密度显著低于大部分近邻点,适用于非均匀的数据集。
(6)基于聚类
利用聚类算法,丢弃远离其他簇的小簇。
总结来看,在数据处理阶段将离群点作为影响数据质量的异常点考虑。
一般采用较为简单直观的方法,结合箱线图和MAD的统计方法判断变量的离群点。
具体的处理手段:
- 根据异常点的数量和影响,考虑是否将该条记录删除,此方法可能导致信息损失较多;
- 若对数据做了log-scale 对数变换后消除了异常值,则此方法生效,且不损失信息;
- 平均值或中位数替代异常点,简单高效,信息损失较少;
- 在训练树模型时,树模型对离群点的鲁棒性较高,无信息损失,不影响模型训练效果;
3、噪声处理
噪声是变量的随机误差和方差,是观测点和真实点之间的误差,即
可能由硬件故障、编程错误、语音等识别出错导致,外部因素,非数据本身原因。
通常的处理办法:对数据进行分箱操作,等频或等宽分箱,用每个箱的平均数、中位数或者边界值(不同数据分布,处理方法不同)代替箱中所有的数,起到平滑数据的作用。
#生成分箱间隔的函数 numpy.logspace() #对数分箱 numpy.linespace() #线性分箱
三、数据集成
将来自多个数据源的数据结合、存放在一个一致的数据存储,如数据仓库中。
这些源可能包括多个或多类数据库、数据方、数据格式。
1、实体识别问题
如:如何确认一个数据库中的customer_id和另一个数据库中的cust_number指的是同一实体?
通常,数据库和数据仓库有元数据——记录数据本身属性的数据,元数据可以帮助理清数据血缘,避免数据数据关联错误。
2、冗余问题
一个属性存在于多张表内,属性或命名的不一致也可能导致数据集中的冗余。
如:平方米和平方英尺,使用不同单位记录同一个属性。
用相关性检测冗余:数值型变量可计算相关系数矩阵 → 冗余的数据的相关系数是相同的
标称型变量可计算卡方检验 → 卡方独立性检验
3、数据值的冲突和处理
不同数据源在统一合并时,保持规范化并去重。
本文作者:paramotor
本文链接:https://www.cnblogs.com/paramotor/p/17898184.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步