机器学习:软件工程方法与实现
上QQ阅读APP看书,第一时间看更新

4.1.5 数据分析和处理

数据分析是拿到数据后第一件需要做的事,目的是了解数据全貌,包括数据概览、可能的错误、基本特征、数据结构和数据相互关系、潜在模式并以简单而直观的指标或图形呈现。比如数据统计指标、分布、缺失和可视化、假设检验、边缘分布、分段矩阵分析,更进一步的有因子分析、主成分分析、聚类等。

数据分析的目标可简单分为三大类,分别为对X和y分析,以及对X与y的联合分析。对X的分析可粗略分为对数值变量和非数值变量分析,包含单变量和多变量分析,并由分析结果做对应的数据处理。y变量的分析包括分类问题看样本平衡,回归看y值分布,以决定是否要进一步处理(如重采样或对数变换等)。X与y的联合分析可能会引发建模人员思考是否需要建立分组模型。

数据分析也可以初步得到数据质量的评估结果。对于难以处理的变量和缺失率较高的变量持保留态度,除非总体数据质量不错、变量较多,否则不要轻易在数据分析环节删除变量。例如,经常会有初学者问:缺失率多高时要删除变量?事实上,缺失率高并不是删除变量的必要条件,本质上还需要查看变量的区分力,比如某变量缺失90%,但有值的10%里90%都是某一类样本,说明其纯度高,有一定的区分力。

数据处理过程也需要审慎,根据笔者实践的经验,建议每进行一步数据处理(数学变换、空值填充、数据聚合等)后马上进行数据检查,检查处理是否达到预期,防止可能的错误导致后续建模流程无效,甚至到了最后模型上线,错误都未被发现。这一点与软件开发过程完全不一致,机器学习建模过程没有专门的测试人员,机器学习从业者必须严格要求自己!最佳实践是组织团队成员对即将上线的项目进行Review,可使用手头的数据工具包或自实现的数据统计分析工具包进行快速检查。例如,Pandas中有快速查看数据概览的函数:


head(), tail(), value_counts(), describe()

可视化在数据分析领域占有一席之地,便于直接观察,例如变量分布图、相关性可视化、缺失值可视化、单变量和多变量可视化等,一般使用2维的可视化分析,高维的不便展示和观察。数据统计分析与可视化相得益彰,并具有修正统计的盲点的优势。下面参考经典图例[1]说明可视化的意义,如图4-6描述的相关性,图像上方的数值表示相关系数。如果仅仅根据相关系数判断变量间的相互关系,会有很强的误导性,而通过可视化能避免得出错误的结论。

另外,可参考1973年统计学家F.J.Anscombe构造出的四组奇特的数据。这一切都告诉我们,在分析数据之前,描绘数据所对应的图像有多么的重要[2]

常规的数据分析和可视化需求,Pandas工具包都能满足,推荐阅读Pandas包作者的著作《利用Python进行数据分析》。本节是从技术角度介绍数据分析和处理,如能结合业务便能更好地理解和解释数据,获得进一步分析和处理的灵感。第5章将介绍数据分析和处理的实践方法与技巧。

图4-6 线性相关与可视化

[1] https://en.wikipedia.org/wiki/Correlation_and_dependence

[2] https://en.wikipedia.org/wiki/Anscombe's_quartet