03_特征清洗

1.缺失值

当数据缺失时出现的问题:

  • 当有缺失值时有些算法没法work
  • 即使是处理缺失数据的算法,如果不进行处理,模型也会导致不准确的结论

缺失机制:

  • Missing Completely as Random:如果所有观测值丢失的概率相同,则变量完全随机丢失(MCAR)。当数据是MCAR时,那些丢失的数据点是数据的一个随机子集。没有任何额外的操作使得某些数据比其他数据更容易丢失。(当观测值是完全随机的时,忽略这些缺失也不会对结果有什么影响)
  • Missing at Random:当观测值丢失的概率取决于数据集中的其他一些变量,而不取决于变量本身时。例如,如果男性比女性更愿意透露自己的体重,那么体重就是MAR。对于那些决定不透露自己体重的男性和女性来说,体重信息将会随机缺失,但由于男性更倾向于披露体重信息,女性的缺失值将比男性更多。在上述情况下,如果我们决定继续处理缺失值的变量,我们可能会受益于包括性别来控制缺失值的权重偏差。
  • Missing Not At Random - Depends on Unobserved Predictors:缺失性依赖于没有记录的信息,这些信息也可以预测缺失的值。例如,如果一种特定的治疗方法引起不适,患者更有可能退出研究(而“不适”是没有测量的)。在这种情况下,如果我们去掉那些遗漏的案例,数据样本就会有偏差。
  • Missing Not At Random - Depends on Missing Value Itself:缺失取决于(可能缺失的)变量本身。例如,收入高的人不太可能透露他们收入。

如何假设一个缺失的机制:

  • bussiness understanding:在许多情况下,我们可以通过探究该变量背后的业务逻辑来假定该机制。
  • statcstical test:将数据集分为有/无缺失的数据集,并进行t检验,看看是否存在显著差异。如果有,我们可以假设失踪不是随机完成的。
  • 但是我们应该记住,我们几乎不能100%确定数据是MCAR、MAR或MNAR,因为未观察到的预测因子(隐藏的变量)是未观察到的。

如何处理Missing Data:

在实际环境中,当很难确定缺失的机制或几乎没有时间深入研究每个缺失的变量时,最流行的方法是采用:

2.Outliers

离群值是一种观测值,它与其他观测值相差甚远,以至于使人怀疑它是由另一种机制引起的。根据上下文,异常值要么值得特别注意,要么应该完全忽略。例如,信用卡上不寻常的交易通常是欺诈活动的标志,而高度的一个人的1600厘米很可能是由于测量误差,应该被过滤掉或用其他值代替

根据上下文,异常值要么值得特别注意,要么应该完全忽略。以收入预测为例:如果观察到不寻常的收入峰值,那么最好对它们多加关注,并找出造成这种峰值的原因。同样,信用卡上不寻常的交易通常是欺诈活动的标志,而这正是信用卡发行商想要预防的。因此,在这样的情况下,寻找和研究进一步的异常值是很有用的。但是,如果异常值是由于机械误差、测量误差或其他任何不能泛化的原因造成的,那么最好在将数据提供给建模算法之前过滤掉这些异常值 

离群值的问题:

  • 使算法没法很好的工作,有些算法对异常值非常敏感,任何依赖均值/方差的算法都对异常值非常敏感,而产生泛化能力差的模型
  • 往数据中加入了噪声
  • 降低了样本的代表性

离群点检测:

应该根据上下文如何定义和对这些异常值做出反应。你的反应的意义应该由潜在的上下文决定,而不是数字本身

 离群点检测最基本的形式是一维数据的极值分析。这种方法的关键是确定变量底层分布的统计尾数,然后找到尾数末尾的值。在典型的情况下,该变量的分布是高斯分布,因此离群值位于平均值±3乘以该变量的标准差之外。如果不是正态分布的变量,一般的方法是计算分位数,然后interquantile范围(差),如下:差= 75分位数- 25分位数局外人会坐在外面以下上下边界:上限= 75分位数+ (IQR * 1.5)下边界= 25分位数- (IQR * 1.5)或极端情况下:上限= 75分位数+ (IQR * 3)下边界= 25分位数- (IQR * 3)

离群点处理:

3.Rare Values:

很少出现的值,在某些情况下,罕见值(如离群值)可能包含有价值的数据集信息,因此需要特别注意。例如,交易中罕见的值可能表示欺诈。而其他情况下,罕见值或许应该去除或者用其他值代替。

罕见值的问题:

  • 分类问题中罕见值容易导致过拟合,比如基于树的方法的时候
  • 大量的非频繁标签增加了噪声,信息量少,导致过拟合
  • 罕见值或许只出现在training set或testing set,导致某个数据集过拟合

如何处理罕见值:

  • 当变量中有一个占主导地位的类别(超过90%)时:观察该变量与目标之间的关系,然后要么放弃该变量,要么保持该变量不变。在这种情况下,变量通常对预测没有帮助,因为它是准常量(稍后我们将在特征选择部分看到这一点)。
  • 当只有少量类别时:保持原样。因为只有很少的类别不太可能带来这么多的噪音。
  • 当基数较大时:尝试上面的两个方法。但它并不能保证比原始变量得到更好的结果。

4.高基数

如果一个特征是用来表示类别/定性的(categorical),而且这个特征的可能值非常多,通常用0-n的离散整数来表示,那么它就是高基数类别特征

高基数的问题:

  • 标签太多的变量往往比标签很少的变量占优势,特别是在基于树的算法中。
  • 一个变量内的大量标签可能会在几乎没有信息的情况下引入噪声,从而使机器学习模型容易过度拟合。
  • 有些标签可能只出现在训练数据集中,而没有出现在测试集中,从而导致算法对训练集过拟合。
  • 相反,新的标签可能出现在测试集中,而训练集中没有出现,因此算法无法对新的实例进行计算

如何处理高基数:

  • 对具有业务理解的标签进行分组
  • 将罕见的标签归入一个类别
  • 使用决策树对标签进行分组:所有这些方法都试图对一些标签进行分组并减少基数,目的是将标签合并成更多同质的组,将罕见的标签归类为一个类别。
原文地址:https://www.cnblogs.com/ziwh666/p/12325910.html