2012-04-27 40 views
3

如果我想要使用太大而不适合内存的矩阵进行大量数据拟合,我会查看哪些工具/库?具体来说,如果我通常使用php + mysql在网站上运行数据,那么如何建议在合理的时间内执行大型矩阵操作的离线进程?Web数据上的大型机器学习

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

不知道这是否是正确的地方问这个问题(在机器学习SE中会问这个问题,但它从来没有超出测试版)。

+1

机器学习已被交叉验证合并。 – 2012-04-27 08:52:58

回答

3

如果你想处理大量的数据,你需要做很多事情。处理网络规模数据的 一种方法是使用的Map/Reduce,也许你可以看看Apache Mahout这是一个包含

  • 协同过滤可扩展的机器学习包
  • 用户和基于项目引荐人
  • K-均值,模糊K均值聚类
  • 还有更多。

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

希望以上给出你的想法。

+0

谢谢你,非常有趣的东西,我会研究它。 – hackartist 2012-04-27 09:40:51

+0

如果它看起来很有趣,那就太好了。 – 2012-04-27 09:50:17

2

机器学习是一个广泛的领域,可用于许多不同的事情(例如监督预测建模和无监督数据探索)。根据您想要达到的目标以及数据的性质和维度,找到可扩展的算法,这两种算法对于他们输出的模型的质量以及利用大型训练集的可扩展性以及速度和内存消耗预测时间是一个难以回答的难题。一些算法可以是可扩展的,因为它们是联机的(即,增量学习而不必一次加载所有数据集),其他算法可扩展,因为它们可以被分成可以并行执行的子任务。这一切都取决于你想要达到的目标以及你过去收集/注释的数据类型。例如,对于文本分类,简单线性模型(如具有良好特征的逻辑回归(TF-IDF归一化,可选二元组和可选的chi2特征选择))可以扩展到非常大的数据集(数百万个文档),而不需要群集上的任何类型的群集并行化。查看liblinear和vowpal wabbit来构建这样的可伸缩分类模型。