如何执行具有大量特征的逻辑回归?

数据挖掘 机器学习 Python 预测建模 逻辑回归 数据
2021-10-11 05:29:38

我有一个包含 330 个样本和每个样本 27 个特征的数据集,其中逻辑回归有一个二元类问题。

根据“如果十个规则”,我需要至少 10 个事件才能包含每个功能。不过,我有一个不平衡的数据集,有 20% 的正类和 80% 的负类。

这只给了我 70 个事件,使 Logistic 模型中只包含大约 7/8 个特征。

我想评估所有特征作为预测变量,我不想手动选择任何特征。

那么你有什么建议呢?我应该做出所有可能的 7 种功能组合吗?我是否应该使用关联模型单独评估每个特征,然后只选择最好的作为最终模型?

我也很好奇分类和连续特征的处理,我可以混合它们吗?如果我有一个分类 [0-1] 和一个连续 [0-100],我应该标准化吗?

我目前正在使用 Python。

非常感谢你的帮助!

2个回答

为了将您的模型减少到 7 个变量,您可以采取以下几种方法:

  1. PCA(无监督):这会创建数据的“新”线性组合,其中每个处理组件尽可能多地解释数据中的差异。因此,前 7 个组件(共 27 个)应该能够解释数据变化的很大一部分。然后,您可以将这七个组件插入您的逻辑回归方程。这里的缺点是,因为组件是原始变量的组合,所以您对回归模型失去了一些可解释性。然而,它应该产生非常好的准确性。同样的技术适用于其他降维方法,例如
  2. 回归中的另一种常用方法是逐步向前,您从一个变量开始,每一步添加另一个变量,根据某些标准(通常是 BIC 或 AIC 分数)保留或删除。向后逐步回归是同样的事情,但是您从所有变量开始,然后根据某些标准再次删除一个。根据简短的搜索,python 似乎没有逐步回归,但它们执行了此数据科学帖子中描述的类似特征消除算法。
  3. 套索回归使用大号1缩小特征系数的惩罚规范有效地消除了其中的一些。你可以包括这个大号1规范到您的逻辑回归模型中。似乎sklearn 的 LogisticRegression允许您分配所需的惩罚以实现此目的。注意:Lasso 不会将变量系数显式设置为零,但会缩小它们以允许您选择 7 个最大的系数。

正如@E_net4 评论的那样,您的持续问题在另一篇文章中得到解决。

你把“十法则”看得太认真了。这是一个非常粗略的经验法则。它不打算像您使用它一样使用。

听起来你在想:“我只有 70 个正例,所以根据 10 规则,我只能使用 7 个特征;我如何选择使用哪 7 个特征?”

这不是 10 法则的意思。这不是指定允许使用多少功能的规则。10 规则是描述性的,而不是规定性的,它是一个近似的指导方针:如果实例的数量远少于特征数量的 10 倍,那么过度拟合的风险尤其高,并且可能会得到糟糕的结果。

那你该怎么办?无论如何你都应该做你想做的事情:使用正则化,并使用交叉验证来选择正则化超参数。此外,重要的是要有一个保持测试集,在你完成分类器的所有内容之前不要碰它,以避免过度拟合和有偏差的准确度估计。

如果你能得到更多的数据,那真的很有帮助。

最后,由于你有不平衡的类,你可以考虑阅读关于类不平衡和处理它的方法。