Web 数据上的大型机器学习


Large Machine Learning on Web Data

如果我想使用太大而无法放入内存的矩阵进行大量数据拟合,我会研究哪些工具/库? 具体来说,如果我在通常使用 php+mysql 的网站数据上运行,您如何建议制作一个可以在合理时间内运行大型矩阵操作的离线进程?

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

不确定这是否是问这个问题的正确地方(会在机器学习 SE 中问它,但它从未从测试版中出来(。

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

  • 协同过滤
  • 基于用户和项目的推荐器
  • K
  • 均值、模糊 K 均值聚类
  • 等等。

具体来说,你想要做的事情可能在某些开源项目中可用,比如Weka,但你可能需要迁移/创建代码来完成分发工作。

希望以上能给你一个想法。

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

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