missforest

Missing data often plagues real-world datasets, and hence there is tremendous value in imputing, or filling in, the missing values. Unfortunately, standard ‘lazy’ imputation methods like simply using the column median or average don’t work well.

丢失的数据通常困扰着现实世界的数据集,因此,估算或填写丢失的值具有巨大的价值。 不幸的是,标准的“惰性”插补方法(例如仅使用列中位数或平均值)效果不佳。

On the other hand, KNN is a machine-learning based imputation algorithm that has seen success but requires tuning of the parameter k and additionally, is vulnerable to many of KNN’s weaknesses, like being sensitive to being outliers and noise. Additionally, depending on circumstances, it can be computationally expensive, requiring the entire dataset to be stored and computing distances between every pair of points.

另一方面,KNN是一种基于机器学习的插补算法,它已经取得了成功,但需要调整参数k,而且容易受到KNN的许多弱点的影响,例如对异常值和噪声敏感。 另外,根据情况,计算可能会很昂贵,需要存储整个数据集并计算每对点之间的距离。

MissForest is another machine learning-based data imputation algorithm that operates on the Random Forest algorithm. Stekhoven and Buhlmann, creators of the algorithm, conducted a study in 2011 in which imputation methods were compared on datasets with randomly introduced missing values. MissForest outperformed all other algorithms in all metrics, including KNN-Impute, in some cases by over 50%.

MissForest是基于随机森林算法的另一种基于机器学习的数据插补算法。 该算法的创建者Stekhoven和Buhlmann于2011年进行了一项研究,该研究在具有随机引入的缺失值的数据集上比较了插补方法。 在所有指标上,MissForest的性能均优于其他所有算法,包括KNN-Impute,在某些情况下超过50%。

First, the missing values are filled in using median/mode imputation. Then, we mark the missing values as ‘Predict’ and the others as training rows, which are fed into a Random Forest model trained to predict, in this case, Age based on Score. The generated prediction for that row is then filled in to produce a transformed dataset.

首先,使用中位数/众数插补来填充缺失值。 然后,我们将缺失的值标记为'Predict',将其他值标记为训练行,将其输入经过训练的Random Forest模型中,该模型用于预测基于Score Age 。 然后填写针对该行生成的预测,以生成转换后的数据集。

Assume that the dataset is truncated. Image created by author.
假设数据集被截断。 图片由作者创建。

This process of looping through missing data points repeats several times, each iteration improving on better and better data. It’s like standing on a pile of rocks while continually adding more to raise yourself: the model uses its current position to elevate itself further.

这种遍历缺失数据点的循环过程会重复几次,每次迭代都会改善越来越好的数据。 这就像站在一堆岩石上,而不断增加更多东西以提高自己:模型使用其当前位置进一步提升自己。

The model may decide in the following iterations to adjust predictions or to keep them the same.

模型可以在接下来的迭代中决定调整预测或使其保持不变。

Image created by author
图片由作者创建

Iterations continue until some stopping criteria is met or after a certain number of iterations has elapsed. As a general rule, datasets become well imputed after four to five iterations, but it depends on the size and amount of missing data.

迭代一直持续到满足某些停止条件或经过一定数量的迭代之后。 通常,经过四到五次迭代后,数据集的插补效果会很好,但这取决于丢失数据的大小和数量。

There are many benefits of using MissForest. For one, it can be applied to mixed data types, numerical and categorical. Using KNN-Impute on categorical data requires it to be first converted into some numerical measure. This scale (usually 0/1 with dummy variables) is almost always incompatible with the scales of other dimensions, so the data must be standardized.

使用MissForest有很多好处。 一方面,它可以应用于数值和分类的混合数据类型。 对分类数据使用KNN-Impute要求首先将其转换为某种数字量度。 此比例(通常为0/1,带有虚拟变量 )几乎总是与其他尺寸的比例不兼容,因此必须对数据进行标准化。

In a similar vein, no pre-processing is required. Since KNN uses naïve Euclidean distances, all sorts of actions like categorical encoding, standardization, normalization, scaling, data splitting, etc. need to be taken to ensure its success. On the other hand, Random Forest can handle these aspects of data because it doesn’t make assumptions of feature relationships like K-Nearest Neighbors does.

同样,不需要预处理。 由于KNN使用朴素的欧几里得距离,因此需要采取各种措施,例如分类编码,标准化,归一化,缩放,数据拆分等,以确保其成功。 另一方面,Random Forest可以处理数据的这些方面,因为它没有像K-Nearest Neighbors那样假设特征关系。

MissForest is also robust to noisy data and multicollinearity, since random-forests have built-in feature selection (evaluating entropy and information gain). KNN-Impute yields poor predictions when datasets have weak predictors or heavy correlation between features.

