这是特征工程的好习惯吗?

数据挖掘 逻辑回归 特征工程 特征构造
2021-09-27 06:22:39

我有一个关于特征工程的实际问题......说我想通过使用逻辑回归来预测房价,并使用了包括邮政编码在内的一系列特征。然后通过检查特征重要性,我意识到 zip 是一个很好的特征,所以我决定在 zip 的基础上添加更多的特征——例如,我去人口普查局得到平均收入、人口、学校数量和数量每个拉链的医院。有了这四个新功能,我发现模型的性能现在更好了。所以我添加了更多与 zip 相关的功能……这个循环一直在继续。最终模型将被这些与 zip 相关的功能所主导,对吧?

我的问题:

  1. 首先做这些有意义吗?
  2. 如果是,我怎么知道什么时候是停止这个循环的好时机?
  3. 如果不是,为什么不呢?
4个回答

1)是的,这是有道理的。尝试手动创建特征将帮助学习者(即模型)从原始数据中获取更多信息,因为原始数据并不总是适合学习的形式,但您始终可以从中构建特征。您添加的功能基于一项功能。这很常见。但是,您的学习器逻辑回归对多重共线性很敏感。您需要注意要添加哪些功能以及添加多少功能。否则,您的模型可能会过拟合。

2)由于您使用逻辑回归,您可以在添加新结构之前始终使用 AIC 或执行统计显着性检验,如卡方检验(测试拟合优度),以确定响应的分布是否真的不同有和没有这种结构。这在您的数据稀缺时特别有用。另一种方法是在模型中添加惩罚项。例如,逻辑套索回归。

3) 不断添加新功能并不总是一个好主意。小心高维的诅咒。添加新功能时,实际上是在数据上添加了一个新维度。天真地,人们可能会认为收集更多特征永远不会受到伤害,因为在最坏的情况下它们不会提供有关该类的新信息。但事实上,维度的诅咒可能会超过它们的好处。我希望有关机器学习session6 的有用信息能有所帮助。

如果您可以继续添加新数据(基于主要概念,例如区域,即邮政编码)并且模型的性能有所提高,那么当然是允许的……假设您只关心最终结果。

有一些指标会尝试指导您进行此操作,例如Akaike 信息准则(AIC) 或可比较的贝叶斯信息准则(BIC)。这些本质上有助于根据其性能选择模型,并因引入且必须估计的所有其他参数而受到惩罚。AIC 看起来像这样:

AIC=2k2ln(L^)

在哪里k是要估计的参数数量,即您应用的特征数量,因为每个特征在您的逻辑回归中都有一个系数。L^是最大似然的最大值(相当于最优分数)。BIC 简单地使用k惩罚模型略有不同。

这些标准可以帮助告诉您何时停止,因为您可以尝试具有越来越多参数的模型,并简单地选择具有最佳 AIC 或 BIC 值的模型。

如果模型中还有其他与 ZIP 无关的功能,它们可能会不堪重负——这取决于您使用的模型。但是,他们也可能解释有关数据集的一些事情,这些事情根本不能包含在邮政编码信息中,例如房屋的建筑面积(​​假设这与邮政编码相对独立)。

在这种情况下,您可以将这些与主成分分析进行比较,其中一组特征解释了数据集中方差的一个维度,而其他特征解释了另一个维度。因此,无论您拥有多少与 ZIP 相关的功能,您都可能永远无法解释占地面积的重要性。

通常,功能越丰富越好。

但是,要记住一件事,回归通常不适用于高度相关的数据(多重共线性)。当您以这种方式扩展功能时,您可能需要牢记这一点。

关于这个主题(以及潜在的缓解方法)有很多信息,只有谷歌回归和多重共线性。

简而言之,

  1. 是的。明确地。
  2. @n1k31t4 有一些很好的建议。随意生成您认为会改进模型的特征,然后您可以使用诸如 PCA 和其他特征选择技术之类的技术将自己限制在重要的事情上。
  3. 要考虑的另一件事是它在努力与结果方面的实用性。

特征是您的模型的信息。信息越多,它的执行和预测能力就越好。它越小,越难预测值。所以简短的纳赛尔是肯定的。拥有尽可能多的功能总是值得的。不过,这总是有限制的,因为信息过载也可能会烧毁你的处理器,所以要小心设计了多少功能。此外,不必要的功能只会增加倦怠,因此清理某些功能始终是一种好习惯。整个数据预处理阶段就是这样。

第一个答案有一些很好的细节。就停止循环而言,您需要注意几个措施和因素,以检查您的模型在哪里停止表现更好,这些措施和 RMSE 之类的措施。一个简单的例子是xgboost对数据使用回归并指定周期数。运行模型,您将获得每个周期的 RMSE。它将降低到一个极限,之后您将能够推断出模型在某个周期后已经趋于稳定。这就是模型调整和优化的工作原理。