回归问题分层

你好!在本文中,我将尝试举例说明如何在保留分布比例的回归问题上产生分裂。让我们从基础开始。

您还可以在我的Kaggle笔记本上检查工作示例:笔记本

什么是分层抽样?

分层采样正在从数据集中获取样品,并保留了两种拆分(训练和测试)中类的比例。例如:

如果我们的30%数据来自A类休息来自b;分层我们的培训和测试拆分也应具有相同的比例(例如。30%一种-70%b。当然,这是分类问题中的一个例子,这是非常关键的如果我们有失衡在我们的数据中。如果我们在不使用分层的情况下分配数据,我们可能有非常不平衡的分裂,这并不能正确地代表我们的模型的概括能力,也不会给它甚至有机会学习少数群体。

那回归呢?

当我们处理分类问题时,我们的数据中有类标签,并且我们知道如何处理这些数据。但是回归呢?也许我们可以将此类比例的定义映射到回归问题的分布比例。如果我们将每个值视为单独的类别怎么办?让我们看看。我们将使用“住房价格竞争”来自Kaggle

这将给出以下结果:

唯一标签计数:663
数据长度:1460行

如果我们这样做,我们将拥有663不同的课程,我们只有1460我们的数据中的行。这将非常稀疏,我们应该实施更聪明的东西。让我们看一下标签的分布:

我们有一个正确的偏斜分布,如果我们只是随机拆分这些数据,似乎有些折叠会冒险。但是,让我们尝试作为基准。

让我们创建5不同的全随机kflold分裂与不同的种子并检查它们:

我们可以明确地看到这些分裂中的分布差异:

  • 种子0-拆分3
  • 种子2 - 分裂2
  • 种子4-拆分3

他们彼此之间差异很大,这种情况可以在我们的模型上引起这些折叠的不稳定性能。让我们对回归数据实施更普遍的分层。

回归分层

如我们所见,将每个连续价值视为单独的类是不明智的。但是我们可以使用Binning对它们进行分组。我们可以将标签拆分为k等同于大小的间隔,并将每个间隔定义为唯一类。这里,k是我们应该解决问题的高参数。

我们只是要使用。切()功能来自熊猫图书馆。通过查看其最小值和最大值,它将我们的数据分为相等的间隔。由于我们的分布偏斜,因此我认为使用基于分数的封装的风险。如果您认为自己的分布适合此,则可以简单地更改。切().qcut()

让我们看看当我们使用分层连续分裂时将拥有什么:

似乎我们避免使用不同的分布比例分裂数据。我们仍然有差异,但是我认为这是可以接受的,因为我们的数据仅具有〜1K行。

这就是为回归问题生成分层的折叠!这确实是一种制作我们想要的东西的天真方法,当然我们可能会尝试实施不同的方法来做到这一点,但这是我能想到的最简单的方法!

- -

- -

获取中型应用betway娱乐官网

一个说“在应用商店上下载”的按钮,如果单击,它将带您到iOS App Store
一个说“获取它,Google Play”的按钮,如果单击它,它将带您到Google Play商店
Baidu