分箱(也称为分桶)是一种
特征工程
将不同的数值子范围分组到分箱或
存储分区。
在许多情况下,分箱会将数值数据转换为分类数据。
例如,假设某个功能
名为 X
,其最小值为 15;
最高值为 425借助分箱,您可以使用X
以下五个分箱:
- 分箱 1:15 到 34
- 分箱 2:35 到 117
- 分箱 3:118 到 279
- 分箱 4:280 到 392
- 分箱 5:393 到 425
分箱 1 的范围为 15 到 34,因此 X
的每个介于 15 到 34 之间的值
最终出现在分箱 1 中。在这些分箱上训练的模型不会有任何不同
更改为 X
值 17 和 29,因为这两个值都位于分箱 1 中。
特征向量表示 这五个分箱如下:
分箱号 | Range | 特征向量 |
---|---|---|
1 | 15-34 岁 | [1.0, 0.0, 0.0, 0.0, 0.0] |
2 | 35-117 人 | [0.0, 1.0, 0.0, 0.0, 0.0] |
3 | 118-279 人 | [0.0, 0.0, 1.0, 0.0, 0.0] |
4 | 280-392 | [0.0, 0.0, 0.0, 1.0, 0.0] |
5 | 393-425 人 | [0.0, 0.0, 0.0, 0.0, 1.0] |
即使 X
是数据集内的单列,分箱也会产生模型
将 X
视为五个独立的特征。因此,模型学习
单独的权重。
- 特征与 label 弱或不存在。
- 对特征值进行聚类时。
分箱可能会让人感觉不合常理,因为 上一个示例以相同方式处理值 37 和 115。但当 因此,对于某个特征,分箱比线性特征 代表数据。
分箱示例:购物者数量与温度的关系
假设您要创建一个模型来预测 这里显示了 与购物者数量进行比较:
该曲线图显示,当初在 Google Play 上购物时, 温度将最为舒适。
您可以将特征表示为原始值: 则特征向量中的特征向量为 35.0。这个想法最好吗?
训练期间,线性回归模型会针对每个单词的 功能。因此,如果将温度表示为单个特征,则 35.0 的 5 倍(即 35.0 的五分之一) 则预测为 7.0。然而,图表并不 标签和标签之间的线性关系 特征值。
图表推荐了以下子范围中的三个聚类:
- 分箱 1 的温度范围为 4-11。
- 分箱 2 的温度范围为 12-26。
- 分箱 3 的温度范围为 27-36。
模型会为每个分箱学习单独的权重。
虽然可以创建三个以上的分箱, 通常不适合这么做,原因如下:
- 只有当分箱和标签之间存在关联时,模型才能学习 有足够的样本。在给定的示例中,3 个分箱中 包含至少 10 个样本,这可能足以满足训练需求。 共有 33 个单独的分箱 没有分箱包含足够的样本供模型进行训练。
- 为每种温度设置单独的分箱,结果如下: 33 个独立的温度功能。不过,您通常应该尽可能减小 模型中的特征数量。
练习:检查您的理解情况
下面的曲线图显示了每 0.2 度的房价中位数 神话国家自由岛的纬度:
图中显示了住宅值和纬度之间的非线性模式, 因此将纬度表示为浮点值可能没有什么帮助 使模型能够做出良好的预测。也许对纬度进行分桶 想法?
- 41.0 至 41.8
- 42.0 至 42.6
- 42.8 至 43.4
- 43.6 至 44.8
分位数分桶
分桶可创建分桶边界, 或每个分桶中的样本数完全匹配或几乎相等。分位数分桶 大部分情况下隐藏离群值。
为了说明分位数分桶所解决的问题,请考虑以下 如下图所示的等间距分区,其中每个分区 10 个存储分区中的 10 个表示正好 10,000 美元的跨度。 请注意,范围从 0 到 10,000 包含数十个样本 但 50,000 到 60,000 的分桶只包含 5 个样本。 因此,模型有足够的样本来使用 0 到 10000 个 但对于 50,000 到 60,000 个存储分区,没有足够的样本进行训练。
相比之下,下图则使用分位数分桶来划分汽车价格 分箱,每个分桶中的样本数量大致相同。 请注意,有些分箱的价格范围较窄,而其他分箱的价格范围较窄 价格范围很广。