数据的预处理基础:如何处理缺失值(二)

简介: 数据的预处理基础:如何处理缺失值(二)

成对删除:成对删除不会完全忽略分析中的案例。当统计过程使用包含某些缺失数据的案例时,将发生成对删除。该过程不能包含特定变量,但是当分析具有非缺失值的其他变量时,该过程仍然实用。例如,假设有3个变量:A,B和C。变量A包含缺失值。但这不会阻止某些统计过程使用相同的情况来分析变量B和C。成对删除允许您使用更多数据。它试图使Listwise删除中发生的损失最小化。

两种技术均假定缺失模式为MCAR(随机完全缺失)。当缺失值小于5%且缺失完全是随机的并且不取决于观察值或未观察值时,可以使用上述技术。

缺失价值估算-基本估算技术:

均值| 中位数| 模式| 常数(例如:“ 0”)

均值插补:均值插补是一种方法,将某个变量的缺失值替换为可用观察值的均值。这种方法有助于保持样本数量,但由于所有缺失值都具有相同的“均值”,因此数据的可变性有所降低。

image.png

  • 您可以采用相同的方式应用中位数:“ strategy =” median”
  • 您可以采用相同方式应用模式:“ strategy =” most_frequent”
  • 同样,您可以估算一个常数:('strategy ='constant',fill_value = 0)
  • 在估算之前,我们已经复制了“ df”数据集,目的只是为了与原始数据集进行比较。

归因散点图:


image.png

  • 您会发现,根据散点图,两个变量之间存在很强的相关性,但是“红色”颜色的估算值是一条直线,没有考虑相关性。
  • 因此,我们可以说这种假设在这里是不好的。
  • 同样,您可以检查其他插补值,例如中值,众数和常量值。

回归:

可能有一些变量存在缺失值。但是,还有一些是一些没有缺失值的变量。使用没有缺失值的变量,我们可以借助机器学习算法来预测缺失值。为此,我们可以使用线性回归算法。

估计回归模型以基于其他变量预测变量的观测值,然后在该变量的值缺失的情况下使用该模型来估算值。换句话说,完整和不完整案例的可用信息用于预测特定变量的值。然后,将回归模型中的拟合值用于估算缺失值。

但是事情并不是那么容易。问题在于估算的数据中没有包含误差项,因此这些估计值沿回归线完全拟合,没有任何残差。这导致过拟合。回归模型可预测丢失数据的最可能值,但可能产生过拟合。

随机回归插补

随机回归插补使用回归方程从完整变量中预测不完整变量,但是它需要采取额外的步骤,即使用正态分布的残差项来增加每个预测得分。

  • 将残差添加到估算值可恢复数据的可变性,并有效消除与标准回归估算方案相关的偏差。
  • 实际上,随机回归插补是唯一在MAR缺失数据机制下给出无偏参数估计的过程。
  • 因此,这是唯一具有某些优点的传统方法。

最近邻插补

KNNImputer提供了使用k最近邻方法来填充缺失值的方法。KNN是一种用于在多维空间中将点与其最接近的邻居进行匹配的算法。要查找最近的邻居,可以使用欧几里德距离方法(默认)。使用在训练集中找到的n个最近邻居的平均值估算缺失值。您可以在运行imputer时提供n_neighbors的值。K近邻可以预测定性和定量属性

例如:您具有以下带有3个变量的数据。变量“ Var3”缺少值。您想使用KNN Imputer来估算缺失的值。

image.png

在Python中使用以下代码,您可以将缺失值估算为“ 5.5”。

image.png

手动计算:

您需要使用欧几里德距离公式计算点(6,4)与其他可用点(5,6),(9,9),(8,6)和(6,5)的距离:

dist((x, y), (a, b)) = √(x — a)² + (y — b)²

您会发现2个最近的邻居是(5,6)&(6,5),“ Var3”中的各个值分别是3和8。因此,这2个点的平均值为(3 + 8)/ 2 = 5.5

  • 此推论适用于MCARMARMNAR的所有3种缺失值机制。
  • KNN插补可用于处理任何类型的数据,例如连续数据离散数据有序数据分类数据

链式方程的多重插补(MICE):

多重插补涉及为每个缺失值创建多个预测。多个估算数据的方式考虑了估算的不确定性(估计值之间的差异),并产生了更准确的标准差。

单一插补方法则不是这种情况,因为插补方法往往会导致较小的标准测量误差,进而会导致1类误差。

基本思想是将具有缺失值的每个变量视为回归中的因变量,而将其余部分作为其预测变量。

MICE的假设是,给定插补过程中使用的变量,缺失值是随机缺失(MAR),这意味着缺失值的概率仅取决于观察值,而不取决于未观察值。

在MICE程序中,将运行一系列回归模型,从而根据数据中的其他变量对具有缺失数据的每个变量进行建模。这意味着每个变量都可以根据其分布进行建模,例如,使用逻辑回归建模的二进制变量和使用线性回归建模的连续变量。

MICE步骤

步骤1:对数据集中的每个缺失值执行简单的估算。例如-均值插补。

步骤2:将一个变量('Var1')的平均估算值重新设置为丢失。

步骤3:将步骤2中变量“ Var1”的观测值回归到插补模型中的其他变量上。换句话说,“ Var1”是回归模型中的因变量,所有其他变量都是回归模型中的自变量。

步骤4:然后将'Var1'的缺失值替换为回归模型中的预测。随后在其他变量的回归模型中将“ Var1”用作自变量时,将同时使用观察值和这些推测值。

步骤5:然后对每个缺少数据的变量重复步骤2-4。每个变量的循环构成一个迭代或“循环”。在一个周期结束时,所有缺失值都已被回归预测所替代,这些预测反映了数据中观察到的关系。

步骤6:将步骤2-4重复多个循环,并在每个循环中更新估算值。

在Python中使用以下代码,您可以使用MICE估算缺失值:

image.png

最大似然估计-期望最大化(EM)算法

最大似然估计是一种用于数据集密度估计的方法。密度估计是通过估计概率分布及其参数来完成的。

但是,当存在一些潜在变量时,最大似然法不能很好地工作。因为最大似然法假设训练数据集是完整的并且没有缺失值。EM算法方法可用于满足我们发现潜在变量的情况。

“在潜在变量模型中找到最大似然估计器的通用技术是期望最大化(EM)算法。”

EM算法基本上分为两个阶段。第一阶段有助于估计缺失值。此步骤称为E步骤。第二阶段有助于优化模型的参数。此步骤称为M步。重复这两个步骤,直到我们收敛。收敛意味着,我们获得了一组很好的潜在变量值,并且获得了适合数据的最大似然。

为此,我们可以使用“高斯混合模型”。高斯混合模型是使用高斯概率分布的组合的混合模型,需要估计概率分布参数,即均值和标准差。

其他插补方法:

最后的观察结转方法

最后观察结转方法会在最后一次观察个体时估算缺失值。该方法假设自从上次测量的观察以来,个人的观察完全没有变化,这几乎是不现实的。

然后,就好像没有丢失的数据一样,分析观察到的数据和估算数据的组合。

Hot-Deck插补

Hot-Deck插补是一种处理缺失数据的方法,其中,将每个缺失值替换为“相似”单元观察到的响应。它涉及用来自受访者(捐赠者)的观察值替换无受访者(称为接受者)的一个或多个变量的缺失值,就两种情况观察到的特征而言,该值类似于无受访者。

单独类别

如果缺少分类变量的值,则可以将缺失的值视为一个单独的类别。我们可以为缺失值创建另一个类别,并在不同级别上使用它们。

例如:您有一个变量“性别”,其中2个类别是“男性”和“女性”。但是此变量缺少大约10%的数据。您不能直接为这些缺失值估算值。因此,更好的方法是为缺失的值创建一个单独的类别“ Missing”,并继续进行分析和模型开发。

目录
相关文章
|
机器学习/深度学习 存储 算法
深度学习中的稀疏注意力
深度学习中的稀疏注意力
1357 0
|
8月前
|
机器学习/深度学习 算法 前端开发
别再用均值填充了!MICE算法教你正确处理缺失数据
MICE是一种基于迭代链式方程的缺失值插补方法,通过构建后验分布并生成多个完整数据集,有效量化不确定性。相比简单填补,MICE利用变量间复杂关系,提升插补准确性,适用于多变量关联、缺失率高的场景。本文结合PMM与线性回归,详解其机制并对比效果,验证其在统计推断中的优势。
1813 11
别再用均值填充了!MICE算法教你正确处理缺失数据
|
6月前
|
人工智能 自然语言处理
构建AI智能体:四十一、大模型思维链提示工程:技术原理与行业应用案例分析
本文介绍了思维链提示技术及其应用。思维链提示是一种引导大模型进行逐步推理的提示工程技术,通过结构化提示模拟人类解决问题的逻辑分析路径,使模型能够显式化中间推理步骤,从而提升推理准确性与可解释性。文章详细阐述了思维链提示的关键特征(步骤可解释性、逻辑链条完整性、问题分解能力)和工作原理,并通过数学推理、逻辑分析和多轮复杂问题三个案例展示了其具体应用流程。该技术在教育辅导、商业决策和科研分析等领域具有重要价值,能够突破传统大模型的黑箱推理瓶颈,提高AI系统的决策透明度和可靠性。
883 13
|
机器学习/深度学习 自然语言处理 PyTorch
深入剖析Transformer架构中的多头注意力机制
多头注意力机制(Multi-Head Attention)是Transformer模型中的核心组件,通过并行运行多个独立的注意力机制,捕捉输入序列中不同子空间的语义关联。每个“头”独立处理Query、Key和Value矩阵,经过缩放点积注意力运算后,所有头的输出被拼接并通过线性层融合,最终生成更全面的表示。多头注意力不仅增强了模型对复杂依赖关系的理解,还在自然语言处理任务如机器翻译和阅读理解中表现出色。通过多头自注意力机制,模型在同一序列内部进行多角度的注意力计算,进一步提升了表达能力和泛化性能。
11047 48
|
JSON 监控 Shell
用shell脚本如何获取grafana上的监控数据
用shell脚本如何获取grafana上的监控数据
792 2
|
缓存 负载均衡 测试技术
探究职业发展的关键:能力模型解读
能力模型是指导个人职业发展的蓝图,它定义了行业和职位所需的具体技能和能力。业务测试工程师的能力模型包括需求理解、架构理解、测试设计、测试工具应用/脚本开发和测试总结五个维度,而测试开发工程师的能力模型则涵盖架构理解、开发语言应用、测试工具/平台开发和专项测试四个维度。通过理解这些模型,个人可以明确提升方向,例如业务测试工程师可参考《测试开发体系介绍》、《测试用例设计》等课程进行学习,而测试开发工程师则可关注《编程语言》、《测试框架》等相关课程。知行合一,按照能力模型进行学习和实践,有助于在职业生涯中取得成功。
|
机器学习/深度学习 监控 机器人
量化交易机器人系统开发逻辑策略及源码示例
量化交易机器人是一种通过编程实现自动化交易决策的金融工具。其开发流程包括需求分析、系统设计、开发实现、测试优化、部署上线、风险管理及数据分析。示例中展示了使用Python实现的简单双均线策略,计算交易信号并输出累计收益率。
|
数据采集 Web App开发 前端开发
Selenium:自动化Web浏览器操作的强大工具
**Selenium** 是一款用于自动化Web应用测试和模拟用户行为的工具,支持多种浏览器和编程语言。安装包括安装Selenium库和对应浏览器的WebDriver。基本用法包括导入库、启动浏览器、查找与操作页面元素、等待元素加载及关闭浏览器。在实际项目中,Selenium常用于Web测试、爬虫、自动化表单填写等,优点是跨平台、模拟真实用户行为,但性能较低且依赖浏览器。
1097 9
【Python 基础】列表(list)和元组(tuple)有什么区别?
【5月更文挑战第6天】【Python 基础】列表(list)和元组(tuple)有什么区别?
|
机器学习/深度学习 算法 数据可视化
在python中使用KNN算法处理缺失的数据
在python中使用KNN算法处理缺失的数据
705 1
在python中使用KNN算法处理缺失的数据