如何估计二元分类器所需的内存量?

Posted

技术标签:

【中文标题】如何估计二元分类器所需的内存量?【英文标题】:How to estimate amount of memory needed for binary classifier? 【发布时间】:2012-02-22 20:28:42 【问题描述】:

假设我想创建一个二进制分类器来检测垃圾邮件。我有十亿个训练示例和大约 20 个特征。我希望训练有素的分类器适合内存(我将在实际上是 rpc 调用的云和磁盘操作上运行它会非常昂贵)。

我的问题是:如何估算我需要的内存量?假设我的分类器是随机森林,而我对训练集中垃圾邮件消息的分布一无所知。

只有数字:两个类、十亿个示例、20 个特征。

这样的估计是否可能?怎么办?

【问题讨论】:

你是想在内存中拟合十亿个训练样本还是在内存中拟合训练好的模型? @MichaelMcGowan:在内存中拟合训练好的模型并实时运行分类。 这在理论上取决于树的大小,实际上取决于实际实现。 【参考方案1】:

对于垃圾邮件分类,您可能应该对单词出现特征 + 二元组 + 链接中出现的域名或 ip 地址 + 从标头和 SMTP 上下文中提取的内容运行线性分类器。

在这种情况下,您可以在 2 ** 18 维(例如使用 vowpal wabbit)上对特征进行哈希运算,每个特征乘以 8 个字节,从而使您在内存中成为 2MB 模型。

【讨论】:

以上是关于如何估计二元分类器所需的内存量?的主要内容,如果未能解决你的问题,请参考以下文章

sklearn 分类器管道所需的“列的有效规范”是啥?

如何在文本分类中使用朴素贝叶斯预测所需的类

贝叶斯分类器(2)极大似然估计、MLE与MAP

贝叶斯分类器(3)朴素贝叶斯分类器

你如何估计智能合约调用所需的 gas 量?

如何估计 Encog 使用 Levenberg-Marquardt 算法用特定样本集训练特定网络所需的 RAM 量?