机器学习【建模进阶指南】(一)

谁说我不能喝 提交于 2021-02-16 09:50:46

https://zhuanlan.zhihu.com/p/107859019


欢迎来到Vitu中级机器学习微课程!
如果你有机器学习的背景知识,并且想学习如何快速提高模型的质量,那么你来对地方了!在这个微课程中,你将学习如何通过以下方式加速您的机器学习专业知识:

  • 解决实际数据集中常见的数据类型(缺失值,分类变量),
  • 设计pipelines以提高机器学习代码的质量,
  • 使用先进的技术进行模型验证(交叉验证),
  • 建立最先进的模型(XGBoost),和
  • 避免常见和重要的数据科学错误(泄漏leakage)。

在此过程中,您将通过每个新主题的实际数据的动手练习来巩固您的知识。

缺失值处理


在本教程中,你将学习三种处理缺失值的方法。 然后,你将比较这些方法对现实世界数据集的有效性。

缺失值在实际数据中会以多种方式出现。 例如,

  • 对于两卧室房屋,第三间卧室的大小可以是缺失值。
  • 调查受访者可以选择不分享他的收入,收入项就是缺失值。

如果你尝试使用缺少值的数据构建模型,则大多数机器学习库(包括scikit-learn)会出错。 因此,你需要选择以下策略之一。

三种策略

1)简单策略:去掉有缺失值的列


除非列中的大多数数值丢失,这种方法会使得模型丢失重要的信息,显然不是太好


2) 好一点的策略: 补缺失值

对于缺失值我们采用这一列的平均值来补,它通常会比完全删除列更准确


3) 更好的策略: 补缺失值并且加一标记缺失值位置的列

补缺失值是标准方法,通常效果很好。 但是,估算值可能系统地高于或低于其实际值(未在数据集中收集)。 或者,具有缺失值的行可能在某些其他方面是唯一的。 在这种情况下,你的模型会通过考虑最初缺少哪些值来做出更好的预测。

案例

在这个案例里,我们将查看澳大利亚墨尔本的房价数据。

下载并上传

点击这里 下载 数据集

我们再把csv文件上传到vitu的数据集空间里

我们的模型将使用诸如房间数量和土地面积等信息来预测房价。

我们不会关注数据加载步骤。 相反,你可以想象您已经拥有X_train,X_valid,y_train和y_valid中的训练和验证数据。

我们定义一个函数score_dataset()来比较处理缺失值的不同方法。 此函数返回随机森林模型的平均绝对误差(MAE)。


方法1得分(去掉有缺失值的列)

由于我们正在使用训练集和验证集,因此我们谨慎地在两个DataFrame中删除相同的列。

方法2得分(补缺失值)

接下来,我们使用SimpleImputer以每列的平均值来补缺失值。

尽管很简单,但填充平均值通常表现得非常好(但这会因数据集而异)。 虽然统计学家已经尝试了更复杂的方法来确定估算值(例如回归估算),但是一旦将结果插入复杂的机器学习模型,复杂的策略通常不会带来额外的好处。

我们看到方法2的MAE低于方法1,因此方法2在该数据集上表现更好。

方法3(带扩展的补缺失值)得分

接下来,我们补缺失值,同时跟踪补的值。

我们可以看到,方法3比方法2略差

那么为什么方法2比方法1好呢

训练数据有10864行和12列,其中三列包含缺失数据。 对于每列,只有不到一半的条目丢失。 因此,删除列会删除大量有用的信息,因此插补可以更好地运行。

结论

通常,相对于我们简单地删除具有缺失值的列(在方法1中),输入缺失值(在方法2和方法3中)产生了更好的结果。


原文链接:机器学习【建模进阶指南】:1.概览与缺失值处理

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!