MissForest还对嘈杂的数据和多重共线性具有鲁棒性,因为随机森林具有内置的特征选择(评估熵和信息增益 )。 当数据集的预测变量较弱或特征之间的相关性很强时,KNN-Impute的预测结果很差。

The results of KNN are also heavily determined by a value of k, which must be discovered on what is essentially a try-it-all approach. On the other hand, Random Forest is non-parametric, so there is no tuning required. It can also work with high-dimensional data, and is not prone to the Curse of Dimensionality to the heavy extent KNN-Impute is.

KNN的结果在很大程度上还取决于k的值,该值必须在本质上是一种“万能尝试”方法中进行发现。 另一方面,“随机森林”是非参数的,因此不需要调整。 它也可以处理高维数据,并且在很大程度上不会出现KNN-Impute的维数诅咒。

On the other hand, it does have some downsides. For one, even though it takes up less space, if the dataset is sufficiently small it may be more expensive to run MissForest. Additionally, it’s an algorithm, not a model object; this means it must be run every time data is imputed, which may not work in some production environments.

另一方面,它确实有一些缺点。 一方面,即使占用的空间较小,但如果数据集足够小,则运行MissForest可能会更昂贵。 另外,它是一种算法,而不是模型对象。 这意味着每次插补数据时都必须运行它,这在某些生产环境中可能无法运行。

Using MissForest is simple. In Python, it can be done through the missingpy library, which has a sklearn-like interface and has many of the same parameters as the RandomForestClassifier/RandomForestRegressor. The complete documentation can be found on GitHub here.

使用MissForest很简单。 在Python中,这可以通过missingpy库完成,该库具有sklearn的界面,并且具有与RandomForestClassifier / RandomForestRegressor相同的许多参数。 完整的文档可以在GitHub上找到 。

The model is only as good as the data, so taking proper care of the dataset is a must. Consider using MissForest next time you need to impute missing data!

该模型仅与数据一样好,因此必须适当注意数据集。 下次需要填写缺少的数据时,请考虑使用MissForest!

Thanks for reading!

谢谢阅读!

翻译自: https://towardsdatascience.com/missforest-the-best-missing-data-imputation-algorithm-4d01182aed3

missforest


http://www.taodudu.cc/news/show-995237.html

相关文章:

  • 数据可视化工具_数据可视化
  • 使用python和pandas进行同类群组分析
  • 敏捷数据科学pdf_敏捷数据科学数据科学可以并且应该是敏捷的
  • api地理编码_通过地理编码API使您的数据更有意义
  • 分布分析和分组分析_如何通过群组分析对用户进行分组并获得可行的见解
  • 数据科学家 数据工程师_数据科学家应该对数据进行版本控制的4个理由
  • 数据可视化 信息可视化_可视化数据以帮助清理数据
  • 使用python pandas dataframe学习数据分析
  • 前端绘制绘制图表_绘制我的文学风景
  • 回归分析检验_回归分析
  • 数据科学与大数据技术的案例_主数据科学案例研究,招聘经理的观点
  • cad2016珊瑚_预测有马的硬珊瑚覆盖率
  • 用python进行营销分析_用python进行covid 19分析
  • 请不要更多的基本情节
  • 机器学习解决什么问题_机器学习帮助解决水危机
  • 网络浏览器如何工作
  • 案例与案例之间的非常规排版
  • 隐私策略_隐私图标
  • figma 安装插件_彩色滤光片Figma插件,用于色盲
  • 设计师的10种范式转变
  • 实验心得_大肠杆菌原核表达实验心得(上篇)
  • googleearthpro打开没有地球_嫦娥五号成功着陆地球!为何嫦娥五号返回时会燃烧,升空却不会?...
  • python实训英文_GitHub - MiracleYoung/You-are-Pythonista: 汇聚【Python应用】【Python实训】【Python技术分享】等等...
  • 工作失职的处理决定_工作失职的处理决定
  • vue图片压缩不失真_图片压缩会失真?快试试这几个无损压缩神器。
  • 更换mysql_Docker搭建MySQL主从复制
  • advanced installer更换程序id_好程序员web前端培训分享kbone高级-事件系统
  • 3d制作中需要注意的问题_浅谈线路板制作时需要注意的问题
  • cnn图像二分类 python_人工智能Keras图像分类器(CNN卷积神经网络的图片识别篇)...
  • crc16的c语言函数 计算ccitt_C语言为何如此重要

