【发布时间】:2018-02-24 17:14:10
【问题描述】:
当您对分类变量进行一次性编码时,您通常会在建模之前删除其中一个变量。这样,您就没有线性依赖于其他功能的冗余功能。
有没有办法指定不应在拟合中使用的分类变量的级别?
来自the documentation: “我们强烈建议避免将具有任何级别的分类列一次性编码为许多二进制列,因为这非常低效。对于习惯于为其他框架手动扩展其分类变量的 Python 用户尤其如此。
【问题讨论】:
标签: h2o
当您对分类变量进行一次性编码时,您通常会在建模之前删除其中一个变量。这样,您就没有线性依赖于其他功能的冗余功能。
有没有办法指定不应在拟合中使用的分类变量的级别?
来自the documentation: “我们强烈建议避免将具有任何级别的分类列一次性编码为许多二进制列,因为这非常低效。对于习惯于为其他框架手动扩展其分类变量的 Python 用户尤其如此。
【问题讨论】:
标签: h2o
简短的回答是“不”:您将决定权留给 H2O,因此它可以高效地完成。 section just after the one you linked to 解释了原因:
当 GLM 执行回归(使用因子列)时,可以省略一个类别以避免多重共线性。如果正则化被禁用(lambda = 0),则忽略一个类别。但是,当使用默认的 lambda 参数时,所有类别都包括在内。
正则化的不同行为的原因是共线性不是正则化的问题。最好离开正则化来找出忽略哪个级别(或如何在各个级别之间分配系数)。
顺便说一句,似乎所有其他算法都允许控制分类编码: http://docs.h2o.ai/h2o/latest-stable/h2o-docs/data-science/algo-params/categorical_encoding.html
【讨论】: