Explore Data Analysis (EDA) 是机器学习处理数据的第一步,影响建模的质量或准确性。
我们不能奢望通过单纯将数据调好格式就完全依靠机器学习模型来避免对数据的分析,在使用机器学习模型前,EDA能够帮助我们提高模型的准确性。
EDA的最主要目标是:
- 最大限度地洞察数据集及其底层结构;
- 提取重要变量;
- 检测异常值和异常;
- 测试基本的假设;
- 开发简约模型;
- 确定最佳因子设置。
1.数据探索和准备步骤
一般情况下,数据探索、清理和准备工作占用整个项目的70%。 主要的内容有:
- 变量识别;
- 单变量分析;
- 双变量分析;
- 数据缺失处理
- 异常值处理;
- 变量转换;
- 变量创建 多次重复4~7步。
1.1.变量识别
搞清楚输入Predictor和输出Target变量。
确定变量的数据类型(Data Type: Character, String, Numeric...)和类别(Variable Category: Categorical, Continuous)。
1.2.单变量分析
逐一探讨变量,
如果是离散分类变量:使用频率表来了解每个类别的分布。既可以使用每个类别的计数,也可以使用计数百分比进行度量。用条形图可视化。
如果是连续变量:在连续变量的情况下,需要了解变量的集中趋势和分布。使用描述统计学中的各种统计指标可视化丰富对这些指标进行测量。
| 集中趋势度量(Cnetral Tendency) | 离散程度度量(Measure of Dispersion) | 可视化方法(Visualization Methods) |
|---|---|---|
| 均值Mean | 极差Range() | Histogram 直方图 |
| 中位数Median | 四分位数Quartile | Box Plot 箱线图 |
| 众数Mode | 四分位距IQR() | |
| 最小值Min | 方差Variance | |
| 最大值Max | 标准差Standard Deviation | |
| 偏度Skewness | ||
| 峰度Kurtosis |
1.3.双变量分析
找出两个变量之间的关系。两个变量的搭配可以是分类vs分类,分类vs连续,连续vs连续的任意两个变量之间的组合。
- 两连续变量:散点图,找出两个关系之间的合适方法。可以判断是线性还是非线性的关系。
- 两分类变量:双向表(Two Way Table),堆积柱形图Stacked Column Chart(双向表的可视化形式),卡方检验(Chi Square Test)
- 分类和连续变量:Z-test,T-test, ANOVA 检验两个变量之间的统计学差异。
2.数据缺失处理
训练集数据集中的丢失会降低模型的Power/Fit,或者导致模型产生偏差,
2.1.删除
- 整行样本删除:只要这个样本有一个属性缺失,整个样本删除,优点:简单;缺点:因为样本数量减少而下降了模型的性能。
- 成对删除:只是删除样本中的缺失变量,优点:保留了尽可能多的样本;缺点:对不同变量使用的样本量不一致。
2.2.插补
- 均值、众数和中位数:最常用方法。
- 广义归因:非缺失值的均值或中位数插补
- 相似情况推算:对其他属性相似的样本用相似的群体的该属性均值填补缺失值。
- 预测模型:较为复杂的方法。
- 没缺失值的样本组成训练集,有缺失值的样本作为测试集,缺失的属性作为标签。
- 用回归、逻辑回归、ANOVA等模型训练并用预测值进行填补,缺点是可能缺失值属性与其他属性没有关联,预测的就不准。
- KNN插补:
- 找到最相似的K个属性,用于插补缺失属性的值;
- 优点:定性定量均可插补,不需要模型,缺点:KNN耗时,K的选择也很关键。
3.异常值的检测和处理技术
异常值:与样本的整体模式相距甚远的观察值。
异常值类型:单变量(箱线图上的离群点),多变量(多为分布散点图上的离群点)。 单变量异常值:高于或低于
检测方法:
- 可视化最为常用。箱型图、直方图、散点图可视化
- 经验法则:
- 边界超出,即和的任何值,是下四分位点和是上四分位点。
- 距离均值三个或三个以上标准差的所有数据为异常值。
- 取决于对业务的理解。
- Cook距离等双变量、多变量影响力或杠杆或距离的指数度量离群值。
处理异常值:
- 删除观察值:如果是由于输入错误、数据处理错误或一场观察值数量很小导致的异常值,就删除。两端修剪去除异常值。
- 转换和合并:将属性转换成其对应的自然对数,异常值变量分箱法,不同观察值的权重分配。
- 估算并修改:对人为造成的异常值,使用均值、中位数、模态插补等方法进行处理。统计模型预测异常值并填补。
- 换用异常值不敏感模型:决策树、随机森林。
- 分组:如果异常值数量多,应该分成两套数据集分别建立模型训练,并且组合输出。
4. 特征工程
从现有数据提取更多信息的科学和艺术。使已有的数据更有用而不引入新数据。
- 变量转换
- 变量创建
4.1.变量转换
用函数替换变量,改变变量与其他变量的分布或关系。
适用场景:
- 改变变量的标度或标准化变量的值以更好地理解。(特征归一化)
- 如果散点图显示两个变量之间关系可以更简单,例如非线性关系转换为线性关系。
- 将倾斜分布转为对称分布,易于解释和生成推论。右偏分布可以采用变量的平方或立方根或对数,左偏可以采用平方、立方或指数。
- 对数:减少变量的右偏度,不能应用于0或赋值;
- 平方根、立方根:不如对数转换重要,但平方根能对0处理,立方根能对0、负数进行处理
- 分档:基于实际业务的理解,对原始值、百分数或频率执行分类。根据多个变量的值执行协变量合并(co-variate binning)
- 为了更好地实施,将一些难以实施的变量设置合并或合并为分段变量等。
4.2.变量创建
基于现有变量生成新变量或特征的过程。
生成可能于目标变量具有更好关系的新变量,从而突出变量中的隐藏关系。
- 创建派生变量:使用一组函数或不同方法从变量中创建新变量。例如通过对人的称呼这一新变量代替原有的含有缺失值的变量年龄。这种派生基于分析师对该问题的基本经验判断。还可以用变量分档、其他变量转换等方法创建新变量。
- 创建虚拟变量:类似于对于类别型特征的one-hot编码,将分类变量创建成数字变量。
5.CV中图像数据不足的处理
在计算机视觉的实际任务中,通常回遇到训练数据不足的问题。
一个模型所能提供的信息来自于:数据集包含的信息;模型形成过程中人们提供的先验信息。
训练集不足时,数据集提供的信息就很少,为了保证模型效果,就要加强人们提供的鲜艳信息。
先验信息通常能从两方面提供:
- 模型方面:采用特定的内在结构、条件假设或添加一些约束条件;
- 数据集方面:根据特定的先验假设调整、变换或扩展训练数据,让其展现更多有用信息。
例如,对于训练样本不足的图片分类任务,往往模型存在过拟合问题,泛化性能差。
- 简化模型,通过引入正则项缩小假设空间,多模型集成学习,Dropout等;
- 数据扩增(Data Augmentation):适当引入一些变换:旋转、平移、缩放、裁剪、填充、反转、噪声、颜色变换、亮度、清晰度、对比度、锐度方面都可以调整。
- 甚至先对图像进行特征提取,在特征空间上进行变换,并且通过SMOTE等特征空间的过采样方法对数据进行扩增。
- 迁移学习:借用一个在大规模数据集上与训练好的通用模型,在当前任务小数据集上微调。
6.意义
EDA的目的是通过付出更多的精力探索数据,将好模型和坏模型区分开来,选择最适合的模型进行机器学习。