导读:
今天这篇文章是「大数据」内容合伙人周萝卜关于《Python数据分析与数据化运营》的一篇读书笔记。在大数据公众号后台对话框回复
合伙人
,
免费读书、与50万
「
大数据
」
同行分享你的洞见。
大数据(ID:
hzdashuju)
数据预处理是数据化运营过程中的重要环节,它直接决定了后续数据工作的质量和价值输出。那么数据预处理有哪些铁则或者经验呢?我这里整理如下,与君共勉!
01 数据清洗:4种处理缺失数据的方法
所谓数据清洗,主要处理的就是缺失值、异常值和重复值。清洗,就是对数据集通过
丢弃
、
填充
、
替换
、
去重
等操作,达到
去除异常
、
纠正错误
、
补足缺失
的目的。
数据缺失通常有两种情况:
-
一种是数据行记录的缺失,这通常是数据记录丢失,很难找回;
-
另一种是数据列值的缺失,可能由于某些原因,导致的数据不完整。
这里主要讨论数据列植的缺失情况,通常有如下4种处理思路:
1. 丢弃
这种方法最简单明了,直接删除整行或者整列带有缺失值的记录。但是这种丢弃意味着会减少数据特征,弊端也十分明显。
如下情况,
不宜直接使用丢弃的方法:
-
数据集总体存在大量数据记录不完整情况而且比例较大,比如超过10%,此时删除这些缺失值,就意味着会损失过多的有用信息。
-
带有缺失值的数据记录大量存在着明显的数据分布规律或特征,比如带有缺失值的数据记录是我们的目标标签主要集中在一类或者几类中,如果此时删除这些数据记录,将会使得对应类别的数据样本丢失大量数据,导致模型过拟合或者分类不准确。
2. 补全
相对于丢弃而言,补全则是一种更加合理的处理方法。通过一定的方法将缺失的数据补上,从而形成完整的数据记录。
常用的补全方法有:
-
统计法:
对于数值型数据,可以使用均值、加权平均值、中位数等方法补全;而对于分类型数据,一般会是用类别众数最多的数值补足。 -
模型法:
更多的时候,我们会基于其他字段,将缺失字段作为目标变量进行预测,从而达到最为可能的补全值。 -
专家补全:
对于一些专业性非常强的数据,可以通过自学业界专家,来补全缺失数据,这种方法在很多情况下也是一种非常重要的补全途径。 -
其他方法
:例如随机法、特殊值法,多重填补法等。
3. 真值转换法
在某些情况下,我们可能无法得知缺失值的分布规律,而且也无法应用上面的方法进行补全;或者我们认为当前的缺失记录也是数据的一种规律,不应该轻易的对缺失数据进行处理,那么此时就可以使用真值转换法来处理。
这种方法的观点是,我们承认缺失值的存在,并且
把数据缺失也作为数据分布规律的一部分看待
,将变量的实际值和缺失值都作为输入维度参与后续的数据处理和模型计算中。但是真实值是可以直接参与计算的,缺失值通常无法参与运算,因此需要对缺失值进行真值转换。
例如对于性别一列,现在存在男、女和未知(空值)三个状态,我们就可以把该列转换为性别_男(0),性别_女(1)和性别_未知(2)。
4.不处理
对于缺失值,不做任何处理,也是一种处理缺失值的思路。这种方式主要取决于后续的模型运算,很多模型对于缺失值有容忍度或灵活的处理方法,因此在数据预处理阶段可以不作处理。
02 数据转换
分类数据和顺序数据是常见的数据类型,需要很好的转换这两种类型数据。
-
分类数据:
分类数据是值某些数据属性只能归于某一类别的非数值型数据,例如性别中的男,女就是分类数据。 -
顺序数据:
顺序数据只能归于某一类有序类别的非数值型数据,例如用户的价值度分为高、中、低等。
分类数据和顺序数据要参与模型运算,通常都会转化为数值类数据。而将非数值型数据转换为数值型数据的最佳方法是:将所有分类或顺序变量的值域从一列多值的形态转换为多列只包含真值的形态,其中国真值可以用 True、False 或0、1的方式来表示。
比如:
用户 | 性别 |
---|---|
01 | 男 |
02 | 女 |
转换后:
用户 | 性别-男 | 性别-女 |
---|---|---|
01 | 1 | 0 |
02 | 0 | 1 |
而之所以不能直接用数字来表示不同的分类和顺序数据,是因为我们无法准确还原不同类别信息之间的信息差异和相互关联性。
03 数据降维
数据降维就是降低数据的维度数量,从而简化我们的训练难度和减小特征之间的关联性产生的影响。
1. 基于特征选择的降维
基于特征选择的降维指的是根据一定规则和经验,直接选取原有维度的一部分参与后续的计算和建模过程,用选择的维度代替所有的维度,整个过程不产生新的维度。
-
经验法:
根据业务专家或数据专家的以往经验、实际数据情况、业务理解程度等进行综合考虑,从而达到降低数据维度的目的。 -
测算法:
通过不断测试多种维度选择参与计算,通过结果来反复验证和调整,并最终找到最佳特征方案。 -
基于统计分析的方法:
通过相关性分析不同维度间的线性相关性,在相关性高的维度中进行人工去除或筛选;或通过计算不同维度间的互信息量,找到具有较高互信息量的特征集,然后去除或留下其中的一个特征。 -
机器学习算法:
通过机器学习算法得到不同特征的特征值或权重,然后再根据权重来选择较大的特征。
2. 基于特征转换的降维
基于特征转换的降维是按照一定的数学变换方法,把给定的一组相关变量通过数学模型将高纬空间的数据点映射到低维度空间中,然后利用映射后变量的特征来表示原有变量的总体特征,最主要的方法就是主成分分析法。
-
PCA(主成分分析):
主成分分析的基本方法是按照一定的数学变换方法,把给定的一组相关变量通过线性变换转成另一组不相关的变量,这些新的变量按照方差依次递减的顺序排列。
3. 基于特征组合的降维
基于特征组合的降维,实际上是将输入特征与目标预测变量做拟合的过程,它将输入特征经过运算,并得出能对目标变量做出很好解释的复合特征,这些特征不是原有的单一特征,而是经过组合和变换后的新特征。
但是其实特征组合的方法,很多时候并不能减少特征的数量,反而可能会增加特征。因此从严格意义上讲,特征组合不属于降维的过程,而是特征工程中与降维并行的模块。
04 解决样本分布不均衡
所谓的不均衡指的是不同类别的样本量差异非常大,样本类别分布不均衡主要出现再与分类相关的建模问题上。
样本类别分布不均衡从数据规模上可以分为大数据分布不均衡和小数据分布不均衡两种。
-
大数据分布不均衡:
这种情况下整体数据规模不大,只是其中的小样本类的占比较少。但是从每个特征的分布来看,小样本也覆盖了大部分或全部的特征。 -
小数据分布不均衡:
这种情况下整体数据规模小,并且占据少量样本比例的分类数量也少,这会导致特征分布的严重不均衡。
可以通过过抽样和欠抽样的方法来解决样本不均衡的问题:
-
过抽样:
又称为上采样,其通过增加分类中少数类样本的数量来实现样本均衡,最直接的方法是简单复制少数类样本以形成多条记录。 -
欠抽样:
又称为下采样,其通过减少分类中多数类样本的数量来实现样本均衡,最直接的方法是随机去掉一些多数类样本来减少多数类的规模。
05 解决数据的共线性问题
所谓共线性问题指的就是输入的自变量之间存在较高的线性相关度,
共线性问题会导致回归模型的稳定性和准确性大大降低。
此外过多无关的维度参与计算也会浪费大量的计算资源。
解决共线性的常用方法有如下几种:
1. 增大样本量
通过增加样本量来消除由于数据量不足而出现的偶然共线性现象,在可行的前提下这种方法是需要优先考虑的。
2. 岭回归法
岭回归分析是一种专用于共线性问题的有偏估计回归方法,实质上是一种改良的最小二乘估计法。它通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价来获得更实际和可靠性更强的回归系数。
3. 逐步回归法
逐步回归法是每次引入一个自变量并进行统计检验,然后逐步引入其他变量,同时对所有变量的回归系数进行检验。如果原理引入的变量由于后面变量的引入而变得不再显著,那么就将其剔除,逐步得到最优回归方程。
4. 主成分回归
通过主成分分析,将原始参与建模的变量转换为少数几个主成分,每个主成分是原变量的线性组合,然后基于主成分做回归分析,这样也可以在不丢失重要数据特征的前提下避开共线性问题。
5. 人工去除
直接结合人工经验,进行去除操作。
06 标准化数据
数据标准化是一个常用的数据预处理操作,目的是处理不同规模和量纲的数据,使其缩放到相同的数据区间和范围,以减少规模、特征、分布差异等对模型的影响。
1. Z-Score 标准化
Z-Score 标准化是基于原始数据的均值和标准差进行的标准化。这种方法适合大多数数据类型的数据,也是很多工具的默认标准化方法。标准化之后的数据是以0为均值,方差为1的正态分布。
2. Max-Min 标准化
Max-Min 标准化方法是对原始数据进行线性变换,这种标准化的方法应用广泛,得到的数据会完全落入[0,1]区间内。
07 数据离散化
数据离散化就是把无限空间中有限的个体映射到有限的空间中。
数据离散化操作大多是针对连续数据进行的,处理之后的数据值域分布将从连续属性变为离散属性,这种属性一般包含2个或2个以上的值域。
1. 针对时间数据
针对时间数据的离散化主要用于以时间为主要特征的数据集中粒度转换,离散化处理后将分散的时间特征转换为更高层次的时间特征。
比如:
-
将时间戳转换为分钟、小时或上下午等
-
将日期转换为周数、月或工作日休息日等
2. 针对多值离散数据
针对多值离散数据的离散化指的是要进行离散化处理的数据本身不是数值型数据,而是分类或顺序数据。
例如可以将用户的收入划分为10个区间等。
3. 针对连续数据
针对连续数据的离散化是主要的离散化应用,在分类或关联分析中应用尤其广泛。主要分为两种,
一类是将连续数据划分为特定区间的集合,一类是将连续数据划分为特定类。
以上就是今天的分享,希望对于正在学习数据分析的伙伴儿们有所帮助。
关于作者:周萝卜,目前就职于一家大数据人工智能公司,喜欢爬虫和数据分析,乐于总结和分享!微信公众号「萝卜大杂烩」运营者。
Python数据分析与数据化运营
》
DoctorData
推荐语:
这是一本将数据分析技术与数据使用场景深度结合的著作,从实战角度讲解了如何利用Python进行数据分析和数据化运营。本书与同类书大的不同在于,并不只有纯粹的关于数据分析技术和工具的讲解,而且还与数据使用场景深度结合,在业务上真正可指导落地。此外,本书作者提供微信、邮箱等,可通过实时和离线两种方式及时为读者在线传道、受业、解惑。
有话要说?
Q:
这些知识点,你已经get了多少?
猜你想看?
更多精彩?
输入以下
关键词
PPT
|
报告
|
读书
|
书单
|
干货
大数据
|
揭秘
|
Python
|
可视化
AI
|
人工智能
|
5G
|
中台
机器学习
|
深度学习
|
神经网络
合伙人
|
1024
|
段子
|
数学
?
点击阅读原文,了解更多