乐趣区

关于人工智能:KNNImputer一种可靠的缺失值插补方法

作者 |KAUSHIK
编译 |VK
起源 |Analytics Vidhya

概述

  • 学会用 KNNImputer 来填补数据中的缺失值
  • 理解缺失值及其类型

介绍

scikit learn 公司的 KNNImputer 是一种宽泛应用的缺失值插补办法。它被宽泛认为是传统插补技术的替代品。

在当今世界,数据是从许多起源收集的,用于剖析、产生见解、验证实践等等。从不同的资源收集的这些数据通常会失落一些信息。这可能是因为数据收集或提取过程中的问题导致的,该问题可能是人为谬误。

解决这些缺失值,成为数据预处理中的一个重要步骤。插补办法的抉择至关重要,因为它会对工作产生重大影响。

大多数统计和机器学习算法都是针对数据集的残缺观测。因而,解决失落的信息变得至关重要。

统计学中的一些文献波及缺失值的起源和克服这个问题的办法。最好的办法是用估计值来估算这些缺失的观测值。

在本文中,咱们介绍了一个应用相邻数据点的观测值来填充数据集中缺失值的指南。为此,咱们应用 scikit-learn 的 KNNImputer 实现。

目录

  • 自由度问题
  • 缺失值模式
  • kNN 算法的实质
  • 存在缺失值时的间隔计算
  • KNNImputer 插补办法

自由度问题

对于任何数据科学家来说,数据集中缺失的值都可能是一个马蜂窝。缺失值的变量可能是一个十分重要的问题,因为没有简略的办法来解决它们。

一般来说,如果数据中缺失观测值的比例绝对于观测值总数很小,咱们能够简略地删除这些观测值。

然而,这种状况并不常见。删除蕴含缺失值的行可能会导致放弃有用的信息。

从统计学的角度来看,随着独立信息条数的缩小,自由度升高。

缺失值模式

对于实在的数据集,缺失值是一个令人担忧的起因。收集无关变量的察看值时,可能会因为以下各种起因而失落值

  • 机器 / 设施中的谬误
  • 研究者的谬误
  • 无奈分割的受访者
  • 意外删除
  • 局部受访者健忘
  • 会计过错等。

缺失值的类型通常可分为:

齐全随机缺失(MCAR)

当缺失的值对任何其余变量或察看值的任何特色没有暗藏的依赖性时,就会产生这种状况。如果医生遗记记录每 10 个进入 ICU 的病人的年龄,缺失值的存在并不取决于病人的特色。

随机缺失(MAR)

在这种状况下,失落值的概率取决于可观测数据的特色。在考察数据中,高支出受访者不太可能告知钻研人员领有的房产数量。所领有房产的可变数量的缺失值将取决于支出变量。

非随机缺失(MNAR)

当缺失的值既取决于数据的特色,也取决于缺失的值时,就会产生这种状况。在这种状况下,很难确定缺失值的生成机制。例如,血压等变量的缺失值可能局部取决于血压值,因为低血压患者不太可能常常查看血压。

kNN 算法的实质

用于缺失值插补的单变量办法是估计值的简略办法,可能无奈始终提供精确的信息。

例如,假如咱们有与路线上汽车密度和空气中污染物程度相干的变量,并且简直没有对于污染物程度的察看后果,用均值或者中位数污染物程度来估算污染物程度可能不肯定是一个适合的策略。

在这种状况下,像 k - 最近邻(kNN)这样的算法能够帮忙对缺失数据的值进行插补。

社会学家和社区钻研人员认为,人类之所以生存在一个社区中,是因为邻居们产生了一种安全感、对社区的依恋感以及通过参加各种流动而产生社区认同感的人际关系。

对数据起作用的一种相似的插补办法是 k - 最近邻(kNN),它通过间隔测量来辨认相邻点,并且能够应用相邻观测值的残缺值来预计缺失值。

例子

假如你家里的必须食品曾经没有存货了,因为封闭,左近的商店都没有营业。因而,你向你的街坊寻求帮忙,你最终会承受任何他们提供给你的货色。

这是一个来自 3 -NN 的插补示例。

相同,如果你确定了 3 个向你寻求帮忙的街坊,并抉择将 3 个离你最近的街坊提供的物品组合在一起,这就是 3 -NN 的插补示例。

相似地,数据集中的缺失值能够借助数据集中 k 近邻的察看值来推算。数据集的邻近点通过肯定的间隔度量来辨认,通常是欧氏间隔。

考虑一下下面示意 kNN 工作的图。在本例中,椭圆形区域示意绿色方形数据点的相邻点。咱们用间隔来确定街坊。

kNN 办法的思维是在数据集中辨认空间类似或相近的 k 个样本。而后咱们应用这些“k”样本来预计缺失数据点的值。每个样本的缺失值应用数据集中找到的“k”邻域的平均值进行插补。

存在缺失值时的间隔计算

让咱们看一个例子来了解这一点。思考二维空间(2,0)、(2,2)、(3,3)中的一对观测值。这些点的图形示意如下:

基于欧氏间隔的最短距离点被认为是最近邻点。例如,点 A 的 1 最近邻点是点 B。对于点 B,1 最近邻点是点 C。

在存在缺失坐标的状况下,通过疏忽缺失值并放大非缺失坐标的权重来计算欧几里德间隔。

其中

例如,两点(3,NA,5)和(1,0,0)之间的欧几里德间隔为:

当初咱们应用 sklearn 包 pairwise metric 模块中的 nan_euclidean_distances 函数来计算缺失值两点之间的间隔。

只管 nan_euclidean_distances 实用于由 X 和 Y 参数提供的两个一维数组,但它也能够实用于具备多个维度的单个数组。

因而,间隔矩阵是一个 2×2 矩阵,它示意观测对之间的欧几里德间隔。此外,合成矩阵的对角线元素为 0,因为它示意单个观测值与其本身之间的间隔。

KNNImputer 插补办法

咱们将应用 sklearn 的 impute 模块中的 KNNImputer 函数。KNNImputer 通过欧几里德间隔矩阵寻找最近邻,帮忙估算观测中呈现的缺失值。

在这种状况下,下面的代码显示观测 1(3,NA,5)和观测 3(3,3,3)在间隔上最靠近(~2.45)。

因而,用一个 1 - 最近邻对观测值 1(3,NA,5)中的缺失值进行插补,失去的估计值为 3,与观测值 3(3,3,3)的第二维度的估计值雷同。

此外,用一个 2 - 最近邻来估算观测值 1(3,NA,5)中的缺失值将失去 1.5 的估计值,这与观测值 2 和 3 的第二维度的平均值雷同,即(1,0,0)和(3,3,3)。

到目前为止,咱们探讨了用 KNNImputer 解决连续变量的缺失值。上面,咱们创立一个数据框,其中蕴含离散变量中短少的值。

为了填补离散变量中的缺失值,咱们必须将离散值编码成数值,因为 KNNImputer 只对数值变量无效。咱们能够应用类别到数值变量的映射来执行此操作。

结尾

在本文中,咱们理解了缺失值、起因,以及如何应用 KNNImputer 来填充缺失值。抉择 k 来应用 kNN 算法来填充缺失值可能是争执的焦点。

此外,钻研表明,在应用不同 k 值进行插补后,有必要应用穿插验证来测验模型。只管缺失值的插补是一个一直倒退的钻研畛域,但 kNN 是一种简略而无效的策略。

原文链接:https://www.analyticsvidhya.c…

欢送关注磐创 AI 博客站:
http://panchuang.net/

sklearn 机器学习中文官网文档:
http://sklearn123.com/

欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/

退出移动版