Web数据的大型机器学习

时间:2012-04-27 08:49:50

标签: php database matrix mapreduce machine-learning

如果我想使用太大而不适合内存的矩阵进行大量数据拟合,我会研究哪些工具/库?具体来说,如果我通常使用php + mysql运行来自网站的数据,你会建议制作一个可以在合理的时间内运行大型矩阵运算的离线流程吗?

可能的答案可能就像“你应该使用这种语言和这些分布式矩阵算法在许多机器上映射reduce”。我认为php不是最好的语言,因此流程更像是其他一些离线进程从数据库读取数据,进行学习,并以php可以在以后使用的格式存储规则(因为该网站的其他部分是用PHP构建的。

不确定这是否是问这个问题的合适场所(会在机器学习SE中询问它但是它从未进入测试阶段)。

2 个答案:

答案 0 :(得分:3)

如果您想处理大量数据,则需要执行许多操作。 处理Web规模数据的一种方法是使用Map / Reduce,也许您可​​以查看Apache Mahout这是一个可扩展的机器学习包,包含

  • 协作过滤
  • 基于用户和项目的推荐人
  • K-Means,模糊K均值聚类
  • 还有更多。

具体而言,您可能会在某些开源项目中提供您想要执行的操作,例如Weka,但您可能需要迁移/创建代码才能执行分发作业。

希望上面给你一个想法。

答案 1 :(得分:2)

机器学习是一个广泛的领域,可以用于许多不同的事情(例如监督预测建模和无监督数据探索)。根据您想要实现的目标以及数据的性质和维度,找到可扩展的算法,这些算法在输出的模型质量和利用大型培训集的可扩展性以及速度和内存消耗方面都很有趣。预测时间是一个难以回答的难题。一些算法可以是可扩展的,因为它们是在线的(即,在不必一次加载所有数据集的情况下逐步学习),其他算法是可缩放的,因为它们可以被分成可以并行执行的子任务。这完全取决于您要实现的目标以及您过去收集/注释的数据类型。

例如,对于文本分类,简单的线性模型,如具有良好特征的逻辑回归(TF-IDF归一化,可选的二元组和可选的二元特征选择)可以扩展到非常大的数据集(数百万个文档),而无需任何群集上的一种群集并行化。看看liblinear和vowpal wabbit,以构建这种可扩展的分类模型。