【发布时间】:2014-01-23 21:13:16
【问题描述】:
我有大约 6200 个类别的大约 4400 万个训练示例。 训练后,模型大约为 450MB
在测试时,使用 5 个并行映射器(每个映射器都有足够的 RAM),分类以每秒约 4 个项目的速度进行,这太慢了。
如何加快速度? 我能想到的一种方法是减少语料库这个词,但我害怕失去准确性。我将 maxDFPercent 设置为 80。
我想到的另一种方法是通过聚类算法运行项目,并根据经验最大化集群的数量,同时将每个类别中的项目限制在单个集群中。这将允许我为每个集群构建单独的模型,从而(可能)减少训练和测试时间。
还有其他想法吗?
编辑:
在下面给出的一些答案之后,我开始考虑通过运行聚类算法来进行某种形式的下采样,识别彼此“高度”接近的项目组,然后从那些“高度”接近的群体和其他彼此不那么紧密的样本。
我还开始考虑使用某种形式的数据规范化技术,包括在使用 n-gram 时合并编辑距离 (http://lucene.apache.org/core/4_1_0/suggest/org/apache/lucene/search/spell/NGramDistance.html)
我还在考虑使用 hadoop 流 api 来利用 Python 中可用的一些 ML 库,从此处列出的 http://pydata.org/downloads/ 和此处列出的 http://scikit-learn.org/stable/modules/svm.html#svm (这些我认为使用以下答案之一中提到的 liblinear )
【问题讨论】:
标签: hadoop machine-learning classification cluster-analysis mahout