如何构建具有十亿稀疏特征的预测模型?

机器算法验证 回归 物流 特征选择 降维
2022-03-22 04:18:32

我正在制作一个模型来学习具有大特征数和稀疏样本的数据集(我打算使用逻辑回归)。特征数可以大到 1,000,000,000。稀疏意味着零比一多(可能千分之一是一,其他为零)。为了处理这个数据集我应该做一些降维,否则机器无法处理模型,并且我想找到一些方法来处理稀疏性。所以我的问题是:

  1. 怎么做降维?

  2. 如何处理稀疏?

2个回答

降维的一种替代方法是使用散列技巧在整个特征集上训练分类器,而无需事先进行降维。* Vowpal Wabbit pwoject——呃,项目——是使用散列技巧加速的各种学习算法的实现计算:

VW 是机器学习中速度的精髓,能够轻松地从 terafeature 数据集中学习。通过并行学习,它在进行线性学习时可以超过任何单个机器网络接口的吞吐量,这是学习算法中的第一个。

我不知道大众汽车最终是否适合您(如果您拥有数十亿个功能,那么您的许多选择最终可能会受到软件工程考虑的影响),但希望它是指向正确方向的指针!

* 嗯,散列技巧在技术上是一种降维,但只是在非常愚蠢的意义上。

传统上,主成分分析 (PCA)用于降(在数学意义上)。但是,如果您关心您的特征指标项目,在因子分析和潜在变量建模术语中)表示和测量的潜在构造(因子) ,那么探索性因子分析 (EFA)和/或验证性因子分析 (CFA)是合适的. 有关这方面的更多信息,请在交叉验证网站上查看我的答案:https ://stats.stackexchange.com/a/96160/31372 。

根据潜在构造(因素)对现象进行建模还有一个额外的好处,因为这种方法可以进一步降低维数并在更高的抽象级别上建模(但您仍然可以获得有关特征/指标的信息,如果这是需要)。

关于有偏见的样本,正如你所说的,我认为你在谈论稀疏数据如果是这种情况,请在数据科学网站上阅读我的答案:https ://datascience.stackexchange.com/a/918/2452 。

更新:有几个人对我建议将 PCA 用于具有如此大量 (10^9) 特征的数据集表示担忧。尽管没有使用此类数据集的直接经验,但我坚持我的回答并提供现有工具和研究的一小部分(“冰山一角”),支持我的建议(特别是专注于使用 PCA 应用在云中,包括集群,应该解决体积问题,以及并行化 PCA,包括使用 GPU,应该解决时序问题):