缺失数据(missing data)的处理(理论)

这篇具有很好参考价值的文章主要介绍了缺失数据(missing data)的处理(理论)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

缺失数据(missing data)的处理(理论)
expectation maximization 期望最大化
maximum likelihood 最大似然
case substitution
prior knowledge 先验知识

图片来源:https://github.com/dataprofessor/infographic

缺失值的分类

对原始数据进行缺失值检查。
若无缺失数据,则继续进行其他数据预处理步骤,进而进行机器学习模型的建立。
若有缺失数据,按照数据缺失机制可分为:

  • (1) 完全随机缺失(missing completely at random, MCAR)
    数据的缺失是完全随机的,不依赖于任何不完全变量或完全变量,不影响样本的无偏性。简单来说,就是数据丢失的概率与其假设值以及其他变量值都完全无关。
  • (2) 随机缺失(missing at random, MAR)
    随机丢失意味着数据丢失的概率与丢失的数据本身无关,而仅与部分已观测到的数据有关。也就是说,数据的缺失不是完全随机的,该类数据的缺失依赖于其他完全变量。
  • MCAR与MAR均被称为是可忽略的缺失形式.可以根据其出现情况删除缺失值的数据,同时,随机缺失可以通过已知变量对缺失值进行估计。
  • (3) 非随机缺失(not missing at random, NMAR), 亦称为不可忽略的缺失(non-ignorable missing ,NIM),也有研究将其称为MNAR(missing not at random)
    数据的缺失与不完全变量自身的取值有关。分为两种情况:缺失值取决于其假设值(例如,高收入人群通常不希望在调查中透露他们的收入);或者,缺失值取决于其他变量值(假设女性通常不想透露她们的年龄,则这里年龄变量缺失值受性别变量的影响)。
  • 对于不可忽略的缺失,删除包含缺失值的数据可能会导致模型出现偏差,同时,对数据进行填充也需要格外谨慎。
  • ps:在数据集中,常将不含缺失值的变量称为完全变量,数据集中含有缺失值的变量称为不完全变量

成列删除(listwise deletion):删除掉所有存在缺失值的个案。
成对删除(pairwise deletion):在进行多变量的联立时,只删除掉需要执行的变量的缺失数据。

缺失值的处理方法

缺失数据(missing data)的处理(理论)

1.删除
将存在遗漏信息属性值的样本(行)或特征(列)删除,从而得到一个完整的数据表。
优点:简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与初始数据集的数据量相比较小的情况下非常有效。
缺点:当缺失数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。
补充:成对删除(pairwise deletion):
在进行多变量的联立时,只删除掉需要执行的变量的缺失数据。
在重要变量存在的情况下,成对删除只会删除相对不重要的变量行。这样可以尽可能保证充足的数据。该方法的优势在于它能够帮助增强分析效果,但是它也有许多不足。它假设缺失数据服从完全随机丢失(MCAR)。如果你使用此方法,最终模型的不同部分就会得到不同数量的观测值,从而使得模型解释非常困难。
补充:成列删除(listwise deletion):删除掉所有存在缺失值的个案。

2.插补

  • 人工填写(filling manually),一般不推荐

  • 特殊值填充(Treating Missing Attribute values as Special values)
    将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。一般作为临时填充或中间过程。有时可能导致严重的数据偏离,一般不推荐

  • 平均值填充(Mean/Mode Completer)
    将初始数据集中的属性分为数值属性非数值属性来分别进行处理。
    如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值; 如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。

  • 条件平均值填充法(Conditional Mean Completer)。在该方法中,用于求平均的值并不是从数据集的所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。它是用现存数据的多数信息来推测缺失值。

  • 热卡填充(Hot deck imputation,或就近补齐)
    对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。

  • K最近距离邻法(K-means clustering)
    先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。
    在本方法中,先根据某种距离度量选择出k个“邻居”,他们的均值就被用于插补缺失数据。这个方法要求我们选择k的值(最近邻居的数量),以及距离度量。KNN既可以预测离散属性(k近邻中最常见的值)也可以预测连续属性(k近邻的均值)。
    根据数据类型的不同,距离度量也不尽相同:
    1)连续数据:最常用的距离度量有欧氏距离,曼哈顿距离以及余弦距离。
    2)分类数据:汉明(Hamming)距离在这种情况比较常用。对于所有分类属性的取值,如果两个数据点的值不同,则距离加一。汉明距离实际上与属性间不同取值的数量一致。
    KNN算法优点:它易于理解也易于实现。其非参数的特性在某些数据非常“不寻常”的情况下非常有优势。
    KNN算法缺点:在分析大型数据集时会变得非常耗时,因为它会在整个数据集中搜索相似数据点。此外,在高维数据集中,最近与最远邻居之间的差别非常小,因此KNN的准确性会降低。

  • 使用所有可能的值填充(Assigning All Possible values of the Attribute)
    用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。一般不推荐。

  • 回归(Regression)
    基于完整的数据集,建立回归方程,或利用机器学习中的回归算法。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关时会导致有偏差的估计。较常用。但是要注意——防止过拟合

  • 期望值最大化方法(Expectation maximization,EM)
    EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。

  • 多重插补(Multiple Imputation,MI)
    多重填补方法分为三个步骤:
    1)插补:将不完整数据集缺失的观测行估算填充m次(图中m=3)。请注意,填充值是从某种分布中提取的。模拟随机抽取并不包含模型参数的不确定性。更好的方法是采用马尔科夫链蒙特卡洛模拟(MCMC,Markov Chain Monte Carlo Simulation)。这一步骤将生成m个完整的数据集。
    2)分析:分别对(m个)每一个完整数据集进行分析。
    3)合并:对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。
    缺失数据(missing data)的处理(理论)

  • C4.5方法
    通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。

