大数据的逻辑回归

机器算法验证 r 物流 广义线性模型 造型 回归策略
2022-03-29 02:35:13

我有一个包含大约 5000 个特征的数据集。对于该数据,我首先使用卡方检验进行特征选择;之后,我得到了大约 1500 个变量,这些变量与响应变量有显着关系。

现在我需要对此进行逻辑回归。我正在为 R 使用 glmulti 包(glmulti 包为 vlm 提供有效的子集选择),但它一次只能使用 30 个特征,否则它的性能会下降,因为我的数据集中的行数约为 20000。

有没有其他方法或技术可以解决上述问题?如果我采用上述方法,将花费太多时间来拟合模型。

4个回答

进行特征筛选,然后将幸存的特征输入到不了解之前进行了多少数据折磨的方法中是不合适的。最好使用可以处理所有潜在特征的方法(例如,弹性网络)。其他人关于使用数据缩减的建议也是很好的想法。

第一种方法是使用 PCA 来降低数据集的维数。尝试保留约 97% 的总方差,这可能会有所帮助。

另一种选择是使用诸如随机梯度下降之类的东西,这可能是一种更快的算法并且能够适应 R 的内存。

编辑: R 的一个问题是你只能使用你的 RAM,所以如果你只有 8 GB 的内存,那么这就是你的限制。我遇到了很多问题,后来开始使用 python 的 scikit-learn,它似乎可以更好地处理更大的数据集。

可以在这里找到一个非常好的图表,它可以根据您的数据集大小给出一些开始的位置:http: //3.bp.blogspot.com/-dofu6J0sZ8o/UrctKb69QdI/AAAAAAAADfg/79ewPecn5XU/s1600/scikit-learn-flow -图表.jpg

在此处输入图像描述

正如@Frank Harrell 已经提到的,使用弹性网络或 LASSO 对所有 5000 个特征(p)执行惩罚回归将是特征选择的良好开端(不能简单地删除 3500 个变量,因为它们在感兴趣的因变量)。这些方法中的任何一种都可以使用 R 包来执行,glmnet.

为了考虑感兴趣的潜在预测变量之间共享的关系(p = 5000),我建议使用包运行随机森林randomForest和/或使用包进行梯度提升gbm来评估潜在预测变量的相对重要性关于二元结果。有了这些信息,您将为构建更简洁的逻辑回归模型做好准备。

我假设您不仅限于 R,因为这是一个大数据问题,您可能不应该这样做。您可以尝试MLlib,这是 Apache Spark 的可扩展机器学习库。

反过来, Apache Spark是一种用于内存中大规模数据处理的快速通用引擎。它们在 Hadoop 框架上运行,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。它旨在从单个服务器扩展到数千台机器,每台机器都提供本地计算和存储。

请注意,“数千台机器”是可选的(!),您也可以在本地工作/家庭桌面上进行设置。

回到 MLlib,它带有以下开箱即用的算法:

  • 使用 K-means 进行 K-means 聚类|| 初始化。
  • L1 和 L2 正则化线性回归。
  • L1 和 L2 正则化逻辑回归。
  • 交替最小二乘协同过滤,具有显式评级或隐式反馈。
  • 朴素贝叶斯多项分类。
  • 随机梯度下降。

如果您经常使用大数据,您可能需要采用 Hadoop 解决方案。