一、数据清洗和预处理
数据清洗和预处理工作包括数据集成、数据清洗、探索性数据分析和数据预处理。
数据集成:将多个数据源数据构成一个统一的数据结构或数据表的过程。如果有结构化数据和非结构化数据,数据集成时要统一转化为结构化数据,并存储在一个数据库或数据表中。
数据清洗:解决格式、单位、冗余问题。
探索性数据分析:通过简单统计理解原始数据,如缺失值情况、异常值情况和变量分布等
数据预处理:处理缺失值、异常值等数据的过程。大部分机器学习模型不支持缺失值或对异常值敏感,所以预处理可以保证模型的准确性。
二、数据清洗
数据清洗目的在于保证原始数据的正确性,避免在后续特征工程乃至建模过程中出现问题。包括特殊字符清洗、数据格式转换、数据概念统一、数据类型转换和样本去冗余等。
1、特殊字符清洗
2、数据格式转换
3、数据概念统一
4、数据类型转换
5、样本去冗余
三、探索性数据分析
探索性数据分析(Exploratory data
analysis,EDA)又称为描述性统计分析,是一种通过计算统计量、数据可视化等方法,快速了解原始数据的结构与规律的一种数据分析方法。可以直观了解原始数据中各个变量或字段的数据范围、数据缺失情况、有无异常值、变量分布情况,进而从总体上把握各个变量的真实情况,为后续的特征工程做准备。
1、数据范围
变量分为离散变量与连续变量,在数据集成与数据清洗完成后,需要确定原始数据中变量的性质,即区分离散变量与连续变量。可以人工观察区分,也可以自动区分,将整型或浮点型的数据直接划分为连续变量,而字符串为离散变量,日期类型为日期变量。然后人工校验。区分完后需要直观地观察变量的取值范围。例如离散变量需要观察变量的可能取值,连续变量可以计算简单的统计值,如均值、方差、最大值、最小值和分位数等。
2、数据缺失情况
对缺失严重的变量应删除,但注意在评分卡建模中,缺失值是一种重要特征,往往不需要缺失值填补,而应直接作为特征进行变量编码或先分箱后编码,而其他领域中的缺失值需要填补才可以满足机器学习模型的输入要求。缺失值填补的方法很多,如均值填补、中位数填补、随机森林模型填补等。
数据集成的时候尽量避免产生新的缺失值,这样会与元数据中的缺失值混淆,这是缺失值作为特征进行编码可能会得到相反的效果。虽然评分卡建模中无需填补,但如果变量缺失值太多还是需要删除改变量。因为容易导致数据分布极端不均衡,不能很好反映数据中真实蕴含的规律。
3、异常值分析
异常值指偏离正常范围的样本,如果选择的机器学习模型或模型选择的损失函数对异常值敏感,则模型会过多关注异常值而出现过拟合问题,导致模型的泛化能力会显著降低,如线性回归、adaboost模型、神经网络模型。
只有连续变量才需要处理异常值。在评分卡模型中,如果采用传统的评分卡建模方法,则异常值不需要处理。连续变量先进行分箱处理,变量分箱可以将异常值作为一箱,然后在进行变量编码。如果连续变量不采用变量分箱的方法,则需要进行异常值阶段,以减少异常值对模型的影响,同时,可以衍生一个异常值表示特征,如增加一个二值特征,即变量中是异常值时改行取值为1。
由于异常值可以通过变量分箱的方法处理,所以在变量分箱选择初始化分箱候选集时,需要先截断异常值,否则初始化分箱候选集会被异常值影响。另外超出合理范围的异常值需要统一处理,如年龄大于100的样本需要截断。
4、变量分布情况
对于离散变量可以观察在变量的不同取值上好坏样本的比例,如坏样本占比,进而分析该离散变量中坏样本率较高的是哪种变量取值。对于连续变量,可以按照好坏样本分组,并对比好坏样本中的变量分布情况。另外,可以观察变量的分布是否极度不均衡,如离散变量中某一个变量的可能取值占总样本的90%,则可以删除该变量。