亚马逊EC2与PiCloud

Sre*_*ndh 6 hadoop numpy machine-learning amazon-ec2 mahout

我们是学生试图处理大约1.4亿条记录的数据大小并试图运行一些机器学习算法.我们是整个云解决方案和mahout实现的新手.目前我们已经在postgresql数据库中设置它们但是当前的实现没有扩展,并且在经过多次性能调整后,读/写操作似乎非常慢.因此我们计划寻求基于云的服务.

我们已经探索了一些可能的替代方案.

  1. 亚马逊云服务(Mahout实施)
  2. 带有scikits的Picloud学习(我们计划在NumPy中使用HDF5格式)
  3. 如果有的话,请推荐任何其他选择.

以下是以下问题

  1. 哪会产生更好的结果(转变时间)并且具有成本效益?请提及我们存在的任何其他替代品.
  2. 如果我们设置亚马逊服务,我们应该如何拥有数据格式?如果我们使用dynamodb,成本会上升吗?

谢谢

ogr*_*sel 7

这取决于您想要解决的机器学习问题的性质.我建议你首先将数据集子采样到适合内存的东西(例如,假设稀疏表示,每个样本有几百个非零特征的100k样本).

然后尝试几种机器学习算法,可以在scikit-learn中扩展到大量样本:

  • 如果您想进行监督分类,则SGDClassifier或MultinomialNB(如果您在数据集中有预测的分类标签)
  • SGDRegressor如果你想进行有监督的回归(如果你有连续的目标变量来预测)
  • MiniBatchKMeans聚类以进行无监督聚类(但是默认情况下没有客观的方法来量化结果聚类的质量).
  • ...

执行网格搜索以查找模型的超参数的最佳值(例如,正规化器alphan_iterSGDClassifier 的通过次数),并使用交叉验证评估性能.

完成后,重试2x更大的数据集(仍然适合内存)并查看它是否显着提高了预测准确性.如果情况并非如此,那么不要浪费时间尝试在群集上并行化这个以在完整数据集上运行它,因为它不会产生任何更好的结果.

如果它做了你能做的事情,将数据分成碎片,然后将每个节点上的数据切片,在picloud上独立学习每个节点上的SGDClassifier或SGDRegressor模型,并收回权重(coef_intercept_),然后计算平均权重到构建最终的线性模型,并在数据集的某些切片上进行评估.

要了解有关错误分析的更多信息.看看如何绘制学习曲线:


Che*_*het 5

PiCloud是建立在AWS之上的,所以无论哪种方式,你都会在一天结束时使用亚马逊.问题是你需要多少基础设施才能将所有内容连接在一起.PiCloud提供了一些免费的使用方式来完成它的步伐,所以你最初可能会给它拍摄.我自己没有使用它,但显然他们试图为机器学习类应用程序提供易于部署.

看起来这是尝试结果,而不是云项目,所以除了直接EC2或其他一些其他软件如PiCloud或Heroku或其他可以处理引导的服务之外,我会考虑使用亚马逊的其他服务之一. .