missforest_missforest最佳丢失数据插补算法相关推荐

  1. CVPR 2019 | 全新缺失图像数据插补框架—CollaGAN

    在同一域下的图像和数据是符合一个整体流形分布的,一旦域中的数据缺失,能否利用已有的域中数据去还原丢失的数据呢? Collaborative GAN 提出了一种新的缺失图像数据插补框架,称为协同生成对抗 ...

  2. python 插补数据_python 2020中缺少数据插补技术的快速指南

    python 插补数据 Most machine learning algorithms expect complete and clean noise-free datasets, unfortun ...

  3. CNC插补技术(从原理、分类到具体插补算法,较为详细)

    版权声明:本文为CSDN博主「qq_39887918」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 对于插补技术的理解与认识 对于插补技术的理解与认识 1 插补及 ...

  4. 回归插补法_没有完美的数据插补法,只有最适合的

    数据缺失是数据科学家在处理数据时经常遇到的问题,本文作者基于不同的情境提供了相应的数据插补解决办法.没有完美的数据插补法,但总有一款更适合当下情况. 我在数据清理与探索性分析中遇到的最常见问题之一就是 ...

  5. c语言直线插补原理程序,直线插补算法

    直线插补算法,就是刀具或绘笔每走一步都要和给定的数据进行比对,看该点在次点的上方或者是下方,从而决定下一步该怎么走. 即机床数控系统依照一定方法确定刀具运动轨迹的过程.也可以说,已知曲线上的某些数据, ...

  6. 圆弧插补程序c语言,用C语言写的简易的逐点比较法插补算法,包括直线逐点插补和圆弧插补...

    源文件:https://pan.baidu.com/s/17FQKqn3UaEPQHkmTcOXKOg 提取码:atb2 #include #include #include #include //运 ...

  7. 直线插补计算过程_【计鹏视角】风速数据插补对发电量的影响

    测风数据在插补时通常通过相关函数实现,相关函数一般采用线性方程函数,线性函数根据不同通道的风速相关性散点图来得到. 不同高度层的相关性散点图是成"带"状分布,相关系数越大,&quo ...

  8. 开源项目推荐:运动控制速度前瞻算法(Look-Ahead),连续小线段高速插补算法

    一.什么是速度前瞻 Look-Ahead 技术又称为速度前瞻控制技术,目前实现此技术有两个基本思路: 1.进行路径段之间速度衔接: 2.进行大量微小线段参数曲线拟合. Look-Ahead 技术考虑的 ...

  9. 数据插补—拉格朗日插值法

    数据分析 数据清洗:缺失值处理.1删除记录 2数据插补 3不处理 常见插补方法 插值法-拉格朗日插值法 根据数学知识可知,对于平面上已知的n个点(无两点在一条直线上可以找到n-1次多项式 ,使次多项式 ...

最新文章

  1. 怎样训练YOLOv3
  2. Google和Facebook为什么不用Docker?
  3. 关于多线程中抛异常的这个面试题我再说最后一次!
  4. python三十六:shelve模块
  5. linux下基于jrtplib库的实时传送实现
  6. Storm精华问答 | storm与Hadoop有什么区别?
  7. python如何读取csv文件某几行某几列_关于python:读取.csv文件时,我似乎无法指定列dtypes...
  8. POJ 2367 Genealogical tree【拓扑排序】
  9. python系统学习:第二周之购物车功能
  10. 大数据之-Hadoop完全分布式_rsync案例_差量分发_只把有差异文件进行更新同步到其他服务器---大数据之hadoop工作笔记0032
  11. jpa oracle 传参int类型判空_SQL查询:Oracle、mysql、HQL查询语句差异
  12. sqlserver自定义函数
  13. 计算机硬件英语单词有哪些,计算机硬件英语词汇
  14. 有关设计网站的收藏集合
  15. oracle双活数据中心建设_双活数据中心 是什么
  16. hacks cheats injection
  17. CSSAPP稀里糊涂的读书笔记(一)计算机系统漫游
  18. 贷款申请最大化利润-机器学习项目实战
  19. 几种线程安全的Map
  20. 文件上传漏洞之——漏洞进阶(读文件,写文件,包含图片马,包含日志文件,截断包含)

热门文章

  1. C语言实现单链表(带头结点)的基本操作(创建,头插法,尾插法,删除结点,打印链表)
  2. Linux C++ 简单爬虫
  3. 【操作系统】进程调度(2b):STCF(最短完成时间优先) 算法 原理与实践
  4. Java内存区域分布
  5. Redis高级项目实战!北京java编程入门培训
  6. 不看绝对血亏!java字符串转json
  7. Mybatis-plus常用API全套教程
  8. centos php安装redis扩展,Centos7编译安装redis、php安装phpredis扩展
  9. kafka 重新分配节点_Kafka控制器-分区重分配
  10. System.Configuration命名空间下的关键类