3.不处理缺失值
不处理缺失值,直接在包含空值的数据上进行数据挖掘的方法。其中包括:贝叶斯网络和人工神经网络等。
贝叶斯网络提供了一种自然的表示变量间因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。人工神经网络也类似。

参考资料:
数据分析——缺失值处理详解(理论篇)文章来源地址https://www.toymoban.com/news/detail-458959.html

到了这里,关于缺失数据(missing data)的处理(理论)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • pandas数据清洗——缺失值处理

    使用DataFrame对象的info()方法 原始数据 ​​ 注:NaN为空缺值   查看是否有缺失值    Non-Null Count列显示的是每个索引中不是空缺的个数 使用DataFrame的isnull()方法和notnull()方法 1. isnull()方法——判断是否为空,输出结果为True和False,不为NaN时返回False,为NaN时返回True。     2.

    2024年02月12日
    浏览(37)
  • 【机器学习】数据清洗之处理缺失点

    🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 引言: 在机器学习领域,数据被广泛认为是驱动模型性能的关键。然而,在真实世界的数据中,缺

    2024年02月20日
    浏览(31)
  • 数据缺失值的4种处理方法

    缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。 人为原因是由于人的主观失误、历史

    2024年02月04日
    浏览(23)
  • 【数据挖掘 | 数据预处理】缺失值处理 & 重复值处理 & 文本处理 确定不来看看?

    🤵‍♂️ 个人主页: @AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨‍💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!🐱‍🏍 🙋‍♂️声明:本人目前大学就读于大二,研究兴趣方向人工智能硬件(虽然硬件还没开始玩,但一直

    2024年02月07日
    浏览(34)
  • F#奇妙游(31):数据缺失的处理

    在处理数据时,缺失数据和无效数据是一个常见的问题。在Python中,通常使用None来表示缺失数据。 在F#中,我们可以使用FSharpOption来表示缺失数据。FSharpOption是一个泛型类型,它有两个值:Some和None。Some表示一个值,而None表示一个缺失的值。FSharpOption的定义如下: 从ADT的组

    2024年02月09日
    浏览(22)
  • R语言处理缺失数据(1)-mice

           备注:mice包支持的方法:  

    2024年02月11日
    浏览(24)
  • SparkSQL-对数据缺失和异常值进行处理

    缺失数据 准备数据  处理方式 丢弃规则 填充规则 异常数据  方法1:丢弃处理  方法2:替换处理 准备数据  处理方式 1、丢弃/过滤:DataFrame.na.drop() 2、填充:DataFrame.na.fill() 3、替换:DataFrame.na.replace() 丢弃规则 1、any 一行中有任何一个是NaN/null就丢弃 2、all 只有一行中所有

    2024年02月05日
    浏览(46)
  • python 房价数据可视化以数据缺失处理、及回归算法

    房价数据为他国地区 使用工具为JupyterLab、python3 用到的包 绘图包:seaborn、matplotlib 数据处理包:numpy、pandas 统计计算包:math、scipy 回归模型包:make_pipeline、 RobustScaler、ElasticNet,Lasso、KernelRidge、GradientBoostingRegresso、xgboost 导入并打印数据 打印特征值、索引列 打印房价相关的

    2024年02月09日
    浏览(31)
  • Pandas实战100例 | 案例 3: 数据清洗 - 处理缺失值

    案例 3: 数据清洗 - 处理缺失值 知识点讲解 在现实世界的数据集中,经常会遇到缺失值。Pandas 提供了多种方法来处理这些缺失值,包括填充缺失值、删除含有缺失值的行或列。 示例代码 检测缺失值 填充缺失值

    2024年01月20日
    浏览(33)
  • 【数据分析】Python:处理缺失值的常见方法

    在数据分析和机器学习中,缺失值是一种常见的现象。在实际数据集中,某些变量的某些条目可能没有可用的值。处理缺失值是一个重要的数据预处理步骤。在本文中,我们将介绍如何在 Pandas 中处理缺失值。 我们将探讨以下内容: 什么是缺失值; 如何在 Pandas 中识别缺失值

    2024年02月03日
    浏览(80)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包