算法与实战 - 常见的数据处理技巧


在数据分析/挖掘项目中,通常会包括 需求确定、数据处理、模型建立、落地应用。其中,数据处理又包括几个主要的内容,如下图所示:
在这里插入图片描述
在这个过程中,数据处理实际上有很多工作要做,在项目中通常花的时间比建立模型更长—— 数据决定了模型效果的上限,好的数据通常让模型有更好的效果

因此,本文介绍在数据分析/挖掘中常见的数据问题及相应的处理,即上图中的2-5步——

  • 数据清洗(缺失值与异常值处理)
  • 数据转换,即通过数学公式等方式将现有变量转化为更有效的变量
  • 共线性问题,介绍共线性的判断和处理
  • 变量筛选,即在多个变量中如何选出最有效的变量作为模型输入

1. 缺失值与异常值

缺失值和异常值应该是所有项目中都会遇到的问题,本节做简单介绍。

1.1 缺失值处理

缺失值是指我们抽取的数据中某些数据为空值,如NULL。常见的处理方式如下:

  • 删除样本。删除掉有缺失值的样本,剩下的样本则是干净完整的。适合仅有少量样本带有缺失值的情况。
  • 删除变量。这种方式通常用于删除某列大量为缺失值的情况。
  • 替换。人为使用数据对缺失值进行替换,通常用众数、均值等,简单直观,但不一定符合实际分布。
  • 赋值。即通过回归等方式预测最可能的替代值,严谨但成本高。

可以看到不同的处理方式适用于不同的场景,因此面对缺失值时都需要首先了解出现该问题的原因,再对症下药选择合适的方式处理。

1.2 异常值处理

异常值通常指数据样本中不符合业务逻辑的数据出现频率很低的类别型数据取值太大的数据等,比如没有登陆却有购买行为不合理、一天观看1000个视频取值太大、占比极低等。

很多数据挖掘模型对异常值敏感,如线性回归、Kmeans聚类等,异常值可能让模型出现过拟合、不稳定等问题。

对于异常值的处理比较简单,直接删除即可,得到比较干净的数据,提高后期模型的准确性和稳定性。

2. 数据转换

数据转换是指通过数学公式等方式将现有变量转化为更有效的变量。本节介绍四个常见场景。

2.1 衍生变量

衍生变量即是使用现有的数据,做简单的数据运算得到新的更适合于当前分析的变量。

如有观看视频总时长与观看视频个数的变量,可以得到每个视频的平均观看时长;消费总额与用户注册时长,可以得到年均消费、月均消费等。这些衍生变量在合适的场景下效果更好。

2.2 改变变量分布

对一些数据挖掘模型,变量成正态分布时效果较好,可参考特征工程——转换为正态分布。而实际场景中经常出现严重不对称的分布或者大偏差的分布,这样子的分布可能干扰模型的拟合。

通常的处理方式是对该变量做数学转换,得到新的变量(有着新的分布),使其近似正态分布。

常见的转换方式有:取对数、取倒数、开平方根、取指数等。

以取对数为例,假设我们查看用户的在线时长分布如下图左,大部分用户在线时长在左侧。

为了将其分布转化为近似正态分布,对用户的在线时长取对数,重新绘制分布直方图如下图右。
在这里插入图片描述

注意,这种方式虽然有时可以优化模型效果,但可解释性变差,需要做好权衡。

2.3 分箱转换

分箱转换主要针对连续型变量,通过将变量划分为不同的区间,转化为次序型变量,从而提高变量的预测效果。

以年龄为例,原本年龄可能从10-79共70个取值,通过分箱转换,每10岁为一个区间,则可转化为1-7共7个取值,可能更适合模型拟合。

2.4 数据归一化

数据归一化是指将数据按比例缩放至某个区间里,通常是[0,1]或[-1,1]。

在梯度下降中,归一化可以加速模型拟合;在涉及距离的模型中,归一化让不同的变量对模型的影响均等

如在kmeans聚类中,需要先对数据进行归一化。

否则若某个变量的取值范围远远大于其余变量,则聚类结果基本取决于该变量。

常用的归一化方法是min-max归一化,使用下述公式将变量缩放至[0,1]区间。
X ′ = X − X m i n X m a x − X m i n X'=\frac{X-X_{min}}{X_{max}-X_{min}} X=XmaxXminXXmin

3. 共线性问题

多重共线性是指自变量之间存在较强的、甚至完全的线性相关关系。 多重共线性造成的影响有:

  • 模型难以分辨每个自变量对因变量的影响,模型稳定性降低,预测能力降低
  • 模型结果解释性差(难以解释是共线性变量中的哪个变量产生的效果)

如在Kmeans聚类中数据经过归一化后,每个变量的重要性相同。假设存在阅读作品数、阅读时长等高度相关的特征,则模型计算距离时对阅读行为的权重相当于其他变量的两倍,影响了模型的效果。

因此,在数据处理中通常要对多重共线性进行识别和消除。

3.1 识别共线性

识别共线性问题通常有以下几种方法:

  • 基于线性相关系数,如前面提到的Pearson相关系数,若高度线性相关则认为是共线性最常用,4.1中详细介绍
  • 基于模型结果,如回归模型中系数的标准差很大,则可能有共线性问题
  • 结合业务经验,如果原本没有预测作用的变量变得有很强的统计性,则可能有共线性问题

此外,在网上还看到方差膨胀因子、主成分分析、聚类等方法,识别的方式多种多样,需要根据实际情况选择合适的方法。

3.2 处理共线性

对多重共线性问题的处理则比较简单,一般有如下思路:

  • 对成共线性的变量取舍,只保留其中一个
  • 对成共线性的变量进行结合,生成一个新的变量

4. 变量筛选

在项目中,业务和数据分析同学会头脑风暴,找到很多可能对标签有影响的变量。

在众多的变量我们需要遵循“少而精”的原则,筛选出有效的变量来建模,原因在于——

  • 提高模型效果,变量过多可能出现共线性问题,通常会降低模型效果
  • 提高模型稳定性,过多变量的输入容易使模型出现过拟合等问题,后续应用中模型稳定性下降
  • 提高模型训练效率,节省数据存储空间,相当于数据降维

本文介绍常见的几种变量筛选方法。

4.1 线性相关指标筛选

最常用且最简单的变量筛选方式是基于线性相关性进行筛选,包括两种思路——

  • 自变量之间的线性相关性,即共线性问题,若多个自变量间中度以上相关,则只保留一个即可
  • 自变量与因变量的线性相关性,如相关性很低,则考虑删除该自变量(当然也可能自变量与因变量成其他曲线关系,通过其他方式验证避免误删)

Pearson相关系数为例,其计算公式如下:
R = C o v ( x , y ) σ x σ y = ∑ ( x − x ˉ ) ( y − y ˉ ) ∑ ( x − x ˉ ) 2 ∑ ( y − y ˉ ) 2 R=\frac{Cov(x,y)}{\sigma_x\sigma_y}=\frac{\sum(x-\bar x)(y-\bar y)}{\sqrt{\sum(x-\bar x)^2}\sqrt{\sum(y-\bar y)^2}} R=σxσyCov(x,y)=(xxˉ)2

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值